檢查點(diǎn)SCN深入研究

檢查點(diǎn)SCN深入研究

ID:46465941

大小:81.50 KB

頁數(shù):7頁

時(shí)間:2019-11-24

檢查點(diǎn)SCN深入研究_第1頁
檢查點(diǎn)SCN深入研究_第2頁
檢查點(diǎn)SCN深入研究_第3頁
檢查點(diǎn)SCN深入研究_第4頁
檢查點(diǎn)SCN深入研究_第5頁
資源描述:

《檢查點(diǎn)SCN深入研究》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、檢查點(diǎn)SCN深入研丸檢查點(diǎn)概述大多數(shù)關(guān)系型數(shù)據(jù)庫都采用“在提交時(shí)并不強(qiáng)迫針對數(shù)據(jù)塊的修改完成”而是“提交時(shí)保證修改記錄(以重做日志的形式)寫入日志文件”的機(jī)制,來獲得性能的優(yōu)勢。這句話的另外一種描述是:當(dāng)用戶提交事務(wù)時(shí),寫數(shù)據(jù)文件是”異步”的,寫日志文件是”同步”的。這就可能導(dǎo)致數(shù)據(jù)庫實(shí)例崩潰吋,內(nèi)存中的DB_Buffer中的修改過的數(shù)據(jù),可能沒有寫入到數(shù)據(jù)塊中。數(shù)據(jù)庫在重新打開時(shí),需要進(jìn)行恢復(fù),來恢復(fù)DBBuffer中的數(shù)據(jù)狀態(tài),并確保已經(jīng)提交的數(shù)據(jù)被寫入到數(shù)據(jù)塊中。檢查點(diǎn)是這個(gè)過程中的重要機(jī)制,通過它來確定,恢復(fù)時(shí)哪些重做口志應(yīng)該被掃描并應(yīng)用于恢復(fù)。要了解這個(gè)檢查點(diǎn),首先要

2、知道checkpointqueu概念,檢查點(diǎn)發(fā)生后,觸發(fā)dbwn,CKPT獲取發(fā)牛檢查點(diǎn)時(shí)對應(yīng)的SCN,通知DBWn要寫到這個(gè)SCN為止,dbwr寫dirtybuffer是根據(jù)buffer在被首次modify的時(shí)候的時(shí)間的順序?qū)憣?,也就是buffer被modify的時(shí)候會進(jìn)入一個(gè)queue(checkpointqueue),dbwr就根據(jù)queue從其中批量地寫到數(shù)據(jù)文件。由于這里有一個(gè)順序的關(guān)系,所以dbwr的寫的進(jìn)度就是可衡量的,寫到哪個(gè)buffer的時(shí)候該buffer的首次變化時(shí)候的sen就是當(dāng)前所有數(shù)據(jù)文件block的最新sen,但是由于無法適時(shí)的將dbwr的進(jìn)度記錄下

3、來,所以oracle選擇了一些策略。其中就包括ckpt進(jìn)程的檢查點(diǎn)和心跳。檢查點(diǎn)發(fā)生以后,CKPT進(jìn)程檢查checkpointqueue(也就是臟塊鏈表)是否過長,如果是,則觸發(fā)DBWn,將一部分臟塊寫入數(shù)據(jù)文件,從而縮短checkpointqueueocheckpoint發(fā)生時(shí),一方面通知dbwr進(jìn)行下一批寫操作,(dbwr寫入的時(shí)候,一次寫的塊數(shù)是有一個(gè)批量寫的隱藏參數(shù)控制的。)另一方而,oracle采用了一個(gè)心跳的概念,以3秒的頻率將dbwr寫的進(jìn)度反應(yīng)到控制文件中,也就是把dbwr當(dāng)前剛寫完的dirtybuffer對應(yīng)的sen寫入數(shù)據(jù)文件頭和控制文件,這就是檢查點(diǎn)sen

4、。這個(gè)3秒和增量檢查點(diǎn)不是一個(gè)概念,3秒只是在控制文件中,ckpt進(jìn)程去更新當(dāng)前dbwr寫到哪里了,這個(gè)對于ckpt進(jìn)程來說叫heartbeat,heartbeat是3秒一次,3秒可以看作不停的檢查并記錄檢查點(diǎn)執(zhí)行情況(DBWR的寫進(jìn)度)。檢查點(diǎn)發(fā)生Z后數(shù)據(jù)庫的數(shù)據(jù)文件、控制文件處于一致狀態(tài)的含義是不需要進(jìn)行介質(zhì)恢復(fù),只表示數(shù)據(jù)文件頭一致,但是并不表示數(shù)據(jù)文件內(nèi)容一致,因?yàn)閿?shù)據(jù)文件內(nèi)容可能在沒有發(fā)牛檢查點(diǎn)的其他情況下的dbwr寫數(shù)據(jù)文件,這樣數(shù)據(jù)文件內(nèi)容就不一致,若掉電需要進(jìn)行崩潰恢復(fù)。二、觸發(fā)的條件這里需要明片兩個(gè)概念”完全檢查點(diǎn)和增量檢查點(diǎn)”的區(qū)別。增量檢查點(diǎn)(increm

5、entalcheckpoint)oracle8以后推lBYincrementalcheckpoint的機(jī)制,在以前的版木里每checkpoint時(shí)都會做一個(gè)fullthreadcheckpoint,這樣的話所有臟數(shù)據(jù)會被寫到磁盤,巨大的i/o對系統(tǒng)性能帶來很大影響。為了解決這個(gè)問題,oracle引入了checkpointqueue機(jī)制,每一個(gè)臟塊會被移到檢查點(diǎn)隊(duì)列里面去,按照lowrdb(第一次對此塊修改對應(yīng)的redoblockaddress)來排列,靠近檢查點(diǎn)隊(duì)列尾端的數(shù)據(jù)塊的lowrba值是最小的,而且如果這些贓塊被再次修改后它在檢查點(diǎn)隊(duì)列里的順序也不會改變,這樣就保證了越

6、早修改的塊越早寫入磁盤。每隔3秒鐘ckpt會去更新控制文件和數(shù)據(jù)文件,記錄checkpoint執(zhí)行的情況。在運(yùn)行的Oracle數(shù)據(jù)屮,有很多事件、條件或者參數(shù)來觸發(fā)檢查點(diǎn)。比如當(dāng)已通過正常事務(wù)處理或者立即選項(xiàng)關(guān)閉例程時(shí);(shutdownimmediate或者Shutdownnormal;)當(dāng)通過設(shè)置初始化參數(shù)LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT和FAST_START_IO_TARGET強(qiáng)制時(shí);當(dāng)數(shù)據(jù)庫管理員手動請求時(shí);(ALtersystemcheckpoint)altertablespace???offline;每次日

7、志切換時(shí);(altersystemswitchlogfile)需要說明的是,altersystemswitchlogfile也將觸發(fā)完全檢查點(diǎn)的發(fā)生。alterdatabasedatafile...offline不會觸發(fā)檢查點(diǎn)進(jìn)程。如果是單純的offlinedatafile,那么將不會觸發(fā)文件檢查點(diǎn),只有針對offlinetablespace的時(shí)候才會觸發(fā)文件檢查點(diǎn),這也是為什么onlinedatafile需要mediarecovery而onlinetablespace不需要。對于表空間的o

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時(shí)可能會顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。