1、基本概念
Oracle数据库能够把已经写满了的重做日志文件保存到指定的一个或多个位置,被保存的重做日志文件的集合称为归档重做日志文件,这个过程称为归档。根据是否进行重做日志文件归档,数据库运行可以分为归档模式或非归档模式。
2、归档模式和非归档模式的比较
1)非归档模式是指不保留重做历史的日志操作模式,只能够用于保护例程失败,而不能够保护介质损坏。如果数据库采用的是日志操作模式的话,则进行日志切换时,新的日志会直接覆盖原有日志文件的内容,不会保留原有日志文件中的数据。
2)归档日志模式与非归档日志模式相对应,是指保留重做日志历史的日志操作模式。这种日志操作模式不仅可用于保护例程失败,还可以用于保护介质损坏的情况。如果数据库管理员把日志设置为归档日志模式,则当后台进程在进行日志切换时,后台进程会自动将重做日志的内容复制到归档日志中。归档日志就是非活动重做日志的备份。
3)在归档模式和非归档模式下进行日志切换的条件也不同。在非归档模式下,日志切换的前提条件是已写满的重做日志文件在被覆盖之前,其所有重做记录所对应的事务的修改操作结果全部写入到数据文件中。在归档模式下,日志切换的前提条件是已写满的重做日志文件在被覆盖之前,不仅所有重做记录所对应的事务的修改操作结果全部写入到数据文件中,还需要等待归档进程完成对它的归档操作。
(关于归档模式和非归档模式的详细介绍,点击这里 )
3、归档模式的管理
(1)设置归档/非归档模式
关闭数据库
SQL>SHUTDOWN IMMEDIATE
启动数据库到MOUNT状态
SQL>STARTUP MOUNT
使用ALTERDATABASE ARCHIVELOG语句将数据库设置为归档模式。
SQL>ALTER DATABASE ARCHIVELOG;
或使用ALTERDATABASE NOARCHIVELOG语句将数据库设置为非归档模式。
SQL>ALTER DATABASE NOARCHIVELOG;
打开数据库
SQL>ALTER DATABASE OPEN;
(2)归档模式下归档方式的选择
数据库在归档模式下运行时,可以采用自动或手动两种方式归档重做日志文件。
1)如果选择自动归档方式,那么在重做日志文件被覆盖之前,ARCH进程自动将重做日志文件内容归档,设置方法如下:
启动归档进程
SQL>ALTER SYSTEM ARCHIVE LOGSTART;
关闭归档进程
SQL>ALTER SYSTEM ARCHIVE LOGSTOP;
2)如果选择了手动归档,那么在重做日志文件被覆盖之前,需要DBA手动将重做日志文件归档,否则系统将处于挂起状态,设置方法如下:
对所有已经写满的重做日志文件(组)进行归档:
SQL>ALTER SYSTEM ARCHIVE LOG ALL;
对当前的联机日志文件(组)进行归档:
SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;
(3)归档路径的设置
1)使用初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST设置归档路径,LOG_ARCHIVE_DEST参数指定本地主归档路径, LOG_ARCHIVE_DUPLEX_DEST指定本地次归档路径。如:
SQL>ALTERSYSTEM SET LOG_ARCHIVE_DEST='D:\ORACLE\BACKUP' SCOPE=SPFILE;
SQL>ALTERSYSTEM SET LOG_ARCHIVE_DUPLEX_DEST=
'E:\ORACLE\BACKUP'SCOPE=SPFILE;
2)使用初始化参数LOG_ARCHIVE_DEST_n设置归档路径
最多可以指定10个归档路径,其归档目标可以是本地系统的目录,也可以是远程的数据库系统。如:
SQL>ALTERSYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=D:\BACKUP\ARCHIVE';
SQL>ALTERSYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=STANDBY1';
注意:
这两组参数只能使用一组设置归档路径,而不能两组同时使用。
(4)设置归档文件命名方式
设置参数LOG_ARCHIVE_FORMAT指定归档文件命名方式:
SQL>ALTER SYSTEM SET LOG_ARCHIVE_FORMAT ='arch_%t_%s_%r.arc'SCOPE=SPFILE;
%s:代表日志文件序列号(LogSequences Number);
%S:代表日志文件序列号,不足3位的以0补齐;
%t:代表线程号(ThreadNumber);
%T:代表线程号,不足3位的以0补齐;
%r:代表重做日志的ID(Resetlogs ID);
%R:代表重做日志的ID,不足3位的以0补齐。
(5)设置可选或强制归档目标
设置最小成功归档目标数:LOG_ARCHIVE_MIN_SUCCESS_DEST
设置启动最大归档进程数:LOG_ARCHIVE_MAX_PROCESSES
设置强制归档目标和可选归档目标:
使用LOG_ARCHIVE_DEST_n参数时通过使用OPTIONAL或MANDATORY关键字指定可选或强制归档目标。 如下:
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_1=
'LOCATION=D:\BACKUP\ARCHIVE' MANDATORY;
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=STANDBY1'OPTIONAL;
(6)归档信息查询
1)执行ARCHIVE LOGLIST命令
2)查询数据字典视图或动态性能视图
V$DATABASE:用于查询数据库是否处于归档模式;
V$ARCHIVED_LOG:包含从控制文件中获取的所有已归档日志的信息。
V$ARCHIVE_DEST:包含所有归档目标信息,如归档目标的位置、状态等。
V$ARCHIVE_PROCESSES:包含已启动的ARCH进程的状态信息。
V$BACKUP_REDOLOG:包含已备份的归档日志信息。
例如,查询数据库所有归档路径信息。
SQL>SELECTDESTINATION , BINDING FROM V$ARCHIVE_DEST;