Data Guard Service 相關介紹

Data Guard Services

wKiom1LOc-KR-VjLAAJPsR6-Qw8216.jpg

以下的三部分組成Data Guard的日誌數據傳輸、日誌數據應用以及改變數據庫角色:

a)、日誌傳輸服務(Redo Transport Services

b)、日誌應用服務

c)、角色轉換

1、Redo Transport Services(日誌傳輸服務)

控制生產數據庫自動將redo data發送至一個或多個歸檔地址

1.1、使用ARCH進程

ARCH模式傳輸不寫Standby Redo logs,直接保存成歸檔文件存放於Standby

說明:

邏輯Standby接收後將其轉換成SQL語句,在Standby數據庫上執行SQL語句實現同步,這種方式叫SQL Apply

物理Standby接收完Primary數據庫生成的REDO數據後,以介質恢復的方式實現同步,這種方式也叫Redo Apply

缺點:使用ARCH進程傳遞日誌有一個問題,即只有primary database歸檔以後纔會傳送日誌到 standby database。這就導致,如果primary database異常宕機,聯機日誌中的redo內容就會發生丟失,所以要避免這種數據丟失,我們則要使用LGWR,而使用LGWR又分爲SYNC(同步)ASYNC(異步兩種方式)Primary database 缺省使用ARCH進程。

使用ARCH進程傳遞最大問題在於:Primary Database 只有在發生歸檔時纔會發送日誌到Standby Database如果Primary Database 異常宕機,聯機日誌中的Redo 內容就會丟失,因此使用ARCH 進程無法避免數據丟失的問題,要想避免數據丟失,就必須使用LGWR,而使用LGWR 又分SYNC(同步)和ASYNC(異步)兩種方式。

1.2使用LGWR 進程的SYNC 方式

1Primary Database 產生的Redo 日誌要同時寫道日誌文件和網絡。也就是說LGWR進程把日誌寫到本地日誌文件的同時還要發送給本地的LNSn進程(Network Server Process),再由LNSnLGWR Network Server process進程把日誌通過網絡發送給遠程的目的地,每個遠程目的地對應一個LNS進程,多個LNS進程能夠並行工作。

2LGWR 必須等待寫入本地日誌文件操作和通過LNSn進程的網絡傳送都成功,Primary Database 上的事務才能提交,這也是SYNC的含義所在。

3Standby DatabaseRFS進程把接收到的日誌寫入到Standby Redo Log日誌中。

4Primary Database的日誌切換也會觸發Standby Database 上的日誌切換,即Standby Database Standby Redo Log的歸檔,然後觸發Standby Database MRP或者LSP 進程恢復歸檔日誌。

因爲Primary Database Redo 是實時傳遞的,於是Standby Database 端可以使用兩種恢復方法:

實時恢復(Real-Time Apply只要RFS把日誌寫入Standby Redo Log 就會立即進行恢復;

歸檔恢復在完成對Standby Redo Log 歸檔才觸發恢復。

Primary Database默認使用ARCH進程,如果使用LGWR進程必須明確指定。使用LGWR SYNC方式時,可以同時使用NET_TIMEOUT參數,這個參數單位是秒,代表如果多長時間內網絡發送沒有響應,LGWR 進程會拋出錯誤。示例如下:

alter system set log_archive_dest_2 = 'SERVICE=db_phystdby LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PHYSTDBY NET_TIMEOUT=30' scope=both;

1.3使用LGWR進程的ASYNC 方式

使用LGWR SYNC方法的可能問題在於,如果日誌發送給Standby Database過程失敗,LGWR進程就會報錯。也就是說Primary DatabaseLGWR 進程依賴於網絡狀況,有時這種要求可能過於苛刻,這時就可以使用LGWR ASYNC方式。它的工作機制如下:

1 Primary Database 一段產生Redo 日誌後,LGWR 把日誌同時提交給日誌文件和本地LNS 進程,但是LGWR進程只需成功寫入日誌文件就可以,不必等待LNSn進程的網絡傳送成功。

2 LNSn進程異步地把日誌內容發送到Standby Database。多個LNSn進程可以併發發送。

3 Primary DatabaseOnline Redo Log 寫滿後發生Log Switch,觸發歸檔操作,也觸發Standby DatabaseStandby DatabaseStandby Redo Log 的歸檔;然後觸發MRP或者LSP 進程恢復歸檔日誌。

因爲LGWR進程不會等待LNSn進程的響應結果,所以配置LGWR ASYNC方式時不需要NET_TIMEOUT參數。示例如下:

alter system set log_archive_dest_2 = 'SERVICE=db_phystdby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PHYSTDBY ' scope=both;

2、Log Apply Services (日誌應用服務)

在備庫上應用redo data來保持與主數據庫事務的一致。可以應用歸檔日誌文件,或real-time apply(實時應用)啓用,用 standby redo log files(備用重做日誌文件)

Standby Database RFSRemote File Server進程接收到日誌後,就把日誌寫到Standby Redo Log或者Archived Log文件中,具體寫入哪個文件,取決於Primary 的日誌傳送方式和Standby database的位置。如果寫到Standby Redo Log文件中,則當Primary Database發生日誌切換時,也會觸發Standby Database上的Standby Redo Log 的日誌切換,並把這個Standby Redo Log 歸檔。如果是寫到Archived Log,那麼這個動作本省也可以看作是個歸檔操作。

在日誌接收中,需要注意的是歸檔日誌會被放在什麼位置:

1如果配置了STANDBY_ARCHIVE_DEST 參數,則使用該參數指定的目錄。

2如果某個LOG_ARCHIVE_DEST_n 參數明確定義了VALID_FOR=(STANDBY_LOGFILE,*)選項,則使用這個參數指定的目錄。

3如果數據庫的COMPATIBLE參數大於等於10.0,則選取任意一個LOG_ARCHIVE_DEST_n的值。

4如果STANDBY_ARCHIVE_DEST LOG_ARCHIVE_DEST_n 參數都沒有配置,使用缺省的STANDBY_ARCHIVE_DEST參數值,這個缺省值是$ORACLE_HOME/dbs/arc.

3、Role Transitions(角色轉換)

改變數據庫角色,從一個備份庫到主庫,或從一個主庫到備庫,使用switchover  failover操作。

Oracle數據庫運行在primary standby兩個角色中的一個。應用Data Guard,你可以使用switchover failover操作來改變一個數據庫的角色。

Switchover 是一個primary database 和其一個standby database之間的人物。Switchover 確保無數據丟失。通常這樣做的目的是爲了維護主系統。在切換期間,primary database 轉換爲了standby 角色,standby 數據庫則轉變爲primary角色。這種轉換,而無需重新創建數據庫。

Failover 是當住數據庫不可以用。Failover只在primary database發生災難性故障事故,failover可以將standby數據庫過渡爲一個primary角色。數據庫管理員可以配置Data Guard來確保無數據丟失。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章