Data Guard作為Oracle提供的一個高可用及災備解決方案,了解并可以實施它對于DBA來說是非常重要套的技能
上節介紹了有關Data Guard的概念,這節将介紹相關的一些參數
有的參數是做為備庫角色時才生效的,會單獨說出來
1. DB_NAME
該參數指定Oracle資料庫的名稱
Data Guard環境中所有資料庫的DB_NAME需保持一緻
db_name= dg1
複制
2. DB_UNIQUE_NAME
該參數指定Oracle資料庫的唯一名稱
Data Guard環境中所有資料庫的DB_UNIQUE_NAME都不能一緻
DB_UNIQUE_NAME=dg1
複制
3. LOG_ARCHIVE_CONFIG
該參數主要用來指定Data Guard環境中哪些資料庫可以傳輸日志檔案
該參數指定的資料庫名稱為DB_UNIQUE_NAME
該參數主備庫需設定一緻
LOG_ARCHIVE_CONFIG='DG_CONFIG=(dg1,dg2)'
複制
4. LOG_ARCHIVE_FORMAT
該參數設定歸檔日志檔案的命名格式
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
複制
5. LOG_ARCHIVE_DEST_n
該參數控制資料庫歸檔檔案的路徑,其包含下面子參數
n=1一般為本地歸檔路徑
log_archive_dest_1=
'LOCATION=/oralog/arch
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=dg1'
複制
5.1 LOCATION
指定本地歸檔路徑,必須為第一個參數,不能和service同時出現
5.2 VALID_FOR
決定redo資料可以寫入目标路徑的條件
VALID_FOR=(redo_log_type,database_role)
複制
redo_log_type 取值範圍:
- ONLINE_LOGFILE
- STANDBY_LOGFILE
- ALL_LOGFILES
database_role取值範圍
- PRIMARY_ROLE
- STANDBY_ROLE
- ALL_ROLES
5.3 DB_UNIQUE_NAME
指定該歸檔路徑有效的db unique name
總結:
上面的配置的意思為滿足下列條件時就會歸檔日志檔案 :
- 當資料庫unique名為dg1時
- 無論其是主庫或者備庫角色
- 無論是歸檔online redo log還是standby log
n>1一般為歸檔至遠端資料庫
log_archive_dest_2=
'SERVICE=dg2 LGWR SYNC AFFIRM
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=dg2'
複制
5.4 SERVICE
指定遠端資料庫的service name,必須為第一個參數,不能和location同時出現
5.5 LGWR ARCH
指定收集和傳輸redo資料的背景程序,包括:
- ARCH:此為預設配置,但是隻能用于最大性能模式
- LGWR:使用LGWR程序,可用于所有保護模式
無法同時使用2個程序用于發送redo資料到目标路徑
5.6 SYNC ASYNC
預設值:ASYNC
- SYNC(同步)時,redo data在傳輸到所有啟用的路徑前transaction不可以commit
- ASYNC(異步)時,redo data在傳輸到所有啟用的路徑前transaction可以commit
5.7 AFFIRM NOAFFIRM
- AFFIRM時,在主庫redo data寫入所有備庫standby redo log後确認已收到redo log,當SYNC屬性指定時該屬性是預設值
- NOAFFIRM時,AFFIRM時,在主庫redo data 寫入所有備庫redo log前确認已收到redo log,當ASYNC屬性指定時該屬性是預設值
總結:
上面的配置的意思為滿足下列條件時就會歸檔日志檔案到遠端路徑 :
- 當資料庫unique 名為dg2時
- 需要處于主庫角色
- 需要歸檔的redo data是online log file
- 使用LGWR程序
- 必須等所有redo data傳輸到目标路徑才可以完成commit
- 在redo data完成傳輸到standby redo log後才确認完成
主庫保護模式相應的屬性需求:

上圖表面了我們實際需求的保護模式相對應的一些參數設定
6. LOG_ARCHIVE_DEST_STATE_n
該參數控制LOG_ARCHIVE_DEST_n參數的有效性
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
複制
具體請檢視如下連接配接
Oracle基本參數(LOG_ARCHIVE_DEST_STATE_n)
7. REMOTE_LOGIN_PASSWORDFILE
該參數在使用密碼檔案驗證時必須使用EXCLUSIVE
具體請檢視如下連接配接
Oracle基本參數(REMOTE_LOGIN_PASSWORDFILE)
8. DB_FILE_NAME_CONVERT
該參數控制主庫資料檔案到備庫時的路徑轉換規則
如主備庫目錄結構一直可直接寫服務名
該參數隻在備庫(Standby)角色時有效,但Oracle建議主庫也設定,友善以後的角色轉換
DB_FILE_NAME_CONVERT = 'string1' , 'string2' , 'string3' , 'string4' , ...
複制
- string1 是 主庫資料檔案的路徑
- string2 是備庫資料檔案的路徑
- string3 是 主庫資料檔案的路徑
- string4 是備庫資料檔案的路徑
以此類推,數量不限
9. LOG_FILE_NAME_CONVERT
該參數控制主庫online log file到備庫時的路徑轉換規則
如主備庫目錄結構一直可直接寫服務名
該參數隻在備庫(Standby)角色時有效,但Oracle建議主庫也設定,友善以後的角色轉換
LOG_FILE_NAME_CONVERT = 'string1' , 'string2' , 'string3' , 'string4' , ...
複制
- string1 是主庫資料檔案的路徑
- string2 是備庫資料檔案的路徑
- string3 是主庫資料檔案的路徑
- string4 是備庫資料檔案的路徑
以此類推,數量不限
10. STANDBY_FILE_MANAGEMENT
該參數控制是否自動在備庫中建立主庫建立的資料檔案
注意下面兩點:
- 不會自動建立日志檔案
- 如果資料檔案重名會覆寫現有檔案
該參數隻在備庫(Standby)角色時有效,但Oracle建議主庫也設定,友善以後的角色轉換
STANDBY_FILE_MANAGEMENT=AUTO
複制
11. FAL_SERVER
FAL=fetch archive log,這個參數設定備庫從哪裡擷取歸檔日志,一般設定為主庫的服務名(service name)
該參數隻在備庫(Standby)角色時有效,但Oracle建議主庫也設定,友善以後的角色轉換
FAL_SERVER=dg2
複制
12. FAL_CLIENT
設定FAL的用戶端名稱,一把為本地資料庫的服務名
該參數隻在備庫(Standby)角色時有效,但Oracle建議主庫也設定,友善以後的角色轉換
FAL_CLIENT=dg1
複制
好了 DataGuard需要用到的參數講到這了,下節介紹Data Guard 是如何工作的