在Oracle里面,檢查點(diǎn)分為三種:完全檢查點(diǎn)、增量檢查點(diǎn)、部分(臨時(shí))檢查點(diǎn)
NAME TYPE VALUE
SQL> ! cp
------------------------------------ ----------- ---------
實(shí)例恢復需要把實(shí)例異常關(guān)閉前沒(méi)有寫(xiě)入到磁盤(pán)的臟數據通過(guò)日志進(jìn)行恢復,如果臟塊過(guò)多,實(shí)例恢復的時(shí)間也會(huì )很長(cháng),檢查點(diǎn)的發(fā)生可以減少臟塊的數量,從而提高實(shí)例恢復的時(shí)間。
如果初始化參數LOG_CHECKPOINTS_TO_ALERT設置為T(mén)RUE,則有關(guān)每個(gè)檢查點(diǎn)的信息都記錄在alert_$ORACLE_SID.log 文件內。該參數缺省值為FALSE,表示不記錄檢查點(diǎn)。
DBA手工命令干預(alter system checkpoint)
引起增量檢查點(diǎn)的條件有:
SQL> ALTER TABLESPACE tablespace_name BIGEN BACKUP; //進(jìn)入熱備份狀態(tài)(鎖住數據文件頭,并記錄塊變化日志)
觸發(fā)DBWn進(jìn)程將buffer cache中相關(guān)的數據臟塊都會(huì )寫(xiě)入相應的數據文件
fast_start_mttr_target integer 90
HRBA :High cache RBA(buffer cache中臟塊最近一次變臟的時(shí)候產(chǎn)生重做日志記錄在redo log file中對應的地址)
完全檢查點(diǎn)會(huì )觸發(fā)DBWn將buffer cache里面所有的臟數據塊寫(xiě)入相應的數據文件中(即使事務(wù)未提交),并且同步數據文件頭和控制文件中的信息,保證數據庫的一致性。
一般所說(shuō)的checkpoint是一個(gè)數據庫事件(event),checkpoint事件由checkpoint進(jìn)程(LGWR/CKPT進(jìn)程)發(fā)出,當checkpoint事件發(fā)生時(shí)DBWn會(huì )將臟塊寫(xiě)入到磁盤(pán)中,同時(shí)數據文件和控制文件的文件頭也會(huì )被更新以記錄checkpoint信息。
System altered.
SQL> alter system set fast_start_mttr_target=90;
SQL> show parameter fast_start_mttr_target
System altered.
該參數控制數據庫對單個(gè)實(shí)例執行崩潰恢復所花費的時(shí)間量(以秒為單位,默認為0,最大值為3600)。
RBA :Redo Block Address(重做日志塊的地址,相當于數據文件中的rowid,可以通過(guò)該地址定位重做日志塊)
數據庫正常shutdown(immediate,transcational,normal)
增量檢查點(diǎn)
on disk RBA:redo log file中狀態(tài)為CURRENT的最后一條日志地址
logfile block number(日志文件塊編號)
啟用快速啟動(dòng)檢查點(diǎn)功能時(shí),Oracle將自動(dòng)根據工作負載情況計算增量檢查點(diǎn)的頻率(間接影響DBWn進(jìn)程的頻率),以便達到請求的MTTR。如果將該值設置為0, 將禁用此功能。(但工作負載檢查無(wú)法關(guān)閉)
log_checkpoint_timeout參數用于表示檢查點(diǎn)位置和重做日志文件末尾之間的時(shí)間間隔,以秒為單位,默認情況下是1800秒。
這是指將臟數據寫(xiě)入到硬盤(pán),保證內存和磁盤(pán)上的數據是一樣的;
增量檢查點(diǎn)并不更新控制文件中系統SCN、文件SCN、結束SCN以及數據文件頭部的開(kāi)始SCN,而是每隔3秒由CKPT進(jìn)程將檢查點(diǎn)隊列中第一個(gè)臟塊所對應的LRBA地址(即檢查點(diǎn)的位置,前滾起點(diǎn))記錄到控制文件中.
在Oracle8i之前,數據庫的發(fā)生的檢查點(diǎn)都是完全檢查點(diǎn)。
保證數據庫的一致性。
部分檢查點(diǎn)
Checkpoint的主要作用:
SQL> alter system switch logfile;
表空間下線(xiàn)/只讀
SQL> ALTER TABLESPACE tablespace_name READ ONLY;
CKPTQ:Checkpoint Queue(檢查點(diǎn)隊列)檢查點(diǎn)隊列中的數據塊記錄著(zhù)每個(gè)數據塊的LRBA地址
完全檢查點(diǎn)在8i之后只有在下列兩種情況下才會(huì )發(fā)生:
完全檢查點(diǎn)
logfile sequence number(日志文件序列號)
在數據庫系統中,寫(xiě)日志和寫(xiě)數據文件是數據庫中IO消耗最大的兩種操作,在這兩種操作中寫(xiě)數據文件屬于分散寫(xiě),寫(xiě)日志文件是順序寫(xiě),因此為了保證數據庫的性能,通常數據庫都是保證在提交(commit)完成之前要先保證日志都被寫(xiě)入到日志文件中,而臟數據塊則保存在buffer cache中再不定期的分批寫(xiě)入到數據文件中。也就是說(shuō)日志寫(xiě)入和提交操作是同步的,而數據寫(xiě)入和提交操作是不同步的。這樣就存在一個(gè)問(wèn)題,當一個(gè)數據庫崩潰的時(shí)候并不能保證緩存里面的臟數據全部寫(xiě)入到數據文件中,這樣在實(shí)例啟動(dòng)的時(shí)候就要使用日志文件進(jìn)行恢復操作,將數據庫恢復到崩潰之前的狀態(tài),以保證數據的一致性。檢查點(diǎn)就是這個(gè)過(guò)程中的重要機制,通過(guò)它來(lái)確定,恢復時(shí)哪些重做日志應該被掃描并應用于恢復。
SQL> ALTER TABLESPACE tablespace_name OFFLINE;
fast_start_io_target參數用于表示數據庫發(fā)生Instance Recovery的時(shí)候需要產(chǎn)生的IO總數,它通過(guò)v$filestat的AVGIOTIM來(lái)估算的。(9i以后已經(jīng)廢棄)
由三個(gè)部分組成:4byte+4byte+2byte
但如果是由日志切換所引起的增量檢查點(diǎn),則同時(shí)還會(huì )將LRBA地址記錄到每個(gè)數據文件頭中
SQL> ALTER TABLESPACE tablespace_name END backup; //退出熱備份(解鎖數據文件頭)
byte offset into the block(重做日志記錄在日志塊中的起始偏移字節數)
縮短實(shí)例恢復的時(shí)間。
日志切換
熱備份(熱備份表空間的時(shí)候,為了避免redo log被覆蓋,數據庫必須運行在歸檔模式下)
fast_start_mttr_target參數(mttr:Mean Time To Recovery 快速啟動(dòng)平均故障恢復時(shí)間)
LRBA :Low cache RBA(buffer cache中臟塊第一次變臟的時(shí)候產(chǎn)生重做日志記錄在redo log file中對應的地址,即當前檢查點(diǎn)隊列的位置)
引起部分檢查點(diǎn)的條件有:
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站