注:本文譯自《Oracle Data Guard 11g Handbook》 Page 78 – Page 88
就Data Guard(后面都寫成DG)來說,我們只關(guān)注如下三種參數(shù):
1.獨(dú)立于數(shù)據(jù)庫(kù)角色的參數(shù)
2.數(shù)據(jù)庫(kù)角色為primary時(shí)的參數(shù)
3.數(shù)據(jù)庫(kù)角色為standby時(shí)的參數(shù)
雖然DG有著非常多的配置參數(shù),我們實(shí)際使用的只有其中很少的部分,而且因?yàn)楝F(xiàn)在許多的DG功能被集成到了代碼中,最近的DG版本中很多配置參數(shù)已經(jīng)被棄用了。需要注意的是,為了便于完成數(shù)據(jù)庫(kù)的角色轉(zhuǎn)換(Role transition),與TNS names,listener,SRL(Standby Redo log)文件有關(guān)的參數(shù)需要在所有數(shù)據(jù)庫(kù)中配置。那么現(xiàn)在我們來看看這些參數(shù)吧:
一、與角色無關(guān)的參數(shù)
DB_UNIQUE_NAME 該參數(shù)定義了數(shù)據(jù)庫(kù)的唯一名稱。因?yàn)镈B_NAME參數(shù)需要滿足與物理備用數(shù)據(jù)庫(kù)(Physical standby)名稱保持一致,和邏輯備用數(shù)據(jù)庫(kù)(logical standby)名稱不相同的條件,所以在10g中該參數(shù)被引入用來區(qū)分DG配置中的每一個(gè)數(shù)據(jù)庫(kù)角色。這個(gè)參數(shù)需要在所有的數(shù)據(jù)庫(kù)中配置,同時(shí)需要重啟數(shù)據(jù)庫(kù)才能生效。如果不配置這個(gè)參數(shù),那么默認(rèn)會(huì)使用DB_NAME參數(shù),這就意味著我們不需要關(guān)閉生產(chǎn)庫(kù)來完成備用數(shù)據(jù)庫(kù)的配置工作,我們可以在之后進(jìn)行配置。
復(fù)制代碼 代碼如下:
db_unique_name='Matrix'
LOG_ARCHIVE_CONFIG 該參數(shù)定義了DG配置中可用的DB_UNIQUE_NAME參數(shù)值列表。與目標(biāo)參數(shù)(稍后討論)DB_UNIQUE_NAME的值結(jié)合使用時(shí),DG以它們來實(shí)現(xiàn)兩個(gè)數(shù)據(jù)庫(kù)之間連接的安全性檢查工作。只要不指定SEND和RECEIVE屬性,這個(gè)參數(shù)就是動(dòng)態(tài)的,這兩個(gè)屬性是舊參數(shù)REMOTE_ARCHIVE_ENABLE遺留下來的,已經(jīng)不再需要,因此就不要再使用了。
在實(shí)際使用時(shí),你只需要將其他數(shù)據(jù)庫(kù)的唯一名稱添加到配置就可以了,當(dāng)前數(shù)據(jù)庫(kù)的唯一名會(huì)根據(jù)場(chǎng)景自動(dòng)添加;不過為了清晰期間,并且在所有的數(shù)據(jù)庫(kù)中保持該參數(shù)的一致性,還是會(huì)將當(dāng)前數(shù)據(jù)庫(kù)的唯一名稱明確的添加上去。對(duì)于名稱的配置順序沒有要求,該參數(shù)在有RAC的環(huán)境中是必須要配置的,應(yīng)該始終使用該參數(shù)。
復(fù)制代碼 代碼如下:
log_archive_config='dg_config=(Matrix,Matrix_DR0)'
CONTROL_FILES 大家都知道這個(gè)參數(shù)的用途啦(注:當(dāng)前數(shù)據(jù)庫(kù)控制文件的位置),要記住對(duì)于備用數(shù)據(jù)庫(kù),它指向的是備用控制文件(Standby Control File)的位置。這個(gè)控制文件是自動(dòng)創(chuàng)建的,或者手動(dòng)創(chuàng)建,取決于你創(chuàng)建備用數(shù)據(jù)庫(kù)的方法。(注:自動(dòng)創(chuàng)建通常發(fā)生在使用RMAN功能產(chǎn)生備用數(shù)據(jù)庫(kù)過程中,如果你是用的是手工方法,控制文件需要手動(dòng)的從主庫(kù)copy過來)
復(fù)制代碼 代碼如下:
control_files='/Oracle/oradata/Matrix/control01.ctl'
LOG_ARCHIVE_MAX_PROCESSES 提到這個(gè)參數(shù)是因?yàn)樗哪J(rèn)值仍然是2,太小了。在主庫(kù)中,歸檔進(jìn)程負(fù)責(zé)歸檔已經(jīng)寫滿的在線日志文件(Online Redo Log)并作為重做流(Redo Steam)傳輸?shù)絺溆脭?shù)據(jù)庫(kù)來完成間隔處理(Gap);在備庫(kù)中,歸檔進(jìn)程則是負(fù)責(zé)歸檔備庫(kù)日志文件(Standby Redo Log)并且將其轉(zhuǎn)發(fā)到它的級(jí)聯(lián)備用數(shù)據(jù)庫(kù)中。(注:級(jí)聯(lián)備用數(shù)據(jù)庫(kù)是指當(dāng)前備用數(shù)據(jù)庫(kù)的下一級(jí)備庫(kù),即Standby的Standby,從這里可以看出不管什么數(shù)據(jù)庫(kù)角色,歸檔進(jìn)程的工作的內(nèi)容都是一樣的:1,歸檔日志文件;2,轉(zhuǎn)發(fā)日志文件到Standby)
在主庫(kù)中,有一個(gè)歸檔進(jìn)程僅限于對(duì)在線日志文件提供服務(wù),無權(quán)與備庫(kù)進(jìn)行通信,這個(gè)特殊的ARCH進(jìn)程被稱為“專用ARCH進(jìn)程”,而其他歸檔進(jìn)程是可以完成這兩樣功能的。當(dāng)歸檔進(jìn)程向備庫(kù)發(fā)送歸檔日志文件,就無法協(xié)助歸檔ORL文件了;盡管歸檔進(jìn)程的主要指令是“先歸檔在線日志文件,再處理主備庫(kù)的間隔,”但是在最壞的情況下,仍然可能只有一個(gè)歸檔進(jìn)程在進(jìn)行歸檔任務(wù)。如果沒有足夠的歸檔進(jìn)程,在慢速網(wǎng)絡(luò),主備庫(kù)間出現(xiàn)大的日志間隔的時(shí)候,你可能就只有那么一個(gè)進(jìn)程在處理日志文件。這里就會(huì)有個(gè)非常棘手的問題,那就是如果這個(gè)時(shí)候你所有的日志文件都已經(jīng)寫滿,生產(chǎn)庫(kù)就停滯了,直到其中的一個(gè)文件被歸檔。在10g中引入了多線程間隔處理特性(MAX_CONNECTIONS),它允許DG使用多個(gè)歸檔進(jìn)程向備用數(shù)據(jù)庫(kù)發(fā)送單個(gè)日志文件,這就意味這我們會(huì)使用更多的歸檔日志進(jìn)程;因此,這個(gè)參數(shù)至少要設(shè)置4,最大值為30。
復(fù)制代碼 代碼如下:
log_archive_max_processes='4'
備庫(kù)專用ARCH進(jìn)程
需要注意的是,備用數(shù)據(jù)庫(kù)中也有一個(gè)“備庫(kù)專用ARCH進(jìn)程”,不過這僅僅意味著在備庫(kù)中少了一個(gè)可以歸檔SRL文件歸檔進(jìn)程而已,在物理備用中,這個(gè)專用ARCH進(jìn)程是沒有歸檔SRL文件功能的。
使用多個(gè)歸檔進(jìn)程時(shí)需要注意一點(diǎn),雖然增加歸檔進(jìn)程可以減少生產(chǎn)環(huán)境中斷的可能,但是大量的歸檔進(jìn)程會(huì)增加主備切換(Switchover)的時(shí)間,因?yàn)檫@需要喚醒所有的歸檔進(jìn)程并使他們退出。我們可以通過在執(zhí)行切換前將該參數(shù)調(diào)低來避免這種情況。此外,在11g中引入了新的流式功能(Streaming Capability),如果正好主備庫(kù)間的日志間隔非常大,過多的歸檔進(jìn)程傳輸會(huì)把整個(gè)網(wǎng)絡(luò)帶寬充滿。
DB_CREATE_FILE_DEST 雖然這不是DG特有的參數(shù),不過還是需要介紹一下的,因?yàn)槿绻阍趥鋷?kù)中使用了ASM,這個(gè)參數(shù)是要定義的。
復(fù)制代碼 代碼如下:
db_create_file_dest=+DATA
二、主庫(kù)角色參數(shù)
LOG_ARCHIVE_DEST_n 這個(gè)是DG重做日志傳輸?shù)闹饕獏?shù),通常都是在主庫(kù)中起作用,當(dāng)然也會(huì)有例外,比如處理級(jí)聯(lián)備庫(kù)的場(chǎng)景;該參數(shù)也可用來指定由在線重做日志(ORL)或備庫(kù)重做日志(SRL)產(chǎn)生的歸檔日志文件的傳輸目的地,不過隨著10gR1版本中閃回恢復(fù)區(qū)的引入,本地歸檔的日志文件默認(rèn)會(huì)放在閃回恢復(fù)區(qū),所以在這種情況下就不需要再設(shè)置本地歸檔了;我們將會(huì)討論一下本地歸檔和LOCATION屬性,不過應(yīng)該你已經(jīng)使用了閃回恢復(fù)區(qū),所以不需要再進(jìn)行LOG_ARCHIVE_DEST_n參數(shù)的設(shè)置了。
這個(gè)參數(shù)有17個(gè)屬性,所有這些屬性都是用來設(shè)置主庫(kù)到備庫(kù)的重做日志傳輸?shù)?;其?shí)你只需要設(shè)置其中的7個(gè)就可以讓日志傳輸工作正常了;下面我們會(huì)先來介紹一下這7個(gè)屬性并且用一些例子來展示一下它們的用法,然后我們?cè)偬接懸幌缕溆嗟?0個(gè)屬性以及它們的使用場(chǎng)景和使用原因,我們建議不要設(shè)置其中的6個(gè)屬性。
下面是必須的屬性:
SERVICE 指定已經(jīng)創(chuàng)建的備庫(kù)的TNSNAMES描述符,早期的網(wǎng)絡(luò)調(diào)整就是從這里開始的。(注:這是DG設(shè)置中會(huì)較早碰到的與網(wǎng)絡(luò)相關(guān)的屬性)
SYNC 指定使用同步方法傳送重做數(shù)據(jù),即客戶端事務(wù)的提交會(huì)發(fā)生在LGWR進(jìn)程收到備庫(kù)LNS發(fā)來的確認(rèn)信息之后;對(duì)于”最大可用模式“和”最大保護(hù)模式“,這需要至少一個(gè)備庫(kù)(Standby)。
ASYNC 默認(rèn)值;如果沒有指定日志傳輸類型的話就會(huì)使用異步方式發(fā)生重做數(shù)據(jù);這是”最大性能模式“下的日志傳輸方法。
NET_TIMEOUT 指定LGWR進(jìn)程等待LNS進(jìn)程響應(yīng)的時(shí)間,如果這期間沒有收到響應(yīng),則認(rèn)為備庫(kù)發(fā)生故障(failed),默認(rèn)值是30秒,不過10-15可能會(huì)是更恰當(dāng)?shù)闹?,這取決于你的網(wǎng)絡(luò)可靠性。不要將這個(gè)值設(shè)置為10一下,不然你可能會(huì)在備庫(kù)恢復(fù)正常后還是無法建立連接,這是因?yàn)橹匦逻B接備庫(kù)的操作也會(huì)耗費(fèi)幾秒的時(shí)間;因此在這之前,我們需要做:
1.停止舊的LNS進(jìn)程
2.啟動(dòng)新的LNS進(jìn)程
3.與備庫(kù)建立連接
4.檢測(cè)并停止舊的RFS進(jìn)程
5.啟動(dòng)新的RFS進(jìn)程
6.選擇并打開新的SRL
7.初始化SR頭(注:即備庫(kù)的重做日志數(shù)據(jù))
8.響應(yīng)LNS進(jìn)程告知已經(jīng)完成準(zhǔn)備工作
所有這些操作完成后,LNS進(jìn)程才會(huì)告訴LGWR進(jìn)程備庫(kù)已連接成功;如果這個(gè)過程耗費(fèi)的時(shí)間超過了NET_TIMEOUT的值,那么LGWR會(huì)再次放棄備庫(kù);每次發(fā)生日志切換時(shí)都會(huì)進(jìn)行這個(gè)重新連接動(dòng)作。
REOPEN 該屬性控制主庫(kù)嘗試重新連接已經(jīng)發(fā)生故障的備庫(kù)的等待時(shí)間,默認(rèn)值是300(5分鐘),這通常是大家抱怨在停止備庫(kù)后主庫(kù)不重連的原因。一般來說,測(cè)試的時(shí)候都會(huì)比較快;先shutdown abort備庫(kù),觀察主庫(kù)的alert日志看是否與備庫(kù)斷開連接,再啟動(dòng)備庫(kù),在主庫(kù)中切換日志觀察是否發(fā)生重連,這些操作會(huì)在5分鐘內(nèi)完成,所以如果你手法快,DG不會(huì)在第一次(或者更多次)日志切換時(shí)進(jìn)行重連。這個(gè)屬性旨在避免這種情況,即如果備庫(kù)發(fā)生故障以后主庫(kù)立即切換日志,這個(gè)時(shí)候的重連很有可能就會(huì)失敗,因此你可以考慮將這個(gè)屬性設(shè)置成30秒甚至是15秒,這樣DG會(huì)盡快的完成重連工作。
DB_UNIQUE_NAME 要在參數(shù)LOG_ARCHIVE_DEST_n參數(shù)中使用這個(gè)屬性需要同時(shí)設(shè)置LOG_ARCHIVE_CONFIG參數(shù),否則DG將拒絕連接這個(gè)目標(biāo)庫(kù);這個(gè)SERVICE目標(biāo)(遠(yuǎn)端)名稱是你用來連接另一端的數(shù)據(jù)庫(kù)(也就是備用數(shù)據(jù)庫(kù))的唯一名稱。
你必須同時(shí)在兩端的數(shù)據(jù)庫(kù)中將該唯一名稱添加LOG_ARCHIVE_CONFIG參數(shù)中。當(dāng)主庫(kù)向備庫(kù)發(fā)起連接時(shí),它將會(huì)發(fā)送自己的數(shù)據(jù)庫(kù)唯一名稱到備庫(kù),同時(shí)要求備庫(kù)返回唯一名稱。在備庫(kù)中將會(huì)檢查L(zhǎng)OG_ARCHIVE_CONFIG參數(shù),以確保主庫(kù)的唯一名確實(shí)存在,如果不存在,連接請(qǐng)求將會(huì)被拒絕;如果存在,備庫(kù)會(huì)把自己的唯一名返送回主庫(kù)的LNS進(jìn)程,如果返送的值和主庫(kù)中該屬性的值不匹配,連接就會(huì)被終止。
和LOG_ARCHIVE_CONFIG參數(shù)一樣,這個(gè)屬性在RAC環(huán)境下是必須要配置的。
VALID_FOR 這是最后一個(gè)必須配置的屬性了。盡管你認(rèn)為不配置這個(gè)屬性DG也能正常的工作(確實(shí)是這樣),不過還是建議你使用它。該參數(shù)的主要功能是定義何時(shí)使用目標(biāo)參數(shù)LOG_ARCHIVE_DEST_n以及它作用于哪種類型的日志文件。
下面是日志文件的合法值:
1.ONLINE_LOGFILE 僅在歸檔ORL文件時(shí)有效
2.STANDBY_LOGFILE 僅在歸檔SRL文件時(shí)有效
3.ALL_LOGFILES 無論是那種重做日志文件類型都有效
下面是角色的合法值:
1.PRIMARY_ROLE 僅在主庫(kù)中生效
2.STANDBY_ROLE 僅在備庫(kù)中生效
3.ALL_ROLES 主備角色都有效
如果這兩個(gè)參數(shù)的答復(fù)都是TRUE,VALID_FOR就會(huì)允許使用目標(biāo)參數(shù)。(注:這里意思是目標(biāo)參數(shù)會(huì)在VALID_FOR的上述兩個(gè)子項(xiàng)都是TRUE的時(shí)候被使用。比如設(shè)置為valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)那么如果當(dāng)前數(shù)據(jù)庫(kù)滿足是主庫(kù)并且歸檔ORL文件的條件,LOG_ARCHIVE_DEST_n內(nèi)的屬性設(shè)置就會(huì)生效。)有了這個(gè)參數(shù),我們就可以預(yù)定義DG中所有數(shù)據(jù)庫(kù)的所有目標(biāo)參數(shù)了,并其它們僅在VALID_FOR屬性都是TRUE的時(shí)候生效,這樣就沒必要再在角色轉(zhuǎn)換時(shí)啟用和禁用目標(biāo)了。
那么LOG_ARCHIVE_DEST_n到底會(huì)是什么樣子呢?最多可以設(shè)置9個(gè)目標(biāo),這就是說我們可以最多擁有9個(gè)備庫(kù)。其實(shí)可以使用10個(gè),不過一個(gè)是保留用做默認(rèn)的本地歸檔目標(biāo)的,這個(gè)我們稍后會(huì)討論。這里我們使用2號(hào)參數(shù)來添加一個(gè)位于曼徹斯特的最高可用的備庫(kù)。(為了便于顯示進(jìn)行了修改)
復(fù)制代碼 代碼如下:
log_archive_dest_2='service=Matrix_DR0
SYNC REOPEN=15 NET_TIMEOUT=15
valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)
db_unique_name=Matrix_DR0'
現(xiàn)在再添加一個(gè)位于紐瓦克市的備庫(kù)作為3號(hào)參數(shù),它的網(wǎng)絡(luò)延遲比SYNC長(zhǎng),所以這里以異步模式來傳輸:
復(fù)制代碼 代碼如下:
log_archive_dest_3='service=Matrix_DR1
ASYNC REOPEN=15
valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)
db_unique_name=Matrix_DR1'
當(dāng)然我們使用了適當(dāng)?shù)腄B_UNIQUE_NAME屬性,所以我們還要配置LOG_ARCHIVE_CONFIG參數(shù):
復(fù)制代碼 代碼如下:
log_archive_config='dg_config=(Matrix,Matrix_DR0,Matrix_DR1)'
下面是可選屬性:
AFFIRM 這是使用SYNC方式目標(biāo)的默認(rèn)值。要求LNS進(jìn)程等待RFS進(jìn)程完成對(duì)SRL文件的直接I/O再返回成功消息,還要求是“最高可用”或”最大保護(hù)“模式;因?yàn)檫@個(gè)屬性是基于目標(biāo)的默認(rèn)值,所以不需要設(shè)置它;盡管在10g中可以為ASYNC方式的目標(biāo)指定這個(gè)屬性,不過依然是沒有理由的。實(shí)際上,它會(huì)拖慢LNS進(jìn)程。在11g中,AFFIRM屬性會(huì)被ASYNC目標(biāo)忽略掉。
NOAFFIRM 如果沒有特別指定,它會(huì)是ASYNC目標(biāo)的默認(rèn)值。用于“最大性能”模式;再次聲明,因?yàn)樗茿SYNC的默認(rèn)值,所以沒有必要去指定它;并且如果你對(duì)SYNC目標(biāo)設(shè)置NOAFFIRM屬性,你的保護(hù)模式將違反規(guī)定,被標(biāo)記為“已重新同步”狀態(tài)。如果這是你唯一的SYNC備庫(kù),并且處于最大可用模式,那么你將無法進(jìn)行零數(shù)據(jù)丟失的故障轉(zhuǎn)移(Failover);如果這是你唯一的SYNC目標(biāo),并且處于最大保護(hù)模式,那么設(shè)置AFFIRM屬性會(huì)讓你的主庫(kù)崩潰。
COMPRESSION 這個(gè)屬性將啟用對(duì)備用目標(biāo)的高級(jí)壓縮功能。默認(rèn)情況下,這就意味著任何一個(gè)向該目標(biāo)發(fā)送間隔日志的歸檔進(jìn)程都會(huì)在發(fā)送時(shí)壓縮歸檔。如果你設(shè)置了這個(gè)隱藏屬性,那么它也會(huì)壓縮當(dāng)前發(fā)送的重做日志流。舉個(gè)例子,假如設(shè)置這個(gè)隱藏參數(shù),我們來對(duì)當(dāng)前的兩個(gè)目標(biāo)庫(kù)來添加COMPRESSION屬性:
復(fù)制代碼 代碼如下:
log_archive_dest_2='service=Matrix_DR0
LGWR SYNC REOPEN=15 NET_TIMEOUT=15
COMPRESSION=ENABLE
valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)
db_unique_name=Matrix_DR0'
log_archive_dest_3='service=Matrix_DR1
LGWR ASYNC REOPEN=15
COMPRESSION=ENABLE
valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)
db_unique_name=Matrix_DR1'
Matrix_DR0目標(biāo)庫(kù)僅在ARCH進(jìn)程發(fā)送用于間隔處理的歸檔日志的時(shí)候才會(huì)使用壓縮功能(并非用于同步SYNC的歸檔日志),而Matrix_DR1庫(kù)自始至終都會(huì)壓縮重做日志。這里說明日志并不會(huì)在磁盤也保持壓縮狀態(tài),因?yàn)橹粫?huì)在傳輸過程中壓縮日志,所以這些傳輸?shù)絺鋷?kù)的數(shù)據(jù)會(huì)被解壓縮,然后再寫入到SRL文件中。
MAX_CONNECTIONS 該屬性在10gR2中被引入,它允許你指定用于備庫(kù)間隔處理的歸檔進(jìn)程的數(shù)量,在11g中已經(jīng)棄用。不過如果你的版本是10g,你可以為它指定值1-5(默認(rèn)值1);如果你設(shè)置的值大于1時(shí),每當(dāng)備庫(kù)需要進(jìn)行間隔處理的時(shí)候,主庫(kù)將分配對(duì)應(yīng)數(shù)量的歸檔進(jìn)程用來發(fā)送歸檔日志文件,這些文件會(huì)被分片給這些歸檔進(jìn)程,同時(shí)在網(wǎng)絡(luò)中以并行流的形式傳送,并在傳送到備庫(kù)時(shí)重新裝配。
復(fù)制代碼 代碼如下:
log_archive_dest_2='service=Matrix_DR0
LGWR SYNC REOPEN=15 NET_TIMEOUT=15
MAX_CONNECTIONS=5
valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)
db_unique_name=Matrix_DR0'
現(xiàn)在當(dāng)Matrix_DR0庫(kù)與主庫(kù)斷開連接的時(shí)候,主庫(kù)的間隔處理進(jìn)程將會(huì)對(duì)每一個(gè)確實(shí)的歸檔日志文件使用多個(gè)重做流。
注意:
不要在11g數(shù)據(jù)庫(kù)中使用MAX_CONNECTIONS屬性,這會(huì)降低日志傳輸?shù)男阅堋?/p>
DELAY 這個(gè)屬性并不是像大多數(shù)想象的那樣延遲重做數(shù)據(jù)的傳輸,它只是用來指示備庫(kù)目標(biāo)的日志應(yīng)用進(jìn)程在DELAY屬性設(shè)置的時(shí)間(秒)后應(yīng)用重做數(shù)據(jù)。有了閃回?cái)?shù)據(jù)庫(kù),這個(gè)屬性幾乎被棄用,尤其在自從我們建議在主備庫(kù)中一直啟用閃回?cái)?shù)據(jù)庫(kù)功能后。 如果你傾向于完成一些閃回?cái)?shù)據(jù)庫(kù)無法處理的任務(wù)量,則可能需要設(shè)置這個(gè)延遲時(shí)間。第8章將討論閃回?cái)?shù)據(jù)庫(kù)和Data Guard。
ALTERNATE 替代(ALTERNATE)目標(biāo)最初的目的是,當(dāng)正在歸檔ORL日志文件的磁盤空間已滿時(shí),保持?jǐn)?shù)據(jù)庫(kù)的持續(xù)運(yùn)行。使用替代目標(biāo),你可以將歸檔日志文件重定向到一個(gè)備用磁盤中。有了閃回恢復(fù)區(qū)(自動(dòng)管理空間),這個(gè)問題基本上消失了。
如果你有多個(gè)指向備庫(kù)的網(wǎng)絡(luò)路徑,也可以為遠(yuǎn)程備用目標(biāo)使用該屬性。顯然,你會(huì)在RAC環(huán)境中使用多個(gè)備庫(kù)網(wǎng)絡(luò)路徑,但是這并不是ALTERNATE屬性設(shè)計(jì)的初衷。對(duì)于有著多網(wǎng)卡的單實(shí)例或者RAC的環(huán)境,在備庫(kù)的TNS描述符中使用connect-time failover會(huì)更簡(jiǎn)便。(注:參見connect-time failover )
建議不要使用以下的屬性:
LOCATION 在10gR2之前,該屬性必須指定一個(gè)文件位置用于歸檔進(jìn)程存儲(chǔ)歸檔日志文件,并且這在主庫(kù)(對(duì)于ORL文件)和備庫(kù)(對(duì)于SRL文件)確實(shí)是正確的。不過隨著閃回恢復(fù)區(qū)和默認(rèn)本地歸檔的使用,這個(gè)屬性已經(jīng)不再需要設(shè)置了。編號(hào)為10的目標(biāo)將自動(dòng)設(shè)置成閃回恢復(fù)區(qū)。
復(fù)制代碼 代碼如下:
SQL> SELECT DESTINATION FROM V$ARCHIVE_DEST WHERE DEST_ID=10;
USE_DB_RECOVERY_FILE_DEST
SQL> ARCHIVE LOG LIST
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 19
Next log sequence to archive 21
Current log sequence 2
如果你正在使用閃回恢復(fù)區(qū),并且你想定義一個(gè)本地目標(biāo),那么應(yīng)該使用相同的語法:
復(fù)制代碼 代碼如下:
log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST
valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)
db_unique_name=Matrix'
如果你還是不使用閃回恢復(fù)區(qū),也可以使用舊的磁盤路徑寫法:
復(fù)制代碼 代碼如下:
log_archive_dest_1='location=/u03/oradata/Matrix/arch/
valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)
db_unique_name=Matrix'
注意在如上的兩種情況下,DB_UNIQUE_NAME都是指向你在其上定義了目標(biāo)(注:也就是歸檔的存放位置)的數(shù)據(jù)庫(kù),而并非遠(yuǎn)程的備庫(kù)。在上面的例子中,歸檔位置目標(biāo)在Matrix庫(kù)上,因此如果你要在這里使用DB_UNIQUE_NAME屬性,就需要指定Matrix為DB_UNIQUE_NAME的值。
注意:
如果使用閃回恢復(fù)區(qū),就不要使用LOCATION屬性來指定本地歸檔位置了。
MANDATORY 這是備庫(kù)上最危險(xiǎn)的屬性之一?;旧希?guī)定ORL文件中的redo信息必須發(fā)送到該備庫(kù)。如果redo信息無法發(fā)送到備庫(kù),那么主庫(kù)中包含redo信息的這個(gè)ORL文件在成功發(fā)送到備庫(kù)之前將無法被重用(reuse)。試想當(dāng)備庫(kù)無法訪問并且主庫(kù)中所有可用的日志文件都被遍歷完了,那么生產(chǎn)系統(tǒng)就會(huì)停滯。當(dāng)然,有一個(gè)本地目標(biāo)是MANDATORY的以使文件存放在磁盤上,不過沒有必要再設(shè)置另一個(gè)了。默認(rèn)情況下,本地歸檔中的一個(gè)目標(biāo)會(huì)被設(shè)置成MANDATORY。
注意:
不要設(shè)置MANDATORY屬性。
MAX_FAILURE 這個(gè)屬性是所有屬性中最遭人誤解的一個(gè)。人們都傾向與認(rèn)為這個(gè)屬性表示LGWR進(jìn)程在放棄發(fā)生故障的備庫(kù)并繼續(xù)產(chǎn)生日志之前,重新連接備庫(kù)的次數(shù)。事實(shí)并非如此,如果你設(shè)置了該屬性,實(shí)際是定義了LGWR嘗試重連有故障的備庫(kù)時(shí),日志組切換的次數(shù)(注:原文寫的更加讓人容易誤解,這里的意思就是切換一次日志,重連一次備庫(kù))。舉例來說,如果將MAX_FAILURE的值設(shè)置成5,那么LGWR將會(huì)在它循環(huán)切換日志期間對(duì)故障備庫(kù)總共發(fā)起5次連接請(qǐng)求,如果切換了5次還是無法連接到故障備庫(kù),那么LGWR將放棄重連,之后你要么等手動(dòng)重新啟用它或者等主庫(kù)重啟重新生效該屬性。
注意:
不要設(shè)置MAX_FAILURE屬性。
NOREGISTER 這是我們討論的LOG_ARCHIVE_DEST_n參數(shù)的最后一個(gè)屬性。默認(rèn)情況下,DG要求任何發(fā)送到備庫(kù)的redo數(shù)據(jù)都需要在歸檔至磁盤的時(shí)候完成對(duì)備庫(kù)的注冊(cè)。對(duì)于一個(gè)物理備庫(kù)來說,意味著數(shù)據(jù)會(huì)被注冊(cè)到備庫(kù)的控制文件中;而對(duì)于邏輯備庫(kù)來說,它意味著SQL Apply會(huì)在元數(shù)據(jù)中注冊(cè)日志文件。DG不需要這個(gè)屬性,它可以用在使用downstream特性的Streams目標(biāo)庫(kù)中。
注意:
不要設(shè)置NOREGISTER屬性。
LOG_ARCHIVE_DEST_STATE_n 這是和LOG_ARCHIVE_DEST_n配套使用的參數(shù)。在過去,有兩個(gè)原因我們需要配置它。一是啟用備庫(kù)中主角色LOG_ARCHIVE_DEST_n參數(shù)的預(yù)定義,以使得該參數(shù)被啟用后歸檔進(jìn)程可以使用LOG_ARCHIVE_DEST_n來工作;另一個(gè)原因是配置一個(gè)如前面所述的ALTERNATE目標(biāo)。第一個(gè)原因已經(jīng)沒有作用了(現(xiàn)在使用了VALID_FOR),并且除非你使用ALTERNATE屬性,否則第二個(gè)原因也不成立了,因?yàn)楝F(xiàn)在這個(gè)參數(shù)默認(rèn)就是ENABLE的了,你不再需要為你的目標(biāo)庫(kù)設(shè)置它了。
復(fù)制代碼 代碼如下:
log_archive_dest_state_1=enable
三、備用角色參數(shù)
DB_FILE_NAME_CONVERT 在備庫(kù)中,該參數(shù)允許你邏輯上將數(shù)據(jù)文件從主庫(kù)遷移到備庫(kù)上,如果你使用的是基于磁盤的存儲(chǔ)結(jié)構(gòu)并且存儲(chǔ)路徑在兩個(gè)系統(tǒng)上并不相同,那么就有必要配置它。只有在備庫(kù)切換為主庫(kù)這期間,該轉(zhuǎn)換才會(huì)執(zhí)行。一旦進(jìn)行主備切換或者故障切換到備庫(kù),這些值就會(huì)被寫入到控制文件和數(shù)據(jù)文件頭。通過簡(jiǎn)單的字符替換就可以實(shí)現(xiàn)功能。
復(fù)制代碼 代碼如下:
db_file_name_convert='/Matrix/','/Matrix_DR0/'
上面的命令會(huì)將如下數(shù)據(jù)文件名:
復(fù)制代碼 代碼如下:
'/u03/oradata/Matrix/sysaux.dbf'
轉(zhuǎn)換為:
復(fù)制代碼 代碼如下:
'/u03/oradata/Matrix_DR0/sysaux.dbf'
同理,如下配置會(huì)將數(shù)據(jù)文件指向到+RECOVERY磁盤組中而不是+DATA;
復(fù)制代碼 代碼如下:
db_file_name_convert='+DATA','+RECOVERY'
路徑的其他部分將保持相同,在本例中,使用了ASM來創(chuàng)建備庫(kù),你不需要定義這個(gè)參數(shù)了。
LOG_FILE_NAME_CONVERT 它的功能和DB_FILE_NAME_CONVERT參數(shù)相同,只不過這里轉(zhuǎn)換的是日志文件,包括ORL文件和任何SRL文件。
復(fù)制代碼 代碼如下:
log_file_name_convert='/Matrix/','/Matrix_DR0/'
FAL_SERVER FAL(Fetch Archive Log)功能相比9iR1時(shí)的DG已經(jīng)有了很大的進(jìn)步。它只用于物理備庫(kù),配置它能夠使得物理備庫(kù)在發(fā)現(xiàn)問題時(shí),從DG配置中的一個(gè)數(shù)據(jù)庫(kù)(主庫(kù)或備庫(kù))中獲取缺失的歸檔日志文件,有時(shí)我們又成它為被動(dòng)間隔處理(reactive gap resolution),不過FAL技術(shù)在之前的三個(gè)版本中得到了極大的增強(qiáng)以至于現(xiàn)在幾乎不需要再定義FAL參數(shù)了。伴隨著9iR2版本引入的主動(dòng)間隔處理(proactive gap resolution)技術(shù)的使用,幾乎物理或邏輯備庫(kù)上任何類型的間隔請(qǐng)求都可以由主庫(kù)上的ping進(jìn)程來處理了。
在主庫(kù)的正常工作過程中,歸檔進(jìn)程(被指定為ping進(jìn)程)會(huì)輪流查詢所有的備庫(kù)來尋找redo間隔,與此同時(shí)處理任何應(yīng)用進(jìn)程發(fā)來的未解決的間隔請(qǐng)求。當(dāng)物理備庫(kù)需要從主庫(kù)之外的數(shù)據(jù)庫(kù)中獲得間隔文件時(shí)就可以使用FAL技術(shù)。舉個(gè)例子,比如物理備庫(kù)現(xiàn)在需要進(jìn)行間隔處理,但是主庫(kù)無法訪問,那么它需要去請(qǐng)求其他的備庫(kù)來完成間隔處理,為此,你要將FAL_SERVER參數(shù)定義為指向主庫(kù)或者任意備庫(kù)的TNS標(biāo)識(shí)符列表。如在Matrix_DR0庫(kù)中加入主庫(kù)(Matrix)和其他備庫(kù)(Matrix_DR1):
復(fù)制代碼 代碼如下:
fal_server='Matrix, Matrix_DR1'
FAL_CLIENT FAL客戶端就是發(fā)起間隔請(qǐng)求的數(shù)據(jù)庫(kù)的TNS名稱,間隔請(qǐng)求的接收方(FAL_SERVER)需要這個(gè)TNS名稱以使得FAL服務(wù)器上的數(shù)據(jù)庫(kù)可以反向連接至請(qǐng)求方。在備庫(kù)Matrix_DR0上,我們發(fā)送Matrix_DR0作為客戶端名稱以便Matrix和Matrix_DR1庫(kù)可以連接回Matrix_DR0庫(kù)發(fā)送缺失的歸檔日志文件。
復(fù)制代碼 代碼如下:
fal_client='Matrix_DR0'
‘Matrix_DR0′必須要在FAL服務(wù)器的TNS文件中定義以使得DG能夠成功連接備庫(kù);因?yàn)槲覀儗?huì)在所有這些數(shù)據(jù)庫(kù)中設(shè)置redo傳輸參數(shù),所以我們也要為它們配置TNS名稱。如果你在FAL參數(shù)中使用相同的TNS名稱,那么這些TNS名稱就是定義好的了。如果你選擇了一個(gè)不同的名稱,你就需要在所有系統(tǒng)的TNS文件中添加這個(gè)名稱。和FAL_SERVER參數(shù)一樣,F(xiàn)AL_CLIENT參數(shù)只對(duì)物理備庫(kù)有效。
STANDBY_FILE_MANAGEMENT 這是本章節(jié)討論的最后一個(gè)參數(shù)了。這個(gè)簡(jiǎn)單的參數(shù)只用于物理備庫(kù)。該參數(shù)設(shè)置成AUTO的時(shí)候,主庫(kù)中添加和刪除數(shù)據(jù)文件的同時(shí),備庫(kù)中也會(huì)自動(dòng)的進(jìn)行相應(yīng)的更改。只要備庫(kù)中頂級(jí)目錄存在或能夠借助于DB_
FILE_NAME_CONVERT參數(shù)找到,那么DG將會(huì)執(zhí)行DDL語句在備庫(kù)中創(chuàng)建數(shù)據(jù)文件。它甚至?xí)M可能的創(chuàng)建缺失的子目錄。默認(rèn)情況下,這個(gè)參數(shù)的值為MANUAL,這意味著備庫(kù)上的應(yīng)用進(jìn)程不會(huì)創(chuàng)建新的數(shù)據(jù)文件,你需要手動(dòng)創(chuàng)建它們。
復(fù)制代碼 代碼如下:
standby_file_management='AUTO'
只有當(dāng)需要對(duì)物理備庫(kù)上的ORL文件執(zhí)行定義操作的時(shí)候,我們才可能會(huì)將該參數(shù)設(shè)置成MANUAL。SRL文件能夠在不改這個(gè)參數(shù)的情況下添加。如果你真要在物理備庫(kù)上添加或刪除在線日志文件(比如因?yàn)橹鲙?kù)上發(fā)生了更改),你也可以將這個(gè)參數(shù)動(dòng)態(tài)的設(shè)置成MANUAL,執(zhí)行DDL操作,然后再還原成AUTO值,無需重啟備庫(kù)。
參數(shù)與屬性小結(jié)
在了解上面的所有參數(shù)和屬性之后,你應(yīng)該對(duì)它們的功能和特性有了深刻的理解并且可以正確的配置使用了。
希望你不要對(duì)這些感到頭疼,因?yàn)橛幸稽c(diǎn)你或許會(huì)感到詫異:如果你使用Data Guard Broker(即使不用Grid Control),就沒必要親自配置這些參數(shù)了,DG Broker會(huì)為你做好一切。
END
您可能感興趣的文章:- 關(guān)于Oracle Dataguard 日志傳輸狀態(tài)監(jiān)控問題
- ORACLE DATAGUARD中手工處理日志v$archive_GAP的方法
- Oracle刪除archivelog文件的正確方法
- Oracle WebLogic Server 12.2.1.2安裝部署教程
- oracle自動(dòng)清理archivelog文件的具體方法
- Oracle數(shù)據(jù)庫(kù)由dataguard備庫(kù)引起的log file sync等待問題