Oracle DG Switchover 切換

     在做DG switchover 切換 之前做好備份,以防止在切換失敗可以進行數據庫恢復。

1 查看主庫switchover 狀態

如果是 TO STANDBY 或者 SESSION ACTIVE,表示主庫可以切換成備庫。

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE

2 將主庫切換成備庫

SQL> Alter database commit to switchover to physical standby with session shutdown;

Database altered.

3 關閉原主庫

SQL> shutdown abort
ORACLE instance shut down.

4 查看原備庫 switchover 
這裏如果是TO PRIMARY 或者session active,表明備庫可以切換成主庫。

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
--------------------
TO PRIMARY

5 將原備庫切換成主庫,然後關閉

SQL> alter database recover managed standby database cancel;

Database altered.

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY with session shutdown;

Database altered.

SQL> shutdown immediate
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.

6 啓動新備庫。 這裏的啓動順序不能錯,先啓動備庫,在啓動主庫,不然主庫識別不了備庫。

SQL> startup
ORACLE instance started.

Total System Global Area 1043886080 bytes
Fixed Size		    2259840 bytes
Variable Size		  889193600 bytes
Database Buffers	  146800640 bytes
Redo Buffers		    5632000 bytes
Database mounted.
Database opened.

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Database altered.

7 啓動新主庫

SQL> startup
ORACLE instance started.

Total System Global Area 1043886080 bytes
Fixed Size		    2259840 bytes
Variable Size		  889193600 bytes
Database Buffers	  146800640 bytes
Redo Buffers		    5632000 bytes
Database mounted.
Database opened.

SQL> alter system switch logfile;

System altered.

8 在新主庫查看log_archive_dest 參數的狀態,是否有效。

因爲這裏與監聽和啓動順序有關,如果值爲error,則歸檔不能傳送到備庫。
 

SQL> select status,database_mode from v$archive_dest_status;

STATUS	  DATABASE_MODE
--------- ---------------
VALID	  OPEN

Status狀態爲valid即可。 如果有錯誤,一般都是啓動順序和監聽問題。 如果啓動順序沒有問題,那麼就把主庫重新啓動一下。
9 驗證同步狀態

SQL> alter system switch logfile;

System altered.

後在新主備庫分別運行:select sequence#,applied from v$archived_log; 
確保applied都爲YES。

如果用:select max(sequence#) from v$archived_log; 

SQL> select sequence#,applied from v$archived_log; 

 SEQUENCE# APPLIED
---------- ---------
	 9 YES

如果用:select max(sequence#) from v$archived_log;

SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)
--------------
	    57

查看,如果主備庫顯示的一致,則只能表明歸檔已經傳送到了備庫,並不能表明該歸檔已經應用。 而applied 狀態爲YES,就表明該歸檔已經應用到了備庫。
如果主庫庫顯示不一致可以嘗試使用alter system switch logfile; 切換使之達到一致
如果等了很長時間applied 都無法應用,可以嘗試一下方法:
alter database recover managed standby database cancel; 
alter database recover managed standby database disconnect from session; 
這2個語句是取消recover manager,在啓動它。 
通過以上步,switchover 切換完成。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章