一、如何发送数据
在Primary数据库,DataGuard可以使用归档进程(ARCn)或者日志写进程(LGWR)收集redo数据并传输到standby,不管是中哪种方式都由一个核心参数控制:LOG_ARCHIVE_DEST_n
1. 了解LOG_ARCHIVE_DEST_n参数
LOG_ARCHIVE_DEST_n(从1到10)定义redo文件路径。该参数必须通过location或service指定归档文件路径。location表示本地路径,service通常是net service name,即接收redo数据的standby数据库。
注意:每一个LOG_ARCHIVE_DEST_n都有一个对应的LOG_ARCHIVE_DEST_STATE_n参数,该参数拥有以下4个属性值:
ENABLE:默认值,表示允许传输服务
DEFER: 指定对应的log_archive_dest_n参数有效,但暂不使用
ALTERNATE:禁止传输,但是如果其他相关的目的地的连接通通失败,则它将变成enable
RESET:功能与DEFER类似,不过如果传输目的地之前有过错误,它会清除所有错误信息
指定本地归档路径: LOG_ARCHIVE_DEST_1='LOCATION=c:\oracle\orcl' LOG_ARCHIVE_DEST_STATE_1='ENABLE' 指定redo传输服务: LOG_ARCHIVE_DEST_2='SERVICE=jsspdg' LOG_ARCHIVE_DEST_STATE_2='ENABLE' 这些参数也可以通过alter system set语句直接联机修改,如: SQL> Alter system set LOG_ARCHIVE_DEST_2='SERVICE=jsspdg VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)';
除了show parameter log_archive外,还可以通过查询V$ARCHIVE_DEST视图方式查看参数配置
2. 使用ARCn归档redo数据
默认情况下,redo传输服务使用ARCn进程归档redo日志,不过ARCn归档只支持最高性能的保护模式。如果standby数据库处于其它类型的保护模式,那就必须使用LGWR传输redo数据。
3. 使用LGWR归档redo数据
LGWR无须等待日志切换及完成归档。
Standby数据库的LGWR进程会先选择一个standby redo log文件映射primary数据库当前redolog的sequence,一旦primary数据库有redo数据产生,视LOG_ARCHIVE_DEST_n初始化参数中sync或async属性设置,以同步或非同步方式传输到standby数据库。
如果选择LGWR归档redo数据,那么在LOG_ARCHIVE_DEST_n可必须指定Service和LGWR属性,还需要指定传输方式(默认SYNC或ASYNC)
LOG_ARCHIVE_DEST_1='LOCATION=c:\oradata\orcl' LOG_ARCHIVE_DEST_2='SERVICE=jsspdg LGWR ASYNC' LOG_ARCHIVE_DEST_STATE='ENABLE' LOG_ARCHIVE_DEST_STATE='ENABLE'
二、发送时机
1. 通过VALID_FOR属性指定传输及接收对象
为指定角色设置日志文件的归档路径,主要目的是为了辅助一旦发生角色切换操作后数据库的正常运转。
redo_log_type: ONLINE_LOGFILE, STANDBY_LOGFILE, ALL_LOGFILES
database_role: PRIMARY_ROLE, STANDBY_ROLE, ALL_ROLES
默认值:valid_for=(ALL_LOGFILES,ALL_ROLES)
2. 通过DB_UNIQUE_NAME属性指定数据库
主要是为某个数据库指定唯一的数据库名称,这就使得动态添加standby到包含RAC结构的primary数据库的dg配置成为可能,并且对于log_archive_dest_n中的service属性值对应的也必然是db_unique_name,也正因为有了db_unique_name, redo数据在传输过程中才能确认传输到你希望被传输的数据库上。
三、LOG出错解决方案
对于归档失败的处理,LOG_ARCHIVE_DEST_n参数有几个属性可以用来控制一旦向归档过程中出现故障时应该采取什么措施,它们是:
1. REOPEN指定时间后再次尝试归档
REOPEN=seconds默认300
2. ALTERNATE指定替补的归档目的地
3. MAX_FAILURE控制失败尝试次数
四、归档中断管理
如果primary数据库中的归档日志没能发送至standby数据库就会出现中断。当然可以通过FAL解决。
FAL分server和client, client自动主动要求传输归档文件,server则响应clinet发送的请求
来源:https://www.cnblogs.com/landexia/archive/2012/08/01/2619057.html