Data Guard環境中資料庫的角色轉換有兩種,分別為Switchover和Failover,通過名稱可知,前者是正常的主備庫之間的角色切換,該切換方式不會丟失數據;後者是故障切換,即主庫不能繼續提供服務的切換,可能發生數據丟失。從12.1版本開始,切換到物理備庫的操作得以簡化,本篇分別對這兩種切 ...
Data Guard環境中資料庫的角色轉換有兩種,分別為Switchover和Failover,通過名稱可知,前者是正常的主備庫之間的角色切換,該切換方式不會丟失數據;後者是故障切換,即主庫不能繼續提供服務的切換,可能發生數據丟失。從12.1版本開始,切換到物理備庫的操作得以簡化,本篇分別對這兩種切換方式進行演示。
1 Switchover切換到備庫
1)驗證目標備庫是否做好切換
SQL> alter database switchover to orcldg verify;
Database altered.
2)啟動主資料庫的切換
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)啟動新備庫
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)新備庫開啟日誌應用
SQL> alter database recover managed standby database disconnect from session;
Database altered.
6)查看主備庫狀態
主庫:
SQL> select name,database_role,switchover_status from v$database;
NAME DATABASE_ROLE SWITCHOVER_STATUS
--------- ---------------- --------------------
ORCL PRIMARY TO STANDBY
備庫:
SQL> select name,database_role,switchover_status from v$database;
NAME DATABASE_ROLE SWITCHOVER_STATUS
--------- ---------------- --------------------
ORCL PHYSICAL STANDBY NOT ALLOWED
2 Failover切換到備庫
1)主庫故障,但可啟動至mount
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實現物理備庫角色的轉換。