【DG】Data Guard主備庫Switchover切換

恩強Boy發表於2020-08-03

一、  切換前檢查

1.  備庫檢查manager recovery 處於執行狀態

SQL> SELECT PROCESS FROM V$MANAGED_STANDBY WHERE PROCESS LIKE 'MRP%';

2.  主庫檢查database 處於實時應用狀態

SQL> SELECT RECOVERY_MODE FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID=2;

RECOVERY_MODE

-----------------------

MANAGED REAL TIME APPLY

如果備庫沒有處於實時應用狀態,就需要重啟實時應用

SQL>   ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

3.  確保主庫和備庫臨時檔案匹配

對於臨時檔案,確保主庫存在的臨時檔案備庫也應存在。在初始備庫建立後,主庫新建立的臨時檔案不會傳到備庫。主備庫執行以下SQL

SQL> SELECT TMP.NAME FILENAME, BYTES, TS.NAME TABLESPACE

FROM V$TEMPFILE TMP, V$TABLESPACE TS WHERE TMP.TS#=TS.TS#;

如果查詢不匹配,需要立即修正不匹配內容。

4.  確保所有資料檔案均為online 狀態

SQL> SELECT NAME FROM V$DATAFILE WHERE STATUS='OFFLINE';

如果有資料檔案處於offline 狀態,在 switchover 之前需要將資料檔案 offline

5.  確保備庫不存在GAP

備庫執行

SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;

THREAD#      LOW_SEQUENCE# HIGH_SEQUENCE#

---------- ------------- --------------

1            8 0              82  

如果沒有返回結果,則說明不存在GAP (斷檔);如果存在結果,則說明存在 GAP 。上述結果說明, GAP 內容包含歸檔日誌 sequence80,81,82 。需要主庫複製上述歸檔日誌,傳輸到備庫,並且註冊在備庫,如下

SQl> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';

二、  思路清晰

step1: 清理引數和 jobs

step2: 確保主庫切換狀態正常

step3: 主庫執行 switchover

step4: 檢查備庫切換狀態正常

step5: 備庫執行 switchover

step6: 開啟新主庫和備庫

step7: 新備庫實時應用日誌

step8: 檢查主備庫狀態

三、  switchover 切換

1.  清理可能阻塞切換的parameters and jobs

1)  檢視當前執行的JOBS

SQL> SELECT * FROM DBA_JOBS_RUNNING;

SQL> SELECT OWNER, JOB_NAME, START_DATE, END_DATE, ENABLED FROM DBA_SCHEDULER_JOBS WHERE ENABLED='TRUE' AND OWNER <> 'SYS' ;

如果有正在執行的job, 如果有必要就終止這些 job

2)  終止當前的job

SQL> EXECUTE DBMS_SCHEDULER.DISABLE(job_name);

2.  確保主庫switchover_status 正常

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS

--------------------

SESSIONS ACTIVE

注:主庫的狀態應為to primary session active 。如果主庫狀態為 session active ,那麼在切換時需要追加 with session shutdown 選項。如果主庫是 RAC ,那麼在切換前停止第二個節點。

3.  主庫執行switchover 到備庫

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY WITH SESSION SHUTDOWN;

4.  檢查備庫switchover_status 正常

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS

--------------------

to primary

5.  備庫switchover 為主庫

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;

此時,新主庫處於Mount 狀態,新備庫處於 shutdown 狀態

6.  開啟新主庫

SQL> alter database open;

7.  開啟新備庫

SQL> startup;

此時新備庫模式為read only

8.  新備庫實時應用日誌

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

9.  檢查主備庫狀態

SQL> select db_unique_name,open_mode,database_role,switchover_status from v$database;




 

---- end ----


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

相關文章