主庫resetlogs對備庫的影響

myownstars發表於2012-03-13

假設主庫SCN100,現在需要閃回到80open resetlogsSCN0開始並生成了一個新的redo branch

備庫的SCN>=80,則只能進行閃回或者重建;

備庫SCN<80且已經識別到新的redo branch,則備庫可以自動應用新的redo branch,不需人工干預

 

主庫進行不完全恢復,執行open resetlogs,備庫大致有以下幾種情形

物理備庫

1

檢視主庫resetlogs時的SCN值,同備庫current_scn進行比較

SELECT TO_CHAR(RESETLOGS_CHANGE# - 2) FROM V$DATABASE--主庫

SELECT TO_CHAR(CURRENT_SCN) FROM V$DATABASE;--備庫

2

如果current_scn > RESETLOGS_CHANGE# - 2,則閃回備庫

FLASHBACK STANDBY DATABASE TO SCN resetlogs_change# -2;

3

如果current_scn < RESETLOGS_CHANGE# - 2,則開啟備庫實時應用

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

4

如果current_scn遠遠落後於RESETLOGS_CHANGE# - 2,新的redo branch已經註冊到standby

則備庫會自動處理不需人工干預

 

 

邏輯備庫

sql apply偵測到主庫的resetlogs操作,則會自動的執行新的redo branch;否則sql apply會報告ora-1346: LogMiner processed redo beyond specified reset log scn

1

比較備庫的scn和主庫resetlogs scn

SELECT TO_CHAR(RESETLOGS_CHANGE# - 2) AS FLASHBACK_SCN FROM V$DATABASE;--主庫resetlogs SCN
SELECT DBMS_LOGSTDBY.MAP_PRIMARY_SCN (PRIMARY_SCN => FLASHBACK_SCN) AS TARGET_SCN FROM DUAL;--對應的備庫SCN

 

2

閃回備庫

SQL> SHUTDOWN;
SQL> STARTUP MOUNT EXCLUSIVE;
SQL> FLASHBACK DATABASE TO SCN ;
SQL> ALTER DATABASE OPEN RESETLOGS;
 
3
確認新的redo branch已被備庫接受註冊
SELECT resetlogs_id FROM V$DATABASE_INCARNATION WHERE status = 'CURRENT';--主庫
SELECT * FROM DBA_LOGSTDBY_LOG WHERE resetlogs_id = resetlogs_id_at_primary;--備庫,如果返回資料,證明已經註冊到備庫
然後重啟sql apply
ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
 
 

 

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

相關文章