程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> [terry筆記]11gR2_dataguard_主備庫切換

[terry筆記]11gR2_dataguard_主備庫切換

編輯:Oracle教程

主備庫切換 

Switchover 

一般SWITCHOVER切換都是計劃中的切換,特點是在切換後,不會丟失任何的數據,而且這個過程是可逆的,整個DATA GUARD環境不會被破壞,原來DATA GUARD環境中的所有物理和邏輯STANDBY都可以繼續工作。

 

在進行DATA GUARD的物理STANDBY切換前需要注意: 

1)確認主庫和從庫間網絡連接通暢; 

2)確認沒有活動的會話連接在數據庫中; 

3)PRIMARY數據庫處於打開的狀態,STANDBY數據庫處於MOUNT狀態;

4)確保STANDBY數據庫處於ARCHIVELOG模式; 

5)如果設置了REDO應用的延遲,那麼將這個設置去掉; 

6)確保配置了主庫和從庫的初始化參數,使得切換完成後,DATA GUARD機制可以順利的運行。 ­

 

主庫:

1. 查看switchover 狀態 

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS

--------------------

TO STANDBY

 

附:

A:switchover_status出現session active/not allowed 

當出現session active的時候表示還有活動的session,則運行 

Alter database commit to switchover to physical standby with session shutdown;

當出現not allowed時,在官方文檔說轉換會不成功,但是我測試的時候成功了。 

B.ora-01153: an incompatible media recovery is active 

運行下面語句

Alter database recover managed standby database finish; 

或者Alter database recover managed standby database finish force; 

Alter database recover managed standby database disconnect from session; 

 

2 切換成備庫 

SQL>Alter database commit to switchover to physical standby with session shutdown; 

或者

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY; 

     Database altered. 

 

3 啟動到mount和應用日志狀態 

SQL> SHUTDOWN IMMEDIATE 

SQL> startup nomount; 

SQL> alter database mount standby database; 

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION; 

 

4. 查看數據庫模式 

SQL>select dest_name,status,database_mode,recovery_mode,protection_mode from v$archive_dest_status;

SQL>select status,database_mode from v$archive_dest_status; 

 

備庫: 

1.查看switchover狀態 

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE; 

    TO PRIMARY 

附:若不是用此語句切換:ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY with session shutdown  

補充:若出現:ORA-16139: media recovery required

是因為沒有執行:alter database recover managed standby database disconnect from session; 

 

2. 切換成主庫 

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; 

Database altered. 

SQL> shutdown immediate; 

SQL> startup; 

SQL> alter system switch logfile; 

 

3. 查看數據庫模式 

SQL>select dest_name,status,database_mode,recovery_mode,protection_mode from v$archive_dest_status; 

SQL>select status,database_mode from v$archive_dest_status; 

 

驗證同步:

SQL> select sequence# from v$archived_log;

 


 

Failovers: 

FAILOVER切換一般是PRIMARY數據庫發生故障後的切換,這種情況是STANDBY數據庫發揮其作用的情況。這種切換發生後,可能會造成數據的丟失。而且這個過程不是可逆的,DATA GUARD環境會被破壞。 

由於PRIMARY數據庫已經無法啟動,所以FAILOVER切換所需的條件並不多,只要檢查STANDBY是否運行在最大保護模式下,如果是的話,需要將其置為最大性能模式,否則切換到PRIMARY角色也無法啟動。 

 

1. 查看是否有日志GAP,沒有應用的日志: 

SQL> SELECT UNIQUE THREAD#, MAX(SEQUENCE#) OVER(PARTITION BY THREAD#) LAST FROM V$ARCHIVED_LOG; 

SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP; 

如果有,則拷貝過來並且注冊 

SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE '路徑'; 

重復查看直到沒有應用的日志。

 

2. 然後停止應用歸檔: 

 SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; 

  Database altered. 

 

3. 下面將STANDBY數據庫切換為PRIMARY數據庫: ­

  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH; 

  或 SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE; 

  Database altered. 

 

  SQL> SELECT DATABASE_ROLE FROM V$DATABASE; 

  DATABASE_ROLE 

  ---------------- 

  PHYSICAL STANDBY 

 

  SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; 

  Database altered. 

 

    SQL> ALTER DATABASE OPEN; 或者 shutdown immediate+startup 

  Database altered. 

 

  檢查數據庫是否已經切換成功: 

 

  SQL> SELECT DATABASE_ROLE FROM V$DATABASE; 

  DATABASE_ROLE 

  ---------------- 

  PRIMARY 

 

至此,FAILOVER切換完成。這個時候應該馬上對新的PRIMARY數據庫進行備份。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved