主從切換
分爲2種切換:
Switchover:
無損切換,一般是用戶手動觸發或者有計劃的讓其自動觸發,不會致使數據丟失
Failover:
不可預知的緣由致使Primary數據庫故障而且短時間內不能恢復就須要failover,可能會導
致數據的丟失.
在執行failover以前,儘量將原Primary數據庫的可用redo都複製到standby數據庫.
若是要轉換角色的standby處於maximum protection模式,須要你首先將其切換到
Maximum Performance模式,操做以下:
SQL> ALTER DATABASE SET STANDBY DATABASE MAXIMUM
PERFORMANCE;
Switchover切換步驟
在primary數據庫檢查是否支持switchover操做
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
-----------------
TO STANDBY
若是該列值爲」TO STANDBY」則表示primary數據庫支持轉換爲STANDBY角色
注意:若是是第一次作Switchover的話,這裏應該是SESSIONS ACTIVE狀態,不用理會他,
繼續下面的操做.
在primary數據庫啓動switchover
先把primary轉換爲standby的角色
SQL> alter database commit to switchover to physical standby;
在primary數據庫重啓動到mount
SQL> shutdown immediate;
SQL> startup mount;
在STANDBY數據庫上檢查是否支持switchover操做
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
-----------------
TO PRIMARY
值爲」TO PRIMARY」,說明支持轉換.
注意:第一次轉換這裏可能爲 not allow,不用理會,繼續下面的操做.
在STANDBY數據庫轉換角色到Primary
SQL> alter database commit to switchover to primary;
SQL> alter database open; //若是處於read-only狀態,須要先
shutdown再startup;
驗證數據是否能夠同步,按照之前的測試方法進行測試
在新的primary數據庫上執行
SQL> insert into wiliiwin values(4,’wiliansi’);
而後在新的STANDBY數據庫上執行
SQL> select * from wiliiwin;
Failover切換
檢查歸檔文件是否連續
在STANDBY數據庫上查詢V$ARCHIVE_GAP視圖,看歸檔文件是否連續
SQL> SELECT THREAD#,LOW_SEQUENCE#,HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
若是返回的有記錄,按照列出的記錄號複製對應的歸檔文件到待轉換的STANDBY服務器.
必須確保全部已生成的歸檔文件均已存在於STANDBY服務器,否則可能會數據不一致形成
轉換時的報錯.文件複製以後,將其加入數據字典
SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE ‘filespecl‘;
檢查歸檔文件是否完整
SQL> select distinct thread#,max(sequence#)over(partition by thread#) a from
v$archived_log;
取得當前數據庫各線程已歸檔文件最大序列,若是primary和standby最大序號不相同,
必須將多出的序號對應到歸檔文件複製到待轉換的STANDBY服務器.要是primary徹底不
可用了,此時可能會丟失一些數據.
啓動failover
SQL> alter database recover managed standby database finish force;
切換物理STANDBY角色到primary
SQL> alter database commit to switchover to primar;
啓動新的primary數據庫
SQL> alter database open;
關於測試你們本身試驗下,能夠查詢、插入、刪除等操做應該就說明切換正常了.