監控Data Guard實時同步

zlingyi發表於2015-04-03

監控 real-time apply 實時同步的dataguard 是否正常同步:

select to_char(SYSDATE,'yyyymmdd hh24:mi:ss') CTIME,NAME,VALUE,DATUM_TIME
 from V$DATAGUARD_STATS 
 WHERE NAME LIKE '%lag';

其中如果apply lag對應的value大於0,那麼就需要注意檢查是否同步正常。如果相差
時間非常多,value值等於幾分鐘,甚至達到1個小時,那可能實時同步有問題,需要
檢查 alert log 檔案,其中會提示是否啟動了real time apply, 檢查最近的log,可以
發現:
alter database recover managed standby database using current logfile disconnect from session
MRP0 started with pid=20, OS id=647263927
Managed Standby Recovery starting Real Time Apply

查詢備庫是否有MRP0程式:
select * from v$managed_standby where process = 'MRP0';

說明實時同步已經開啟,那麼如果apply lag 還是常常大於0,那麼可能是DG上standby redo log
的問題,如果standby redo log增加不正確,那麼可以在alert log中找到類似如下的語句:
RFS[1]: No Standby redo logfiles created for thread 1

那麼可能是standby redo log沒有在DG上建立,也有可能建立了,但是thread錯誤導致。 可以透過
select GROUP#, THREAD#, SEQUENCE#, STATUS from  v$standby_log  檢視, 如果建立了standby
redo log , 那麼在應用redo時,一定有至少1個standby redo log的狀態是 ACTIVE 的,其他大多數
是 unassigned .  如果都是 UNASSIGNED ,那麼就是standby redo log的問題。

可以透過如下方式重新加入:
shut immediate 
startup mount

alter database add standby logfile thread 1 group 4  '/opt/oracle/oradata/test/standby_redo04.log ' size 1024M;                                  
alter database add standby logfile thread 1 group 5  '/opt/oracle/oradata/test/standby_redo05.log ' size 1024M; 
....     

最後再開啟為read only with apply的方式:

startup nomount
alter database mount standby database ;
alter database open read only ;
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ ONLY

SQL> alter database recover managed standby database using current logfile disconnect from session;
SQL> select open_mode from v$database; 
OPEN_MODE
--------------------
READ ONLY WITH APPLY 


還有一種影響同步的是,apply 同步出現錯誤 , 可以查詢 select error from  v$archive_dest 檢視是否有同步錯誤 。

如果需要暫停或取消同步apply : 
alter database recover managed standby database cancel ;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28686045/viewspace-1485530/,如需轉載,請註明出處,否則將追究法律責任。

相關文章