Data Guard環境中數據庫的角色轉換有兩種,分別爲Switchover和Failover,經過名稱可知,前者是正常的主備庫之間的角色切換,該切換方式不會丟失數據;後者是故障切換,即主庫不能繼續提供服務的切換,可能發生數據丟失。從12.1版本開始,切換到物理備庫的操做得以簡化,本篇分別對這兩種切換方式進行演示。sql
1)驗證目標備庫是否作好切換數據庫
SQL> alter database switchover to orcldg verify; Database altered.
2)啓動主數據庫的切換session
SQL> alter database switchover to orcldg; Database altered.
3)打開新主庫日誌
SQL> select instance_name,status from v$instance; INSTANCE_NAME STATUS ---------------- ------------ orcldg MOUNTED SQL> alter database open; Database altered.
4)啓動新備庫code
SQL> startup ORACLE instance started. Total System Global Area 1644167168 bytes Fixed Size 2925024 bytes Variable Size 1056968224 bytes Database Buffers 570425344 bytes Redo Buffers 13848576 bytes Database mounted. Database opened.
5)新備庫開啓日誌應用it
SQL> alter database recover managed standby database disconnect from session; Database altered.
6)查看主備庫狀態io
主庫:class
SQL> select name,database_role,switchover_status from v$database; NAME DATABASE_ROLE SWITCHOVER_STATUS --------- ---------------- -------------------- ORCL PRIMARY TO STANDBY
備庫:file
SQL> select name,database_role,switchover_status from v$database; NAME DATABASE_ROLE SWITCHOVER_STATUS --------- ---------------- -------------------- ORCL PHYSICAL STANDBY NOT ALLOWED
1)主庫故障,但可啓動至mountselect
SQL> shutdown abort ORACLE instance shut down. SQL> startup mount ORACLE instance started. Total System Global Area 1644167168 bytes Fixed Size 2925024 bytes Variable Size 1073745440 bytes Database Buffers 553648128 bytes Redo Buffers 13848576 bytes Database mounted.
2)刷新未使用的redo至備庫
SQL> alter system flush redo to orcl; System altered.
3)備庫確認是否有GAP,如有,拷貝未歸檔的丟失的歸檔日誌至備庫,並完成註冊
SQL> select * from v$archive_gap;
註冊語法:
SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';
4)取消備庫的日誌應用
SQL> alter database recover managed standby database cancel; Database altered.
5)備庫故障轉移至主庫
SQL> alter database failover to orcl; Database altered.
6)打開新主庫
SQL> select instance_name,status from v$instance; INSTANCE_NAME STATUS ---------------- ------------ orcl MOUNTED SQL> alter database open; Database altered.
7)打開新主庫後,建議作個數據庫全備,另外,故障切換後,可使用閃回數據庫或使用RMAN備份將其轉換爲新的備庫。
故障切換的場景比較複雜,可根據實際狀況進行處理。
以上,就是使用switchover或failover實現物理備庫角色的轉換。