归档日志文件是指对处于非活动INACTIVE状态的重做日志文件的备份。
归档目标位置参数
默认情况下,归档的重做日志文件是被存储在快速恢复区中的,是由DB_RECOVERY_FILE_DEST初始化参数指定的位置。
ORACLE数据库系统中存在两组可以用来指定归档目标位置的参数。
一组是LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLIEX_DEST参数
另一组是LOG_ARCHIVE_DEST_n参数
这两组是互斥的,不能同时使用。
LOG_ARCHIVE_DEST是用于指定第一个归档目标的位置,是必须成功的。
LOG_ARCHIVE_DUPLIEX_DEST是用于指定第二个归档目标的位置,是可以必须的,也可以是可选的。这取决于LOG_ARCHIVE_MIN_SUCCEED_DEST参数设置的成功归档个数。
LOG_ARCHIVE_DEST_n 是用于实现将归档日志文件分为多个副本存储在不同的位置,包括非本机上位置,n的最大值是31。n的值是 1到10 为本机上归档,11 到31为非本机上归档,但是LOG_ARCHIVE_DESCT_n必须至少指定一个位置是属于本机上的。
如果归档目标是有LOG_ARCHIVE_DEST参数和LOG_ARCHIVE_DUPLIEX_DEST参数指定的,则LOG_ARCHIVE_MIN_SUCCEED_DEST参数的取值是1或2.如果是由LOG_ARCHIVE_DEST_n参数指定的,则LOG_ARCHIVE_MIN_SUCCEED_DEST参数的值为 1到 10之间的整数。
归档日志文件命名的规则参数
在初始化参数LOG_ARCHIVE_FORMAT中定义命名规则,这样可以避免被覆盖的危险。
默认格式为 ARC%S_%R.%T。如果多个数据库使用相同的归档位置,则必须再使用%d,以便区别数据库。
命名规则中可以使用的替换变量有:
%s 日志序列号 %S 日志序列号,并使用0填充左侧
%t 重做线程号 %T重做线程号,并使用O填充左侧
%d 数据库的标识号
%r RESETLOGS 标识号。以便即使在使用了复位日志序列号的高级恢复技巧之后也能保证唯一性。
启用或禁用自动归档功能的参数
如果要在例程启动时就启动自动归档功能,需要将LOG_ARCHIVE_ATART参数设置为TRUE,反之则为FALSE;
ALTER SYSTEMSET LOG_ARCHIVE_START=TRUE SCOPE=SPFILE;
在例程启动后启用或禁用自动归档功能
ALTER SYSTEM ARCHIVE LOG START;
如果要禁用自动归档功能则
ALTER SYSTEM ARCHIVE LOG STOP;
手动归档
将所有没有归档的重做日志文件进行归档
ALTER SYSTEM ARCHIVE LOG ALL;
将当前的重做日志文件进行归档
ALTER SYSTEM ARCHIVE LOG CURRENT;
将指定日志序列号的重做日志文件进行归档
ALTER SYSTEM ARCHIVE LOG SEQUENCE 123;
将指定日志组编号的重做日志文件组进行归档
ALTER SYSTEM ARCHIVE LOG GROUP 3;
将指定的联机重做日志文件进行归档
ALTER SYSTEM ARCHIVE LOG LOGFILE‘d:\redofile03.log’;
将下一个没有归档的重做日志文件进行归档
ALTER SYSTEM ARCHIVE LOG NEXT;
ARCn后台进程的最大个数参数
初始化参数LOG_ARCHIVE_MAX_PROCESSES指定了归档后台进程的两个作用
1、 指定在例程启动时启动的ARCn后台进程的个数;
2、 指定在例程允许期间能够启动的ARCn后台进程的最大个数;
该参数是动态的,可以动态的设置该参数
ALTER SYSTEM SETLOG_ARCHIVE_MAX_PROCESSES=3;
通过V$ARCHIVE_PROCESSES视图查看各个ARCn后台进程的情况。
LOG_ARCHIVE_DEST_n完整语法:
LOG_ARCHIVE_DEST_n=’LOCATION=path_or_folder
[OPTIONAL | MANDATORY]
[REOPEN [=integer]]
QUOTA_SIZE=integer MB’
或者
LOG_ARCHIVE_DEST_n=’SERVICE=tnsnames_name
[OPTIONAL | MANDATORY]
[REOPEN [=integer]]
QUOTA_SIZE=integer MB’
OPTIONAL :默认值,该选项将归档目标位置设置成可选的。即使由于某种原因而无法成功归档,LGWR后台进程也可以覆盖不能归档的重做日志文件。
MANDATORY:该选项将归档目标设置成强制的。强制的归档目标必须成功归档,否则LGWR后台进程不可以覆盖不能归档的重做日志文件。
REOPEN[=integer]:该选项指定在归档失败时是否进行重新尝试,其中的integer是个以秒为单位的整数值,表示在归档失败后等待多长时间再次进行尝试。如果不指定[=integer],则等待300秒后再尝试。如果不指定REOPEN选项,则在可选的归档目标失败时,ORACLE仅将这个错误记录到预警文件中。然后忽略这个错误。在强制的归档目标失败时,ORACLE不会尝试重新归档,而是将LGWR后台进程挂起。
QUOTA_SIZE=integer MB:表示该归档目标位置的归档文件最多占用的空间大小。
LOG_ARCHIVE_MIN_SUCCEED_DEST 参数和 MANDATORY选项都能控制最小成功归档的目标
但是它们之间是相互独立的。必须成功归档的目标数量是由这两者之间的大者决定的。
只有在同时满足以下两个条件时,联机重做日志文件才能够被覆盖:
1、 该联机重做日志文件已经被成功归档到所有具有MANDATORY选项的归档目标。
2、 该联机重做日志问价已经被成功归档的数量至少要等于LOG_ARCHIVE_MIN_SUCCEED_DEST参数的值。
只有LOG_ARCHIVE_DEST_n参数才有MANDATORY选项。
任何由LOG_ARCHIVE_DEST参数指定的归档目标都是强制的。
如果LOG_ARCHIVE_MIN_SUCCEED_DEST=1,那么由LOG_ARCHIVE_DUPLIEX_DEST参数指定的归档目标就是可选的。
如果LOG_ARCHIVE_MIN_SUCCEED_DEST=2,那么由LOG_ARCHIVE_DUPLIEX_DEST参数指定的归档目标就是强制的。
要点:
如果LOG_ARCHIVE_MIN_SUCCEED_DEST参数的值大于具有MANDATORY选项的归档目标位置的数量,则说明必须要有1个或多个具有OPTIONAL选项的归档目标位置成功归档。
启用或禁用归档目标位置的参数
LOG_ARCHIVE_DEST_n 参数可以启用或禁用某个归档目标位置。
例如:
禁用LOG_ARCHIVE_DEST_1参数指定的一个归档目标位置:
ALTER SYSTEM SET LOG_ARCHIVE_STATE_1=DEFER;
启用LOG_ARCHIVE_DEST_2参数指定的一个归档目标位置:
ALTER SYSTEM SET LOG_ARCHIVE_STATE_2=ENABLE;
这里的LOG_ARCHIVE_STATE_n参数是一个动态参数,可以在例程运行期间用 ALTER SYSTEM SET语句对其执行修改。
如果将一个归档目标位置禁用了一段时间后,又启用了改归档目标位置,则必须手动归档这段禁用到启用时间段内的重做日志文件。
归档进程的跟踪级别参数设置
ALTER SYSTEM SETLOG_ARCHIVE_TRACE=n;
LOG_ARCHIVE_TRACE是动态参数下次重启数据会恢复到原来的值。
n取值有
0 默认值,不在跟踪文件中记录有关归档的任何信息。
1 记录已经归档成功的重做日志文件的信息。
2 记录各个归档目标的状态。
4 记录归档操作是否成功。
8 记录归档目标的活动状态。
16 记录归档目标的活动的详细信息。
32 记录归档目标的参数修改信息。
64 记录ARCn后台进程的活动状态。
改变数据库的归档模式必须是数据库处于MOUNT状态时执行,然后OPEN数据库即可。
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG |NOARCHIVELOG;
ALTER DATABASE OPEN;
包含归档信息的几个动态性能视图
v$database 数据库处于NOARCHIVELOG模式还是处于ARCHIVELOG模式
v$instance 数据库是否在归档
v$archived_log 从控制文件中获取的所有历史归档日志文件信息。
V$archive_dest 归档目标的位置信息
V$archive_processes 归档进程ARCn的信息
V$BACKUP_REDOLOG 所有已备份的归档日志文件的信息
V$log 所有重做日志文件组的信息。在其中包含了哪个重做日志文件组需要归档
V$LOG_HISTORY 重做日志文件的历史信息,在其中包含了某个重做日志文件是否已归档,以及每个已归档重做文件的 SCN 范围。