Oracle DG 主從延時判定

一、主從應用模式

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;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章