【DG】DG之Switchover和Failover的區別

lhrbest發表於2017-06-24

【DG】DG之Switchover和Failover的區別












Dataguard中的role transition:switchover和failover以及將failover後的old primary flackback成physical standby庫

  Dataguard中的role transition包括兩種:switchover和failover,

  區別在於:switchover將一個physical standby database switchover成為primary database過程可以保證無資料丟失,在完成後其它的standby資料庫和原來的primary庫還可以成為這個dataguard的standby role的一部分.

  Failover當主庫crash無法正常啟動時,將一個standby庫failover成primary role庫,如果在primary庫在出故障之前不是處於protection的話,將會有一些資料丟失,因為當前在寫的 redo沒有辦法傳到standby庫。如果primary,standby庫都開啟了flashback的話,可以將原來的主庫重新設為新primary role資料庫的standby庫。

  在進行role transition要檢查:

  primary,standby是否處於archvielog模式。

  Standby庫的tempory file要和primary匹配

  是rac的話:在standby RAC上只有一個例項mount,其它都要關閉

  COLUMN NAME FORMAT A18

  COLUMN VALUE FORMAT A16

  COLUMN TIME_COMPUTED FORMAT A24

  SELECT * FROM V$DATAGUARD_STATS;---可以從這張檢視看到沒有應用的日誌應用上去要多長時間


  SQL> SELECT * FROM V$DATAGUARD_STATS; 
  NAME VALUE UNIT TIME_COMPUTED 
  ------------------ ---------------- ------------------------------ ------------------------ 
  apply finish time +00 00:38:57.2 day(2) to second(1) interval 26-SEP-2008 23:16:39 
  apply lag +00 09:48:00 day(2) to second(0) interval 26-SEP-2008 23:16:39 
  estimated startup 25 second 26-SEP-2008 23:16:39 
  time 
  standby has been o N 26-SEP-2008 23:16:39 
  pen 
  transport lag +00 00:00:00 day(2) to second(0) interval 26-SEP-2008 23:16:39 
  SQL> select NAME ,DB_UNIQUE_NAME ,open_mode,DATABASE_ROLE from v$database;

  一.Switchovers的過程:

  1. 檢查主庫目前的狀態:

  SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

  SWITCHOVER_STATUS

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

  TO STANDBY

  2.將主庫置為standby role


  SQL> alter database commit to switchover to physical standby; 
  Database altered. 
  SQL> shutdown immediate; 
  ORA-01507: database not mounted 
  ORACLE instance shut down. 
  SQL> startup mount; 
  ORACLE instance started. 
  Total System Global Area 218103808 bytes 
  Fixed Size 1260984 bytes 
  Variable Size 117441096 bytes 
  Database Buffers 96468992 bytes 
  Redo Buffers 2932736 bytes 
  Database mounted.

  2. standby庫轉為primary


  SQL> select NAME ,DB_UNIQUE_NAME ,open_mode,DATABASE_ROLE from v$database; 
  SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE; 
  SWITCHOVER_STATUS 
  -------------------- 
  TO PRIMARY 
  SQL> alter database commit to switchover to primary; 
  Database altered. 
  SQL> alter database open; 
  Database altered. 
  SQL> select NAME ,DB_UNIQUE_NAME ,open_mode,DATABASE_ROLE from v$database; 
  NAME DB_UNIQUE_NAME OPEN_MODE DATABASE_ROLE 
  ------------------ ------------------------------ ---------- ---------------- 
  MAINDB standb READ WRITE PRIMARY

  主庫上:


  SQL> alter database recover managed standby database disconnect from session
  Database altered. 
  SQL> select NAME ,DB_UNIQUE_NAME ,open_mode,DATABASE_ROLE from v$database; 
  NAME DB_UNIQUE_NAME OPEN_MODE DATABASE_ROLE 
  ------------------ ------------------------------ ---------- ---------------- 
  MAINDB maindb MOUNTED PHYSICAL STANDBY

  二.Failovers的過程:

  查詢沒有應用的日誌:

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

  THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#

  Cp過來並register

  SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';

  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;

  SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

  SQL> ALTER DATABASE OPEN;

  一旦主資料故障無法使用,就可以迅速啟用映象備份:

  1、如果可能,歸檔主伺服器當前重做日誌,傳送到映象伺服器;

  2、使用主伺服器的歸檔日誌檔案做恢復:

  SQL>recover standby database;

  3、啟用並開啟資料庫:


  SQL>alter database activate standby database; 
  SQL>alter database mount; 
  SQL>alter database open;

  三.將Failover之後的老的主庫 flashback成新primary的standby庫:

  1. 在新主庫查出failover時的SCN:


  SQL> SELECT TO_CHAR(STANDBY_BECAME_PRIMARY_SCN) FROM V$DATABASE; 
  TO_CHAR(STANDBY_BECAME_PRIMARY_SCN) 
  ---------------------------------------- 
  172313

  2. 在old primary庫上:


  SQL> SHUTDOWN IMMEDIATE; 
  SQL> STARTUP MOUNT; 
  SQL> FLASHBACK DATABASE TO SCN172313; 
  SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY; 
  SQL> SHUTDOWN IMMEDIATE; 
  SQL> STARTUP MOUNT; 
  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE 
  USING CURRENT LOGFILE DISCONNECT;






About Me

...............................................................................................................................

● 本文作者:小麥苗,只專注於資料庫的技術,更注重技術的運用

● 本文在itpub(http://blog.itpub.net/26736162)、部落格園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新

● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/

● 本文部落格園地址:http://www.cnblogs.com/lhrbest

● 本文pdf版及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/

● 資料庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/

● QQ群:230161599     微信群:私聊

● 聯絡我請加QQ好友(646634621),註明新增緣由

● 於 2017-06-02 09:00 ~ 2017-06-30 22:00 在魔都完成

● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

...............................................................................................................................

拿起手機使用微信客戶端掃描下邊的左邊圖片來關注小麥苗的微信公眾號:xiaomaimiaolhr,掃描右邊的二維碼加入小麥苗的QQ群,學習最實用的資料庫技術。

【DG】DG之Switchover和Failover的區別
DBA筆試面試講解
歡迎與我聯絡

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2141207/,如需轉載,請註明出處,否則將追究法律責任。

相關文章