一、主从应用模式

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和和primaryFAL server来实现此工作。由FAL_CLIENT  FAL_SERVER参数决定primary databasestandby database
On the standby locationlog 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;

 

 posted on 2023-11-14 09:53  xibuhaohao  阅读(641)  评论(0编辑  收藏  举报