1.檢查Standby數據庫上有遺漏掉Log
用下列命令檢查是否有漏掉的log:
SQL> select thread#,log_sequence#,high_sequence# from v$archive_gap;
把漏掉的log文件從primary 數據庫拷貝到standby數據庫指定的log目錄,用以下命令註冊進standby數據庫:
SQL> alter database register physical logfile ‘filespec1’;2.在Standby數據庫上停止log 應用進程
SQL> alter database recover managed standby database cancel;
SQL> alter database recover managed standby database finish;
SQL> alter database activate physical standby database;
3.檢查Standby數據庫的狀態
SQL> select switchover_status from v$database;
只有狀態爲 "TO PRIMARY" 或者 "SESSIONS ACTIVE" 才能對Standby數據庫進行角色切換。4.切換Standby數據庫爲Primary角色
SQL> alter database commit to switchover to primary with session shutdown;
SQL> alter database open;5.修復Primary數據庫
得到新Primary 角色的standby數據庫的SCN:
SQL> select to_char(standby_became_primary_scn) from v$database;
RMAN> RUN
{
Set until scn <standby_became_primary_scn+1>;
Restore database;
Recover database;
}
切換primary數據庫爲physical standby角色:
SQL> alter database covert to physical standby;
SQL> shutdown immediate;SQL> startup mount;
打開爲只讀方式同步log file,然後再重啓動:
SQL> alter database open read only;
SQL> shutdown immediate;SQL> startup mount;
SQL> alter database recover managed standby database using current logfile disconnect;
另外可以從當前Primary角色的standby數據庫的備份去重建primary數據庫,或者重複standby執行過程,通過RMAN腳本重建primary數據庫。