dataguard手動switchover切換步驟及注意的問題 轉

warehouse發表於2016-07-23

原文如下,防止連線過期,複製出來了:

http://blog.csdn.net/lichangzai/article/details/7949222


前面的文章提到,當用grid contorl中的broker頁面配置的dataguard,進行switchover切換時,只需在頁面中點選“切換”按鈕,主備切換操作就會自動在後臺完成,方便快捷。但是當我們無法登入grid control頁面,而又需要緊急進行切換時,這就是手工進行切換操作。

初始環境:

主庫:oracle11gR2 RAC  rac1,rac2(racdb1,racdb2)

備庫:oracle11gR2單例項 single (racstd)

 

1.下面就是手動switchover切換的步驟及注意的問題:

 

假設需要在rac2例項上進行switchover操作

--rac2上直接進行切換操作,

--報如下錯誤

SQL> alter database commit to switchover to standby;

alter database commit to switchover to standby

*

1行出現錯誤:

ORA-01105:裝載操作與其他例項的裝載操作不相容

 

--查詢RAC環境其它活動例項

SQL> Select Instance_Name, Host_Name    From Gv$instance

  2   Where Inst_Id <> (Select Instance_Number From V$instance);

 

INSTANCE_NAME    HOST_NAME

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

racdb2           rac2.localdomain

 

錯誤問題原因:

RAC+dataguard環境手動主備切換時,主庫和備庫都必需只保留一個活動例項,才能完成切換操作(透過broker管理頁面則不需要這步手動關閉例項操作,則在後臺自動完成),所以切換前首先要關閉其它不需要切換操作的例項,切換完成後再重新啟動即可。

 

--關閉rac1例項(racdb1)

SQL> shutdown immediate;

資料庫已經關閉。

已經解除安裝資料庫。

ORACLE例程已經關閉。

 

 

--然後再回到rac2,此時進行切換操作

SQL> alter database commit to switchover to standby;

alter database commit to switchover to standby

*

1行出現錯誤:

ORA-01093: ALTER DATABASE CLOSE僅允許在沒有連線會話時使用

 

--切換為備庫操作

SQL> alter database commit to switchover to standby with session shutdown;

 

資料庫已更改。

 

SQL> select name,open_mode,DATABASE_ROLE,PROTECTION_MODE from v$database;

 

NAME      OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE

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

RACDB     READ WRITE           PHYSICAL STANDBY MAXIMUM PERFORMANCE

 

--轉換操作完成後,racdb2例項會自己關閉

SQL> shutdown immediate

ORA-01092: ORACLE instance terminated. Disconnection forced

SQL> select name,open_mode,DATABASE_ROLE,PROTECTION_MODE from v$database;

ERROR:

ORA-03114:未連線到 ORACLE

 

--rac2alert日誌:

Process (ospid 31592) is suspended due to switchover to physical standby operation.

Wed Sep 05 12:17:45 2012

Performing implicit shutdown abort due to switchover to physical standby

Shutting down instance (abort)

 

 

--rac2重新啟動原主庫例項(racdb2)

SQL> startup

ORACLE例程已經啟動。

 

Total System Global Area 1235959808 bytes

Fixed Size                  2227904 bytes

Variable Size             922747200 bytes

Database Buffers          301989888 bytes

Redo Buffers                8994816 bytes

資料庫裝載完畢。

資料庫已經開啟。

 

SQL> select name,open_mode,DATABASE_ROLE,PROTECTION_MODE from v$database;

 

NAME      OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE

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

RACDB     READ ONLY        PHYSICAL STANDBY MAXIMUM PERFORMANCE

 

--single racstd例項,切換為主庫操作

SQL> alter database commit to switchover to primary with session shutdown;

資料庫已更改。

 

--重新啟動原備庫

SQL> select name,open_mode,DATABASE_ROLE,PROTECTION_MODE from v$database;

 

NAME      OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE

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

RACDB     MOUNTED              PRIMARY          MAXIMUM PERFORMANCE

 

SQL> shutdown immediate

ORA-01109:資料庫未開啟

 

 

已經解除安裝資料庫。

ORACLE例程已經關閉。

SQL> startup mount

ORACLE例程已經啟動。

 

Total System Global Area 1235959808 bytes

Fixed Size                  2227904 bytes

Variable Size             805306688 bytes

Database Buffers          419430400 bytes

Redo Buffers                8994816 bytes

資料庫裝載完畢。

 

SQL> select name,open_mode,DATABASE_ROLE,PROTECTION_MODE from v$database;

 

NAME      OPEN_MODE        DATABASE_ROLE    PROTECTION_MODE

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

RACDB     MOUNTED          PRIMARY          MAXIMUM PERFORMANCE

 

 

SQL> alter database open;

 

資料庫已更改。

 

SQL> select name,open_mode,DATABASE_ROLE,PROTECTION_MODE from v$database;

 

NAME      OPEN_MODE       DATABASE_ROLE    PROTECTION_MODE

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

RACDB     READ WRITE     PRIMARY          MAXIMUM PERFORMANCE

 

--rac2開啟實時應用查詢功能

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

 

資料庫已更改。

 

SQL> select name,open_mode,DATABASE_ROLE,PROTECTION_MODE from v$database;

 

NAME      OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE

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

RACDB     READ ONLY WITH APPLY PHYSICAL STANDBY MAXIMUM PERFORMANCE

 

SQL>

 

--最後再啟動rac1例項:

SQL> startup

ORACLE例程已經啟動。

 

Total System Global Area 1235959808 bytes

Fixed Size                  2227904 bytes

Variable Size             922747200 bytes

Database Buffers          301989888 bytes

Redo Buffers                8994816 bytes

資料庫裝載完畢。

資料庫已經開啟。

SQL>

SQL> select name,open_mode,DATABASE_ROLE,PROTECTION_MODE from v$database;

 

NAME      OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE

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

RACDB     READ ONLY WITH APPLY PHYSICAL STANDBY MAXIMUM PERFORMANCE

 

--最後可以檢查切換是否成功,可以單例項資料庫端建測試表,然後在RAC資料庫端檢視錶是否同步,不再測試。


下面這篇文章也不錯,放在這裡備查:

http://blog.itpub.net/26736162/viewspace-1328050/

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

相關文章