DG -- READ ONLY模式開啟物理Standby

ywxj_001發表於2018-05-23

物理Standby  概念

DG透過REDO應用來維護物理Standby資料庫。

通常在物理Standby沒有執行REDO應用操作的時候,可以將物理Standby資料庫以READ ONLY模式開啟,如果資料庫中指定了Flashback Area的話,甚至還可以被臨時性的置為READ WRITE模式,操作完之後再透過Flashback Database特性恢復回READ WRITE前的狀態,以便繼續接收Primary端傳送的REDO並應用。

 

REDO應用。物理Standby透過REDO應用來保持與Primary資料庫的一致性,所謂的REDO應用,實質是透過Oracle的恢復機制,應用歸檔檔案(或Standby Redologs檔案)中的REDO資料。恢復操作屬於塊對塊的應用。如果正在執行REDO應用的操作,Oracle資料庫就不能被Open

READ ONLY模式開啟。以READ ONLY模式開啟後,可以在Standby資料庫執行查詢或備份等操作(變相減輕Primary資料庫壓力)。此時Standby資料庫仍然能夠繼續接收Primary資料庫傳送的REDO資料,不過並不會應用,直到Standby資料庫重新恢復REDO應用。

也就是說在READ ONLY模式下不能執行REDO應用,REDO應用時資料庫肯定處於未開啟狀態。如果需要的話,你可以在兩種狀態間轉換,如先應用REDO,然後將資料庫置為READ ONLY狀態,需要與Primary同步時再次執行REDO應用命令,切換回REDO應用狀態。呵呵,人生就是迴圈,資料庫也是一樣。

 

提 示 Oracle 11g版本中增強物理Standby的應用功能,在11g版本中,物理Standby可以在OPEN READ ONLY模式下繼續應用REDO資料,這就極大地提升了物理Standby資料庫的應用場合。

 

READ WRITE模式開啟。如果以READ WRITE模式開啟,那麼Standby資料庫將暫停從Primary資料庫接收REDO資料,並且暫時失去災難保護的功能。當然,以READ WRITE模式開啟也並非一無是處,如你可能需要臨時除錯一些資料,但又不方便在正式庫中操作,那就可以臨時將Standby資料庫置為READ WRITE模式,操作完之後將資料庫閃回到操作前的狀態(閃回之後,Data Guard會自動同步,不需要重建物理Standby,不過如果從另一個方向看,沒有啟動閃回,那就回不到READ WRITE前的狀態了)。

--===========================================

通常情況下物理standby處於mounted模式

當standby正常應用redo資料時其開啟模式處於mounted模式

SQL>select open_mode from v$database;
OPEN_MODE
———-
MOUNTED

要將物理Standby資料庫從REDO應用狀態啟動到READ ONLY狀態,並不能直接ALTER DATABASE OPEN開啟資料庫,首先要取消redo應用

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

然後再開啟資料庫:

SQL>alter database open;

查詢開啟模式
SQL>select open_mode from v$database;
OPEN_MODE
———-
READ ONLY

要從OPEN狀態切換回REDO應用狀態,並不需要SHUTDOWN資料庫再啟動,直接執行啟用REDO應用的語句即可

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

--============================================
模擬過程:修改主庫資料-->遞交,切換日誌--> 日誌主備傳輸 -->備庫redo應用 -->只讀模式開啟備庫--> 讀資料
DG   最大效能模式
主庫
SQL> update scott.emp set sal=2000 where empno=7369;
1 row updated.
SQL> commit;
Commit complete.
SQL> alter system switch logfile;
System altered.
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
            14
 
 
物理備庫
 
SQL> select open_mode from v$database;
OPEN_MODE
----------
MOUNTED
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
            14
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
Database altered.
SQL> alter database open;
Database altered.
SQL> select sal from scott.emp where empno=7369;
       SAL
----------
      2000
--======================================================

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

相關文章