挑戰dataguard(3)——dataguard相關進程(RFS,LNSn,MRP,LSP)和參數配置

在整個dg配置中,最複雜的也許就是參數的配置了,並且有許多參數都可以延伸出去講很多,所以今天我們來看看dg的參數配置,順便加上一點dataguard進程相關的信息,幫助理解。

在配置dg的過程中,我們必須在參數文件中加上一些參數的配置來保證dg的配置成功,dg的參數有很多,o小白就介紹一些比較重要的,如果要相信看的話可以去官網看相關的文檔和說明,以下就是一些比較常用的參數,考慮到primary和standby轉換的問題,我們就推薦參數在兩邊都進行配置:

1.DB_NAME:數據庫名,其實這麼說有點不準確,很容易讓人理解錯誤,o小白乾脆就把他理解成dg名算了,方正整個dg中所有的DB_NAME都必須是一致的。

2.DB_UNIQUE_NAME:真正的數據庫名,用來標識在dg中不同的數據庫的名字,以示區分。

3.DB_FILE_NAME_CONVERT/LOG_FILE_NAME_CONVERT:如果standby數據庫和primary數據庫在同一個系統中或者standby系統的數據文件或者是日誌文件位置和primary庫的不一樣,那這個參數必須在standby庫的參數文件中進行配置,以逗號分隔,將文件的路徑用單引號括起來,以先primary庫後standby庫的方式配置。例如:db_file_name_convert='/u01/app/oracle/oradata/××××/datafile/','/u01/app/oracle/oradata/×××××/datafile/'。

4.CONTROL_FILES:控制文件的位置。

5.LOG_ARCHIVE_CONFIG:推薦參數。通過DG_CONFIG將dg中所有的DB_UNIQUE_NAME羅列出來,先primary庫後standby庫的方式配置。例如:LOG_ARCHIVE_CONFIG='DG_CONFIG=(chicago, boston)'。

6.LOG_ARCHIVE_DEST_n:歸檔文件的路徑。最重要的參數之一,而且參數本身也十分複雜。那這裏就趁勢引入dataguard進程相關的一些工作機制。

dataguard中比較重要的進程有以下幾個:

RFS:remote file server。該進程是standby庫接受來自primary庫lgwr進程觸發的redo信息並且寫入到standby redo log中。RFS進程無疑是要和其他進程配合的,也就是傳輸的進程。那這裏就需要上篇的知識了,我們知道觸發同步可能由ARCH或者是LGWR進程觸發的,兩者是不同的。如果是LGWR進程觸發,那10g前的話也是由LGWR進程負責傳輸redo信息,RFS進程負責接收redo信息寫入standby redo log中,10g之後則由LNSn進程完成;如果是ARCH進程觸發,也就是歸檔日誌傳輸的話,那就是由ARCH進程負責傳輸,RFS進程負責接收,然後寫入指定的歸檔位置,然後再應用的。那這裏不同的設置也決定了參數LOG_ARCHIVE_DEST_n的不同設置。詳細見下。

LNSn:LGWR觸發以後真正負責傳輸的進程,包括初始化網絡I/O等一些列功能。

MRP:managed recovery process,簡單來說就是物理standby是通過這個進程來實現數據的同步的,直接通過standby redo log或者是歸檔日誌(取決於模式不同)來進行的一個數據恢復。

LSP:logical standby process:邏輯standby的方式,和上面的一樣,只不過當中多了一步將redo信息轉換成sql語句再恢復。也可以從這裏看出邏輯standby和物理standby的不同。

那插播完了進程介紹,繼續LOG_ARCHIVE_DEST_n,這個參數格式如下:

必須指定location/service:location代表的是本地的路徑,在之後直接加入路徑名例如LOG_ARCHIVE_DEST_1='LOCATION=/arch1/chicago/'

service代表的是net service name,通常就是standby數據庫的net_service_name,可以在tnsnames.ora,定義NET SERVICE NAME.那根據前面所說的不同方式service的制定要複雜的多:LOG_ARCHIVE_DEST_2='SERVICE=net_service_name LGWR ASYNC',那這裏也可以是LGWR SYNC NET_TIMEOUT=××來設置同步並且指定超時時間。如果是應用歸檔的方式,那就直接LOG_ARCHIVE_DEST_2='SERVICE=net_service_name。

valid_for:這個參數的作用是指定該LOG_ARCHIVE_DEST_n的路徑的redo log的type 和redo log的“身份”的,方便在轉換的時候使用。VALID_FOR=(redo_log_type,database_role)type有下面這些: ONLINE_LOGFILESTANDBY_LOGFILE,  ALL_LOGFILES. “身份”是這些: PRIMARY_ROLESTANDBY_ROLEALL_ROLES.

然後再附上DB_UNIQUE_NAME,完整例子如下:

LOG_ARCHIVE_DEST_1='LOCATION=/arch1/boston/VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=boston'

那這個參數應該是成對出現的LOCATION端一般都會指定,然後再指定standby端,我們在今後的實驗中在看具體的例子。

7.LOG_ARCHIVE_DEST_STATE_n:和上面的LOG_ARCHIVE_DEST_n參數配置對應的LOG_ARCHIVE_DEST_n的狀態:enable是可用,除此之外還有DEFER(不用)|ALTERNATE(備用)|RESET(不用)。

8.LOG_ARCHIVE_FORMAT:歸檔進程格式。

9.LOG_ARCHIVE_MAX_PRODUC:歸檔進程的數量,1-30,默認是4.

10.REMOTE_LOGIN_PASSWORD:三個選項,none(不實用密碼文件,dg中不使用)exclusive(單個實例使用單個密碼文件)或者shared(多個實例可以使用單個密碼文件)。

11.FAL_SERVER:數據庫的sid,通常是primary庫。

12.FAL_CLIENT 指定一個數據庫SID,通常該庫爲standby 角色。

13.STANDBY_FILE_MANAGEMENT:AUTO或者MANUAL。如果爲AUTO則表示primary庫的數據文件發生修改(新增,重命名),則在standby庫會自動做相應的更改。如果是MANUAL,則表示手動。

哇,好長的一篇,o小白自己都頭大了,熟能生巧,哪天這些東西都不用再查閱文檔就可以信手拈來,那也算對dg有個初步的瞭解了~

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