
Oracle DataGuard;簡稱DG。是由一個Primary Database(主庫)和一個或者多個Standby Database(備庫)組成。對Oracle來說;本身不能提高性能。通過數據冗余來保護數據。由Primary Database對外提供服務;用戶操作在Primary Database上操作;其操作的數據庫Redo Log或者Archive log通過網絡傳輸到Standby Database。Standby Database在重做這些日志。從而實現Primary Database和Standby Database數據同步。
架構圖如下:

Oracle DataGuard中的Standby庫有兩種:物理Standby和邏輯Standby。
- 邏輯Standby接收后將其轉換成SQL語句,在Standby數據庫上執行SQL語句實現同步,這種方式叫SQL Apply。
- 物理Standby接收完Primary數據庫生成的REDO數據后,以介質恢復的方式實現同步,這種方式也叫Redo Apply。
安裝規划:
IP |
ROLE |
192.168.1.235 |
Primary |
192.168.1.221 |
Standby |
對於模式中最大保護和最高可用性;采用是 LGWR 模式傳送 Redo 日志;需要為 Standby庫配置 Standby Redologs。Standby Redologs 和 ONline Redologs 文件大小是相同的。比 ONline Redologs 個數要 +1 。
本文采用 Primary 庫和 Standby 庫采用相同路徑;所以僅設置必要的參數。
- 設置Primary庫和Standby庫的service_name
- 備庫的service_name設置為db_standby;需要到參數文件修改。
- Primary庫和Standby庫設置tnsname.ora
重啟監聽lsnrctl restart
在Primary庫執行
在 Primary 端啟動日志傳送
在 Primary Database 產生的 Redo 日志;傳送到 Standby Database;是通過 LGWR 或者 ARCH 進程完成。這個很好理解。默認情況下是由 ARCH 進程。有參數 *.LOG_ARCHIVE_DEST_2 控制的。使用 ARCH 進程; Primary Database 和 Standby Database 存在數據延遲。若 Primary Database 出現異常;容易造成部分數據丟失。為了避免數據丟失,必須要使用 LGWR 進程,需要用到 Standby Redolog。而LGWR 又分SYNC(同步)和ASYNC(異步)兩種方式。
- SYNC方式:對網絡要求比較高;必須等待寫入本地日志文件操作和通過LNSn進程的網絡傳送都成功,Primary Database 上的事務才能提交成功。使用LGWR SYNC方式時,可以同時使用NET_TIMEOUT參數,這個參數單位是秒,代表如果多長時間內網絡發送沒有響應,LGWR 進程會拋出錯誤。因此對 Primary Database 性能有影響。
- ASYNC方式:采用異步方式;Primary Database 上的事務提交跟日志是否已經傳送沒有影響。
1. 在 Primary Database上執行;
2. 在Standby Database上執行;
3. Standby Database啟動實時應用redo
4. 驗證結果
__EOF__