当前位置: 首页 > 工具软件 > Disk ARchive > 使用案例 >

转 - DataGuard中如何配置LOG_ARCHIVE_DEST_n参数

田易安
2023-12-01

LOG_ARCHIVE_DEST_n参数的作用是设置主库归档日志路径以及重做日志传输。在Dataguard中参数配置比较复杂。

在DG配置的示例如下:
主库
LOG_ARCHIVE_DEST_1='LOCATION=/archivelog/chicago VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=chicago'
LOG_ARCHIVE_DEST_2='SERVICE=boston LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=boston'
备库:
LOG_ARCHIVE_DEST_1='LOCATION=/archivelog/boston VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=boston'
LOG_ARCHIVE_DEST_2='SERVICE=chicago LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=chicago'

下面简要说明常见参数配置说明
1、日志路径
有两种归档路径,本地路径 (Location)、和远程路径 (Service)
每个目的地必须指定location或者service属性,用来指定redo传输服务输出redo数据到本地磁盘目录或者远程数据库目的地。
SERIVCE: 用于指定备用数据库的TNSNAMES描述符,Oralce 会将重做日志传送到这个TNSNAMES指定的备库。
例如
LOG_ARCHIVE_DEST_1='LOCATION=/archivelog/chicago'
LOG_ARCHIVE_DEST_2='SERVICE=boston'

说明:
log_archive_dest_1 -- log_archive_dest_10目的地能包括location属性或者service属性
log_archive_dest_11 -- log_archive_dest_31目的地只能包括service属性。

2、日常传输
(1)ARCH
(2)LGWR 
作用:日志传输服务使用ARCH还是LGWR,默认的是ARCH,我个人倾向设置为LGWR 

3、SYNC和ASYNC参数
传输控制:指定使用同步sync传输或者异步async传输模式。
log_archive_dest_11—log_archive_dest_31不支持sync属性。
sync属性表明通过事务生成的redo数据在事务提交之前必须被每个启用的目的地接收,
async属性表明通过事务生成的redo数据在事务提交之前不需要被目的地接收,如果没有指定,默认值是async


4、VALID_FOR:
定义何时使用(角色相关)LOG_ARCHIVE_DEST_n参数以及应该在哪类重做日志文件上运行。
参数格式:
VALID_FOR=(redo_log_type,database_role)
        可用日志文件类型:online_logfile,standby_logfile, all_logfiles
        可用的角色类型:primary_role, standby_role, all_roles
说明如下:        
(1)redo_log_type关键字表明该目的地产生归档的redo日志类型
online_logfile:目的地只归档联机redo日志
standby_logfile:目的地只归档standbyredo日志
all_logfiles:目的地既归档联机redo日志,也归档standby redo日志

(2)database_role表明该目的地产生归档的数据库角色
primary_role:只有数据库是主,该目的地才会产生归档
standby_role:只有数据库是备,该目的地才会产生归档
all_role:当数据库不论是主还是备,该目的地都会产生归档

5、DB_UNIQUE_NAME 
标示唯一的路径 
如果使用了次参数通常也设置LOG_ARCHIVE_CONFIG=DG_CONFIG()两者要匹配,还必须和参数文件里一致。
使用此参数主要是为了明确主库和备库使用那个路径 

6、AFFIRM和NOAFFIRM
 AFFIRM表示只有当日志写入Standby重做日志后才算日志传输成功,NOAFFIRM则没有这个要求;
作用:控制日志传输服务是异步还是同步写日志数据到磁盘 
AFFIRM:在日志写进程进行之前,所以的归档日志和备库日志必须同步写完 
NOFFIRM:在主库的日志写进程不等所有磁盘IO完成 
如果没有明确指定,当sync属性被指定时,默认是AFFIRM,当async属性被指定,默认是NOAFFIRM

使用AFFIRM时,可以确保以下三点: 
1 能确保数据没有丢失在主库失败后 
2 可以在本地或远程使用 
3 影响主库的性能 
LGWR和AFFIRM:日志写进程同步写REDO DATA到磁盘,在DISK写完前,事务不能结束。在归档完成之前,主库的在线日志可能不可用
ARCH和AFFIRM: ARCn进程同步写REDO DATA到磁盘,归档操作可能发生时间比较长,主库的在线日志在完成归档前可能不可用。 
ASYNC和AFFIRM: 性能不受影响。 

7、NET_TIMEOUT网络超时设置
 NET_TIMEOUT指定LGWR进程等待LNS进程的最大时间数,单位为秒(缺省30)。如果超出该值,则主库放弃备库,继续执行主库上的事务。
指定LGWR后台进程等待Redo传输目的地确认收到Redo数据的秒数,如果确认没有在NET_TIMEOUT秒内收到,一个错误被记录,同时到该目的地的Redo传输会话被中断。
默认值为30秒,值的范围1到1200。
指定该参数必须指定SYNC属性。
通过在主数据库查询V$ARCHIVE_DEST.NET_TIMEOUT字段查看该属性的值。
虽然允许NET_TIMEOUT的最小值为1秒,Oracle推荐最小值在8到10秒,防止瞬时网络错误的情况下断开与Standby数据库的连接。
例如:
LOG_ARCHIVE_DEST_2='SERVICE=stby1 SYNC NET_TIMEOUT=10'
LOG_ARCHIVE_DEST_STATE_2=ENABLE

8、DELAY 
 这个属性并不是像大多数想象的那样延迟重做数据的传输,它只是用来指示备库目标的日志应用进程在DELAY属性设置的时间(秒)后应用重做数据。
For a physical standby database: 
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY; 
For a logical standby database: 
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY NODELAY; 
例子: 
LOG_ARCHIVE_DEST_1=’LOCATION=/archivelog/orcl/’ 
LOG_ARCHIVE_DEST_STATE_1=ENABLE 
LOG_ARCHIVE_DEST_2=’SERVICE=stborcl1 LGWR SYNC AFFIRM’ 
LOG_ARCHIVE_DEST_STATE_2=ENABLE 
LOG_ARCHIVE_DEST_3=’SERVICE=stborcl2 DELAY=120′ 
LOG_ARCHIVE_DEST_STATE_3=ENABLE 

9、COMPRESSION属性
COMPRESSION属性用于设置是否在将REDO数据传输到REDO传输目的地之前进行压缩。
Redo传输压缩是Oracle Advanced Compression组件的一个特性,必须购买该选件的license之后才能使用该特性。
COMPRESSION=ENABLE或者DISABLE,默认值是DISABLE。
通过查询V$ARCHIVE_DEST.COMPRESSION字段可以判断是否启用了压缩。
例如:
LOG_ARCHIVE_DEST_3='SERVICE=denver SYNC COMPRESSION=ENABLE'
LOG_ARCHIVE_DEST_STATE_3=ENABLE

10、ALTERNATE 
作用:当原归档目的地失败后,可以使用后补的 
但是如果REOPEN参数的值不为0的话,ALTERNATE将不可用。 
如果MAX FAILURE值不为0,当执行了指定的失败重试次数后,ALTERNATE将备启用,因此,ALTERNATE将不和REPOPEN冲突(REOPEN不为0) 

总结:
综上所述,dataguard中LOG_ARCHIVE_DEST_n配置如下:
最大保护模式模式是保证零数据丢失,LOG_ARCHIVE_DEST_n配置为LGWR SYNC  AFFIRM
最大可用性模式是零数据丢失,LOG_ARCHIVE_DEST_n配置为LGWR SYNC AFFIRM
最大性能模式是保证最小数据丢失 - 通常为几秒 LGWR ASYNC 或 ARCH 可没有但推荐有 AFFIRM 或 NOAFFIRM
AFFIRM:表示主数据库上的REDO LOG只有被写入到从数据库的standby log才算有效。

 类似资料: