【ASK_ORACLE】Oracle Data Guard(一)DG架構

Attack_on_Jager發表於2021-11-17

說明

文中介紹的DG或ADG是指物理DG,若有邏輯DG的知識點會特殊指出。


DG架構介紹

介紹架構之前,先放一張官方DG架構圖:

 

 

Data Guard的工作分為三部分:日誌(redo日誌或者歸檔日誌)的傳送、接收與應用。下面詳細說明一下這三個步驟:

1. 日誌的傳送

主庫需要不停地傳送日誌(redo日誌或者歸檔日誌)到備庫,主庫透過日誌來告訴備庫做了哪些操作,使得備庫可以“複製”主庫做的一系列操作。這個傳送是由主庫的LGWR程式(11g及以上版本預設使用)或者ARCn程式(10g預設使用)來完成,但是每臺備機有且僅有隻能選擇一種程式,因此每臺備機要麼使用LGWR,要麼使用ARCn,不能夠同時用這兩個程式傳輸。並且這兩個程式的保護能力也有區別。LGWR程式是傳輸的redo日誌的,ARCn是傳輸歸檔日誌的。

(1)使用ARCn程式傳輸

當redo日誌寫滿發生日誌切換後,會產生歸檔檔案,ARCn程式就會把此時產生的新歸檔傳到備機。備機的RFS程式來接收並寫入歸檔到備機的歸檔路徑,最後透過MRP程式(邏輯DG是LSP程式)進行歸檔應用。

需要注意的是,使用ARCn程式傳輸的歸檔,不會寫入到Standby Redo Logs中,而是直接將歸檔檔案放到備機。

 

(2)使用LGWR程式傳輸

LGWR程式又分為SYNC(同步)和ASYNC(非同步)方式傳輸

1)使用SYNC方式

SYNC方式是主庫把redo日誌寫到本地的同時,把該redo日誌透過主機的LNSn程式也同步傳輸到備機(LNSn程式可以並行工作),再由備機的RFS程式接收redo日誌並寫入到Standby Redo Logs,最後由MGR程式應用歸檔日誌。

需要注意的是,LGWR程式必須等待redo日誌寫入本地歸檔,同時透過LNSn程式傳輸都成功,主庫的事物才能commit,缺一不可,不然就會等待兩件事全部完成。


2)使用ASYNC方式

由於使用SYNC的方式非常依賴網路,所以一旦日誌傳輸到備庫失敗,LGWR程式就會報錯。於是就可以使用ASYNC的方式來傳輸。ASYNC方式不需要等待redo日誌傳輸到備機成功,就可以把redo日誌寫入到本地,但是LGWR程式依舊會同時在寫入redo日誌到本地的同時,告訴LNSn程式,只不過LNSn是非同步的。

 

另外,如果使用LGWR程式進行傳輸,如果LGWR由於某些故障傳不了redo日誌,就會使用ARCn程式來代替它傳輸。

 

2. 日誌的接收

備庫程式RFS程式一旦接收到日誌(redo或者歸檔日誌),就會把日誌寫入到備庫的Standby Redo Logs或者歸檔日誌檔案中。

注:當主庫發生日誌切換,備庫的Standby Redo Logs也會切換,並且歸檔該日誌。

 

3. 日誌的應用

1)日誌實時應用(Real Time Apply)

該方式需要包含寫入到Standby Redo Logs這個操作,只要日誌被寫入Standby Redo Logs就會觸發恢復,這種方式可以減少主備庫切換時間,因為在切換過程中最耗時就是恢復日誌。

2)歸檔應用(預設恢復方式)

該方式是預設方式,會在主庫發生日誌切換時,觸發備庫的歸檔,歸檔完成後會進行恢復。


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

相關文章