归档重做日志文件概述
在实际的生产中,数据库要运行在archivelog模式下
数据库建立时,缺省是在noarchivelog状态下的
Noarchivelog模式下,重做日志文件写满发生日志切换时,会覆盖掉联机日志文件
Archivelog模式下,重做日志文件写满后进行归档
服务后台进程:ARCn
数据库归档模式管理
笔记:
说明:切换归档需要数据库是干净关闭的状态下,使用shutdown abort或者startup force等操作都不能实现切换效果
如果是非干净关闭数据库的情况下,我们先将数据库启动到open状态,然后再做shutdown immediate操作,然后在startup mount;
Archive log list
Show parameter dest_1
Alter system set log_archive_dest_1=’location=/opt/oracle/archive’; //设置归档路径
Shutdown immediate //正常关闭
Startup mount //启动到mount状态
alter database noarchivelog //切换到非归档状态
alter database open; //打开数据库
SQL> alter system switch logfile; //切换日志的时候进行归档
Sql>alter system set log_archive_format='arch_%t_%s_%r.arc' scope=spfile;
信息获取:v$instance视图中的archiver
查看/opt/oracle/archvie目录下查看出现了一个数据文件
切换到非归档:
alter database noarchivelog;
归档和非归档的切换需要在mount下进行
***数据库一定要在归档模式下进行
1.设置数据库归档/非归档模式
步骤:
关闭数据库
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
启动数据库到mount状态
SQL> startup mount
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1272600 bytes
Variable Size 104858856 bytes
Database Buffers 58720256 bytes
Redo Buffers 2920448 bytes
Database mounted.
切换
SQL> alter database archivelog; //切换到归档模式
Database altered.
SQL> alter database noarchivelog; //切换到非归档模式
Database altered.
启动到open状态
SQL> alter database open;
Database altered.
2.归档模式下归档方式的选择
开启关闭归档进程
通过以下方式开启关闭归档进程
SQL> alter system archive log start;
System altered.
SQL> alter system archive log stop;
System altered.
手动归档
对处于inactive状态的已经写满的重做日志文件进行手动归档
(1)对所有已经写满的日志文件进行归档
SQL> alter system archive log all;
alter system archive log all
*
ERROR at line 1:
ORA-00271: there are no logs that need archiving
如果没有写满的日志则出现如上错误
(2)对当前的重做日志文件进行归档
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
2 CURRENT
3 INACTIVE
4 UNUSED
SQL> alter system archive log current;
System altered.
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
2 ACTIVE
3 INACTIVE
4 CURRENT
3.规定路径设置
(1)使用参数log_archive_dest和log_archive_duplex_dest设置归档路径 ---- 此方法最多只能设置两个归档路径,且只能进行本地归档
SQL> alter system set log_archive_dest='/opt/oracle/archive1'scope=spfile;
System altered.
SQL> alter system set log_archive_duplex_dest='/opt/oracle/archive2'scope=spfile;
System altered.
(2)使用初始化参数log_archive_dest_n设置归档路径 ----此方法最多可指定10个归档路径,归档目录可以说本地系统的目录,也可以是远程的数据库系统
SQL> alter system set log_archive_dest_1='location=/opt/oracle/archive'
2 ;
System altered.
使用location子句,则归档路径为本地系统目录
SQL> alter system set log_archive_dest_2='server=standby1';
使用server子句,则归档路径为网络服务名所对应的远程备用数据库
特别注意:这两种方法只能使用一组设置归档路径,而不能两组同时使用;否则不能启动数据库,出现如下错误
SQL> startup
ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST
不能启动,只能通过pfile启动,并且修改pfile中的上面的参数
查看归档路径信息
SQL> show parameter log_archive_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest string
log_archive_dest_1 string location=/opt/oracle/archive
log_archive_dest_10 string
log_archive_dest_2 string
log_archive_dest_3 string
log_archive_dest_4 string
log_archive_dest_5 string
log_archive_dest_6 string
log_archive_dest_7 string
log_archive_dest_8 string
log_archive_dest_9 string
log_archive_dest_state_1 string enable
log_archive_dest_state_10 string enable
log_archive_dest_state_2 string enable
log_archive_dest_state_3 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
SQL> show parameter log_archive_duplex_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_duplex_dest string
(3)设置归档文件的命名方式
SQL> show parameter log_archive_format
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_format string %t_%s_%r.dbf
SQL> alter system set log_archive_format='arch_%t_%s_%r.dbf' scope=spfile;
System altered.
生效需重启数据库,所以最好在修改归档模式的时候 就设置好
SQL> show parameter log_archive_format
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_format string arch_%t_%s_%r.dbf
说明:
参数中
%s 代表日志文件序列号(Log Sequences Number)
%S 代表日志文件序列号,不足3位的以0补齐
%t 代表线程号(Thread Number)
%T 代表线程号,不足3位的以0补齐
%r 代表重做日志的ID(Resetlogs ID)
%R 代表重做日志的ID,不足3位的以0补齐
特别注意:
SQL> show parameter log_archive_format
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_format string %t_%s_%r.dbf
修该归档文件的命名方式必须包含%t,%s,%r,否则数据库会无法启动!
4.设置可选或强制归档目标
(1)设置最小成功归档目标数
SQL> show parameter log_archive_min_
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_min_succeed_dest integer 1
SQL> alter system set log_archive_min_succeed_dest=3 scope=spfile;
System altered.
(2)设置启动最大归档进程数
SQL> show parameter log_archive_max_
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_max_processes integer 2
SQL> alter system set log_archive_max_processes=3;
System altered.
SQL> show parameter log_archive_max_
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_max_processes integer 3
SQL>
默认为2
通常不需要修改参数的默认值,因为在系统运行过程中LGWR进程会根据需要自动启动归档进程数
设置完后查看归档进程数
[oracle@localhost ~]$ ps -ef | grep ora_arc
oracle 25933 1 0 15:03 ? 00:00:00 ora_arc0_orcl
oracle 25935 1 0 15:03 ? 00:00:00 ora_arc1_orcl
oracle 26196 1 0 15:20 ? 00:00:00 ora_arc2_orcl
由上可见为3个
(3)设置强制归档目标和可选归档目标
在设置归档路径时,可以通过使用optional和mandatory关键字指定可选或强制归档目标
SQL> alter system set log_archive_dest_1='location=/opt/oracle/archive mandatory';
System altered.
SQL> alter system set log_archive_dest_1='location=/opt/oracle/archive optional';
System altered.
注意:两个关键字需放在‘’中
说明:
如果强制归档目标不可用,则导致数据库停止运行;如果可选归档不可用,则不会影响数据库的运行
5.归档信息查询
(1)archive log list 命令获取当前数据库的归档信息
(2)v$database:查询数据库是否处于归档模式
v$archived_log : 控制文件中获取的所有已经归档日志的信息
v$archive_dest: 归档目标信息,如位置,状态
v$archive_processes: 已启动的arch进程的信息
v$backup_redolog: 已备份的归档日志信息