一、主從應用模式
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;