一、主从应用模式
1、ADG与普通归档模式
col name for a50;
set lines 300;
-- SWITCHOVER_STATUS:SESSIONS ACTIVE
select SWITCHOVER_STATUS,NAME,PROTECTION_MODE,OPEN_MODE,LOG_MODE,DATABASE_ROLE,DB_UNIQUE_NAME from v$database;
--如果 process:MRP0:WAIT_FOR_LOG 则为ADG,如果无 process:MRP0 则为普通的主从
select process,status,thread#,sequence# from v$managed_standby;
2、介绍
on primary database:
Log writer process (LGWR):把数据写到在线日志中
Data Guard除了以上传统的Arch日志传送过程外,还可以采用联机日志的传送,在备用端建议创建一组备用日志,并保持与主数据库备用日志相同大小,而且最好比主数据库的联机日志多一组以上。
如果LGWR传送日志,但是不在备用端创建备用日志的话,联机日志将自动写到备用端的归档日志中。
即使是用LGWR进行日志的传输,备用库的online redo log的内容是不能马上被应用的,必须当归档完成后才由MRPn进程应用到备用数据库,所以说,恢复不是连续的,但是,传送过程可以是连续的。
即使备用数据库不是在归档的模式,所有的在线日志还是会进行归档的操作,前提是ARCn进程必须打开。
Archiver process (ARCn):COPY在线日志到本地或远程。这就是归档日志。
Fetch archive log (FAL) process (physical standby databases only):
FAL提供一个client/server的机制来检测主备机上的归档是否有间断。由standby上的FAL client和和primary上FAL server来实现此工作。由FAL_CLIENT 和 FAL_SERVER参数决定primary database和standby database。
On the standby location,log transport services使用下面的进程
Remote file server (RFS):用于从primary上接受归档文件
ARCn process
当standby使用online redo的时候,也就是maximum protection或 maximum availability模式下,ARCn用于归档。
_ On the standby location, log apply services使用下面的进程
Managed recovery process (MRP)(For physical standby databases only):用于把归档应用到standby database
Logical standby process (LSP)(For logical standby databases only):用SQL接口把归档应用到logical database
_ On the primary and standby locations, the Data Guard broker使用下面进程
Data Guard broker monitor (DMON):用于监控数据库的状态,管理log transport services and log apply services
二、从库应用主库
1、在主库查询
1)v$archived_log:如果是ADG,则 name 是主库的 fal_server
select t.name,t.thread#,t.sequence#,to_char(t.first_time,'yyyy-mm-dd hh24:mi:ss'),to_char(t.next_time,'yyyy-mm-dd hh24:mi:ss'),
APPLIED,t.stamp from v$archived_log t
where t.name = 'xxxxdg' order by t.stamp ;
V$ARCHIVE_DEST_STATUS
查看归档到从库路径:log_archive_dest_2:GAP_STATUS
set line 300
col DEST_NAME for a30;
SELECT DEST_ID,DEST_NAME,ARCHIVED_THREAD#, ARCHIVED_SEQ#, APPLIED_THREAD#, APPLIED_SEQ#,GAP_STATUS FROM V$ARCHIVE_DEST_STATUS;
2)如果是ARCH模式,则 name 是主库的归档日志文件的绝对路径
select t.name,t.thread#,t.sequence#,to_char(t.first_time,'yyyy-mm-dd hh24:mi:ss'),to_char(t.next_time,'yyyy-mm-dd hh24:mi:ss'),
APPLIED,t.stamp from v$archived_log t
where t.name != 'xxxxdg' order by t.stamp ;
因为测试的库为ADG模式,所以 name 的 APPLED 都是 NO
2、备库查看主从延时
1)v$dataguard_stats
select value from v$dataguard_stats where name='apply lag';
2)v$archived_log
select ceil((sysdate-next_time)*24*60) "M" from v$archived_log where applied='YES' AND SEQUENCE#=(SELECT MAX(SEQUENCE#) FROM V$ARCHIVED_LOG WHERE applied='YES');
3)V$ARCHIVE_DEST_STATUS
col DEST_NAME for a30;
SELECT DEST_ID,DEST_NAME,ARCHIVED_THREAD#, ARCHIVED_SEQ#, APPLIED_THREAD#, APPLIED_SEQ#,GAP_STATUS FROM V$ARCHIVE_DEST_STATUS;