8.1 什么是归档日志文件
Oracle数据库让你保存满的重做日志文件到离线的目录,我们称为归档日志文件。
把重做日志文件保存到归档日志文件的进程我们成为归档。这个进程只能运行在归档的数据库中。你可以选择手动归档或者自动归档。
他只读取重做日志文件组中的一个。当数据库运行在归档模式时,如果重做日志文件没有归档则LGWR进程将不能重新使用此重做日志。当自动归档被启用时,后台进程ARCn将会自动归档。一个数据库可以启动多个ARCn进程,防止归档过慢,影响数据库的性能。
使用归档日志你可以:
1.       恢复数据库。
2.       更新备份数据库。
3.       可以使用日志分析机制分析数据库的历史信息。
8.2选择是归档日志还是非归档日志
在数据库中选择归档或者非归档取决于应用系统在数据库中的可用性和可靠性。
 
非归档模式
 
在非归档模式下,数据库的控制文件表明重做日志文件组满了不需要归档。因此,当一个组满了在日志切换的时候,这个组将会被LGWR重新使用。
非归档模式只能保护进程失败,而不能保护磁盘介质的失败。只用最近在联机重做日志组中所作的改变被保存在数据库中,用于实例的恢复。在非归档模式下,如果实例失败你只能恢复到你之前备份的状态,而不能恢复之后的数据。
在非归档模式下你不能使用在线表空间备份,也不能使用在线表空间备份早期在归档模式下的数据。在非归档模式下恢复数据只能在数据库关闭的状态下全部恢复数据库。如果你决定数据库运行在非归档模式下,那你就应该经常定时备份数据库。
 
归档模式
 
当你运行在归档模式下,如果重做日志文件没有被归档时,LGWR将不能重新使用此重做日志文件。
归档模式的好处
1.              数据库备份的时候,同时备份联机重做日志和归档日志文件,保证了恢复操作系统中的任何提交的事件和磁盘错误。
2.              如果你运行在归档模式下,你可以在数据库启动和正常使用下备份数据库。
3.              你可以保持一个和当前数据库一致的备用数据库,通过备用的数据库获取主数据库中的归档重做日志。
  最好是采用自动存储的方式。
改变数据库的归档模式
1.       shutdown immediate
2.       备份所有的数据库(防止数据库出现问题)
3.       编辑初始化参数文件,包括归档文件的路径。
4.       Startup mount
5.       修改数据库的归档模式
自动模式
Alter database archivelog;
或者手动模式
Alter database archivelog manual;
(手动归档要及时,否则数据库就会暂时的停止工作)
Alter database open;
6.       Shutdown immediate
7.       备份数据库
如果你运行在归档模式下,你可以执行手动管理不活动的重做日志组到其他的路径。
决定归档日志文件的个数:
Log_archive_max_processes决定了ARCn进程的个数。默认是两个进程。没有人去指定或者修改这个参数,原因是数据库已经按照他的需要进行了设置。Log_archive_max_processes最大值为10。可以使用alter system set来调整它的个数:
Alter system set log_archive_max_processes=10;
8.3 指定归档日志的目录
    指定归档目录的路径
你可以选择单一的路径或者多重复用的路径。你如果想使用单一的路径你只需要修改log_archive_dest初始化参数中路径即可。(说明:只有在spfile中存在的参数才可以修改)。如果你想设置更多的存储路径,你可以选择是否把归档路径设置到10(使用log_archive_dest_n参数),或者使用主和被用的归档路径(使用log_archive_dest和log_archive_duplex_dest)。下面显示了他们的设置方法:

方法
初始化参数
主机
例子
1
Log_archive_dest_n
N是1到10的数
Local或remote
LOG_ARCHIVE_DEST_1 = 'LOCATION=/disk1/arc'
LOG_ARCHIVE_DEST_2 = 'SERVICE=standby1'
Service后面指定的是 tnsnames.ora 中的名字
2
Log_archive_dest和log_archive_duplex_dest
Local only
LOG_ARCHIVE_DEST = '/disk1/arc'
LOG_ARCHIVE_DUPLEX_DEST = '/disk2/arc'
修改log_archive_dest_n的路径
1.       关闭数据库
Shutdown immediate
2.       修改初始化参数(在设置log_archive_dest_n时,首先判断是否存在log_archive_dest,如果存在则先把这个值给删掉)
LOG_ARCHIVE_DEST_1 = 'LOCATION = /disk1/archive'
LOG_ARCHIVE_DEST_2 = 'LOCATION = /disk2/archive'
LOG_ARCHIVE_DEST_3 = 'LOCATION = /disk3/archive'
如果存在远程机器上则使用:
Log_archive_dest_4=’service=standby1’;
3.       (可选的)设置归档日志的格式
设置log_archive_format初始化参数:

参数
含义
%t
文件名中包含进程号
%s
文件名中包含sequence号
%r
文件名中包含resetlog id
使用%T或者%S或者%R
文件中左边用0来补齐
 
修改log_archive_dest和log_archive_duplex_dest
1.       关闭数据库
Shutdown immediate
2.       修改参数值
LOG_ARCHIVE_DEST = '/disk1/archive'
LOG_ARCHIVE_DUPLEX_DEST = '/disk2/archive'
 
3.       设置归档日志的格式
同上面的3。
 
8.4 指定日志的传输模式
   归档日志文件保存到相应路径有两种模式:正常归档日志传输和冗余归档日志传输。
   正常日志传输文件保存在本地,而冗余传输则可以保存在本地也可以保存在远程服务器上。
   正常的传输模式
归档目录保存在数据库服务器的其他磁盘驱动器上。这种配置中,归档不去和线程需求的其他文件争夺资源,并且完成的更快。指定用参数log_archive_dest_n或者log_archive_dest指定文件的路径。
冗余传输模式
 归档日志可以保存在本地或则保存在远程备份服务器上。
 如果你保持你的备用数据库在管理恢复模式中,你最好使你的主数据库和备用数据库自动同步归档日志文件。
为了保证备份数据库传输成功,ARCn和操作系统做下面的工作
1.       确认远程路径
2.       远程服务器上的remote file server(RFS)进程和本地的归档日志文件传输相结合。
每个ARCn进程都有一个RFS和备份服务器相连。例如一个服务器上有三个ARCn进程,则就存在3个RFS与备份服务器相连。
你通过oracle的网络服务把归档文件传输到远程机器上。指明一个远程的归档用oracle的网络服务名作为远程的一个属性。Oracle通过tnsnames.ora文件翻译成服务名称作为连接描述符。这个描述符包含连接远程机器的必要信息。这个服务名必须关联一个数据库的sid,所以数据库在备用的数据库中更新控制文件的历史记录。
   RFS进程运行在远端节点,作为ARCn客户端的网络服务。本质上是ARCn进程把信息推给了备用服务器上的RFS进程。
   Rfs的任务
1.       通过ARCn进程占据一部分网络带宽
2.       通过standby_archive_dest参数创建备用服务器上的文件名字
3.       在远程服务器上获取日志文件
4.       更新备用服务器上的控制文件
 
8.5 解决归档文件的错误
指定成功归档的最小值
初始化参数log_archive_min_succeed_dest=n这个参数决定了最少n个重做日志文件被归档,联机重做日志才能被重复使用。默认值是1。如果你使用的是duplexing,他的取值为1,2。如果你使用的是多路复用,则这个值是1到10。
8.6 管理归档日志产生的trace输出
   后台进程在适当的时候写trace文件。在归档进程中,你可以管理输出的trace文件。你可以通过设置初始化参数文件中log_archive_trace的参数设置trace等级。

Trace等级
意思
0
禁用归档文件跟踪,这是默认设置
1
重做日志文件跟踪
2
每个归档日志路径归档状态跟踪
4
Track archival operational phase
8
Track archivelog destination activity
16
Track detailed archivelog destination activity
32
Track archivelog destination parameter modifications
64
Track ARC n process state activity
128
Track FAL (fetch archived log) server related activities
256
Track RFS Logical Client
512
Track LGWR redo shipping network activity
1024
Track RFS Physical Client
2048
Track RFS/ARCn Ping Heartbeat
4096
Track Real Time Apply
8192
Track Redo Apply (Media Recovery or Physical Standby)
 
8.7 查看归档日志的信息
 V$database   
 V$archived_log
 V$archive_dest
 V$archive_processes
 V$backup_redolog
 V$log
 V$log_history
 
SQL> archive log list
Database log mode               Archive Mode
Automatic archival              Enabled
Archive destination             USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence      36
Next log sequence to archive    37
Current log sequence            37