1、查询当前模式
查看当前模式及闪回状态
archive log
list;
select
log_mode, flashback_on from v$database;
不能在闪回状态下改
alter database
flashback off;
2、归档目标设置
查看归档日志文件目标位置
show parameter
log_archive_dest;
log_archive_dest_1
log_archive_dest_2
…
如果已经指定了快速恢复区,默认情况下,归档日志文件将存储在此快速恢复位置。
设置归档位置
alter
system set log_archive_dest_1 = 'location=d:\archivelog\mes [mandatory] | [optional]';(本地用location,远程用service)
alter system
set log_archive_dest_2 = 'location=...';
设置多个就表示多路复用(最多10个)。
选项mandatory是强制的意思,表示日志切换必须等待归档完成,optional是可选的意思,表示归档没有完成也可以切换日志。
参数log_archive_dest_state_n表示归档目录的状态,enable表明该目录有效。
查看归档日志文件名格式
show parameter
log_archive_format;
Windows下默认格式
ARC%S_%R.%T
Linux下默认格式
%t_%s_%r.dbf
%T:指定线程号,显示为v$instance视图的thread#列,左侧用 0 补齐,默认值包含 1 到 3 个字符。%t 指定线程号,此线程号左侧不用 0 补齐,默认值对字符数没有限制。该参数可用于RAC。
%S:指定日志序列号,左侧用 0 补齐,默认值包含
1 到 3 个字符。%s 指定日志序列号,此序列号左侧不用 0 补齐,默认值对字符数没有限制。
%R:可以包括重置日志ID(数据库的复本编号),左侧用 0 补齐,%r左侧不用 0 补齐。
另外还有参数
%d:数据库标识符。该参数可用于多个数据库归档到同一目录。
设置归档日志文件名格式,该格式必须在指定了归档路径后才会生效,如果使用默认的闪回恢复区,则这里的设置不会起作用,文件名格式将是OMF的
alter system
set log_archive_format = 'arc_%d_%t_%r_%s.log' scope = spfile;
设置保护归档日志目标
由参数log_archive_min_succeed_dest指定在重写联机日志文件前必须已成功多路复用归档的目标数,默认为1。
如果上面设置了两路归档目标,则可以改设其值为2
alter system
set log_archive_min_succeed_dest = 2;
3、更改模式
必须在mount状态下更改日志模式
shutdown
immediate
startup mount
更改
alter
database archivelog;(alter
database noarchivelog;非归档模式)
回到open状态
alter database
open;
4、验证更改结果
查看当前模式
archive log
list;
select
log_mode, flashback_on from v$database;
查看归档日志文件信息
select
sequence#, name from v$archived_log;
说明:
1、如果是Oracle9i及之前的版本,启用归档还需要将参数log_archive_start设置为true
alter system
set log_archive_start = true scope = spfile;
如果不使用上述命令更改初始化参数,而在运行时使用以下命令
alter system
archive log start;
则虽然会启用归档,但数据库一旦关闭重启之后则又不会开启归档。
2、可用以下命令对当前重做日志进行手工归档
alter system
archive log current;
而执行日志切换时同样会启动归档
alter system
switch logfile;
3、为匹配LGWR和ARCn进程的处理速度,防止因为归档速度慢导致日志切换等待而使数据库被hang住,可对归档进程数量进行调整。归档进程数量在10g中默认为2,11g中默认为4,该参数可动态调整
alter system
set log_archive_max_processes = 4;