12C pdb環境下的 Data Guard switchover切換

Data Guard switchover切換(Physical Standby Databases)


一、主庫
--查看當前數據庫狀態
select database_role,switchover_status from v$database;


-switchover_status爲'SESSIONS ACTIVE'執行;
alter database commit to switchover to physical standby with session shutdown;

-switchover_status爲 'TO STANDBY' 執行;
alter database commit to switchover to physical standby;


-switchover_status爲 'RESOLVABLE GAP' ;
- 說明standby和主庫存在 日誌gap, 比如 standby庫的 歸檔路徑空間不足, 監聽關閉等問題.
處理好就自動變爲 'TO STANDBY'.
    - 主庫執行完 switchover to physical standby後, 主庫會被關閉.


-- 切換後重新open數據庫
10g;
startup mount;

11g&12c;
startup;   --數據庫會以 read only 模式open;


--開啓實時應用
- 實時應用恢復模式;
alter database recover managed standby database using current logfile disconnect from session;


- 非實時的,歸檔恢復模式
alter database recover managed standby database disconnect from session;




二、備庫
查看當前數據庫狀態
select database_role,switchover_status from v$database;
-- 在主庫切換爲 standby後, 備庫的 switchover_status 會從  'NOT ALLOWED' 變爲 'TO PRIMARY'


switchover_status爲 'TO PRIMARY' 切換數據庫
alter database commit to switchover to primary with session shutdown;
-- switchover 後 數據庫爲 mount狀態


如果是switchover_status爲recovery needed或switchover latent 恢復數據庫
alter database recover managed standby database disconnect from session;




開啓數據庫
shut immediate;
startup


三,  12C 重新打開 pdb

默認情況下, 12c的pdb在 經過 switchover 後是 mount狀態.

-- 方法1,手工打開 pdb

SQL> select database_role,switchover_status from v$database;


DATABASE_ROLE    SWITCHOVER_STATUS
---------------- --------------------
PRIMARY          TO STANDBY


SQL> show pdbs;


    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 POC_PDB                        MOUNTED
SQL> 


SQL> select database_role,switchover_status from v$database;


DATABASE_ROLE    SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY NOT ALLOWED


SQL> show pdbs


    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 POC_PDB                        MOUNTED
SQL> 


-- 備庫
SQL> alter pluggable database POC_PDB open;


Pluggable database altered.


SQL> show pdbs;


    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 POC_PDB                        READ ONLY  NO

-- 主庫
SQL> alter pluggable database POC_PDB open;


Pluggable database altered.


SQL> show pdbs;


    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 POC_PDB                        READ WRITE NO
SQL> 


-- 方法2; 設置pdb隨cdb啓動而啓動到open狀態
通過在cdb中設置觸發器實現;


使用SYS用戶創建如下觸發器即可:
CREATE TRIGGER open_all_pdbs
   AFTER STARTUP
   ON DATABASE
BEGIN
   EXECUTE IMMEDIATE 'alter pluggable database all open';
END open_all_pdbs;
/


把以上觸發器,在DG的主的cbd的sys下都設置上. 備庫會自動通過DG同步生存.
建立這個觸發器後,switchover後,pdb自動的在主庫以 read write打開, 備庫以 read only打開.




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