真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

(轉(zhuǎn))Oracle實例恢復(fù)詳解MTTR

MTTR-Mean Time To Recover
MTBF-Mean Time Between Failures

 

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比鎮(zhèn)原網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式鎮(zhèn)原網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋鎮(zhèn)原地區(qū)。費用合理售后完善,十多年實體公司更值得信賴。

先要明白一些概念:

日志文件中的信息為了當(dāng)系統(tǒng)出現(xiàn)failure時,保證事務(wù)可以恢復(fù)。當(dāng)用戶事務(wù)完成發(fā)出commit時,總是先等待LGWR進程將事務(wù)所需的redo信息寫到日志文件(之前可能在redo buffer中)后,才會收到commit complete信息。

DBWR進程總是比LGWR進程寫的速度慢(DBWR進程是隨機寫,LGWR進程是順序?qū)?,隨機寫比順序?qū)懸?/P>

當(dāng)DBWR進程要將緩存區(qū)中的信息寫入到數(shù)據(jù)文件時,會先通知LGWR進程將事務(wù)相關(guān)的redo信息寫入到日志文件。

SCN可以理解為一個標簽,ORACLE對數(shù)據(jù)庫中的每個操作都打上一個標簽。這個標簽是順序增加的。永遠不會歸0(除非數(shù)據(jù)庫重建)

CHECKPOINT是ORACLE為了記錄哪些數(shù)據(jù)已經(jīng)被寫入到數(shù)據(jù)文件中。

CHECKPOINT的作用就是要保證當(dāng)checkpoint發(fā)生時,這個checkpoint SCN之前的數(shù)據(jù)都要由DBWR寫入到數(shù)據(jù)文件中,而在DBWR寫之前,又會觸發(fā)LGWR進程將相關(guān)的redo信息寫入到日志文件中。這樣,checkpoint完成后,發(fā)生instance failure時就不再需要恢復(fù)這個checkpoint SCN前的信息.

理解實例恢復(fù)的相關(guān)信息:

Instance Recovery所需要的信息,就是最近一次checkpoint之后到日志文件結(jié)尾的這些redo信息。
因為checkpoint之前的數(shù)據(jù)都已經(jīng)一致性地寫入到數(shù)據(jù)文件中了,而之后的數(shù)據(jù)可能有一部分已經(jīng)寫進數(shù)據(jù)文件,而有一部分沒有寫進數(shù)據(jù)文件。

Instance Recovery所需要的時間,將數(shù)據(jù)文件 從最近一次checkpoint開始,恢復(fù)到控制文件中記錄的這個數(shù)據(jù)文件的最后一個SCN值為止,應(yīng)用這兩者之間redo信息的時間就是instance recovery所要花費的時間。

實例恢復(fù)的調(diào)整:

由上面的信息可以總結(jié)出,實例恢復(fù)最關(guān)鍵的問題的就是最近一次CHECKPOINT發(fā)生的時間,以及CHECKPOINT發(fā)生的頻率。只有確認了最近一次CHECKPOIN發(fā)生的時間點,才能確定恢復(fù)所需的redo信息,以及恢復(fù)所要花費的時間。

對于instance recovery花費時間的調(diào)優(yōu),就是對參數(shù)FAST_START_MTTR_TARGE的調(diào)整,單位“秒”,最大值為3600秒。

也就是說FAST_START_MTTR_TARGET這個參數(shù)的設(shè)置會直接影響到checkpoint發(fā)生的頻率。

FAST_START_MTTR_TARGE所設(shè)置的時間就是用戶希望數(shù)據(jù)庫用在instance recovery的時間。也就是從應(yīng)用最近一次checkpoint到日志信息最后這兩個點之間redo信息所要花費的時間。

MTTR設(shè)置的時間過小的話,會造成系統(tǒng)checkpoint過于頻繁,而發(fā)生checkpoint時就要DBWR,LGWR等進程寫數(shù)據(jù)文件,產(chǎn)生物理IO,久而久之,數(shù)據(jù)庫性能會越來越慢;
MTTR設(shè)置的時間過大的話,當(dāng)實例失敗時,instance recover所花費的時間就會過長。

10g開始,數(shù)據(jù)庫可以實現(xiàn)自動調(diào)整,如果FAST_START_MTTR_TARGET=0時,可以從alert里面看到如下信息:
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
此時,數(shù)據(jù)庫會根據(jù)負載自動調(diào)整checkpoint發(fā)生的頻率。

如果要嚴格要求instance recovery時間的話,就設(shè)置FAST_START_MTTR_TARGET參數(shù),如果不是那么嚴格的話,建議用10g的自動調(diào)整。

5.4.2.5 實例恢復(fù)的原理

前面我們講到過,當(dāng)數(shù)據(jù)庫突然崩潰,而還沒有來得及將buffer cache里的臟數(shù)據(jù)塊刷新到數(shù)據(jù)文件里,同時在實例崩潰時正在運行著的事務(wù)被突然中斷,則事務(wù)為中間狀態(tài),也就是既沒有提交也沒有回滾。這時數(shù)據(jù)文件里的內(nèi)容不能體現(xiàn)實例崩潰時的狀態(tài)。這樣關(guān)閉的數(shù)據(jù)庫是不一致的。

下次啟動實例時,Oracle會由SMON進程自動進行實例恢復(fù)。實例啟動時,SMON進程會去檢查控制文件中所記錄的、每個在線的、可讀寫的數(shù)據(jù)文件的END SCN號。數(shù)據(jù)庫正常運行過程中,該END SCN號始終為空,而當(dāng)數(shù)據(jù)庫正常關(guān)閉時,會進行完全檢查點,并將檢查點SCN號更新該字段。而崩潰時,Oracle還來不及更新該字段,則該字段仍然為空。當(dāng)SMON進程發(fā)現(xiàn)該字段為空時,就知道實例在上次沒有正常關(guān)閉,于是由SMON進程就開始進行實例恢復(fù)了。

SMON進程進行實例恢復(fù)時,會從控制文件中獲得檢查點位置。于是,SMON進程到聯(lián)機日志文件中,找到該檢查點位置,然后從該檢查點位置開始往下,應(yīng)用所有的重做條目,從而在buffer cache里又恢復(fù)了實例崩潰那個時間點的狀態(tài)。這個過程叫做前滾,前滾完畢以后,buffer cache里既有崩潰時已經(jīng)提交還沒有寫入數(shù)據(jù)文件的臟數(shù)據(jù)塊,也還有事務(wù)被突然終止,而導(dǎo)致的既沒有提交又沒有回滾的事務(wù)所弄臟的數(shù)據(jù)塊。

前滾一旦完畢,SMON進程立即打開數(shù)據(jù)庫。但是,這時的數(shù)據(jù)庫中還含有那些中間狀態(tài)的、既沒有提交又沒有回滾的臟塊,這種臟塊是不能存在于數(shù)據(jù)庫中的,因為它們并沒有被提交,必須被回滾。打開數(shù)據(jù)庫以后,SMON進程會在后臺進行回滾。

有時,數(shù)據(jù)庫打開以后,SMON進程還沒來得及回滾這些中間狀態(tài)的數(shù)據(jù)塊時,就有用戶進程發(fā)出讀取這些數(shù)據(jù)塊的請求。這時,服務(wù)器進程在將這些塊返回給用戶之前,由服務(wù)器進程負責(zé)進行回滾,回滾完畢后,將數(shù)據(jù)塊的內(nèi)容返回給用戶。

Oracle提供了初始化參數(shù)fast_start_mttr_target讓我們指定完成實例恢復(fù)所花費的時間(該時間只包括前滾并打開數(shù)據(jù)庫的時間,不包括回滾的時間),該參數(shù)以秒為單位。比如我們設(shè)置該參數(shù)為30,表示如果發(fā)生實例崩潰,那么下次重新啟動時,數(shù)據(jù)庫最多用30秒的時間完成前滾,并打開數(shù)據(jù)庫。在數(shù)據(jù)庫運行過程中,就會根據(jù)該時間,來估算30秒大致對應(yīng)多少量的重做記錄,這實際上就決定了檢查點位置,如圖5-8所示。

圖5-8 檢查點隊列3

網(wǎng)站名稱:(轉(zhuǎn))Oracle實例恢復(fù)詳解MTTR
標題鏈接:http://weahome.cn/article/ihsjse.html

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部