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打開.
一、主庫
--查看當前數據庫狀態
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打開.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.