Oracle資料庫檢查點未完成原因詳解

來源:互聯網
上載者:User

最近在alter日誌中發現 Checkpoint not complete 資訊
產生此問題的原因具體分析:
首先說一下checkpoint 是什嗎?
chkpoint是一個資料庫的內部機制,它存在有兩個目的:

1. 保證資料的一致性
    系統發生檢查點將出發DBWR進程將緩衝區中的髒資料區塊寫入到資料檔案,同時更新資料檔案中的SCN號,記錄聯機重做記錄檔中LRBA(low redo block address)的位置到控制檔案中,當在寫入過程中,突然執行個體崩潰,髒資料區塊沒有完全寫入到資料檔案中。當執行個體啟動的時候,會檢查控制檔案中的 終止SCN號,(四種SCN)這時候發現是空的(資料庫正常啟動並執行時候是無窮大或者保持為空白),就認為資料庫沒有正常關閉,需要執行個體恢複,於是SMON進程根據控制檔案中的SCN號,到重做記錄檔中取出重做條目重現執行個體崩潰的那個狀態。

2. 資料庫執行個體崩潰後的執行個體恢複
    當執行個體恢複的時候,到底從重做記錄檔的什麼位置開始恢複呢?檢查點checkpoint就是記錄了一個SCN號,當執行個體回複的時候從最近的這個檢查點做恢複,不必全部恢複重做日誌的內容,減少了恢復。

   日誌切換會觸發檢查點,當檢查點觸發後會引起DBWR進程將髒資料區塊寫入資料檔案,這個時候寫入資料檔案的髒資料區塊已經都寫入了聯機重做日誌中,是安全的,當日誌緩衝區的日誌寫滿需要切換記錄檔的時候,由於下一個記錄檔對應的髒資料區塊沒有完全寫入到資料檔案中,所以不能被覆蓋,於是就發生了Checkpoint not complete。

   這時候可能是磁碟的原因導致DBWR寫磁碟很慢,或者DBWR進程效率不高,以至於在發生日誌切換的時候沒有課覆蓋的記錄檔。這時候可以添加DBWR進程的數,或者添加記錄檔組,來解決這個問題。

遂添加一個日誌組:
用sysdba登入
alter database add logfile gropu 4 ‘$Oracle_HOME/oradata/SID/redo04.log’ size 100M;
切換記錄檔
alter system switch logfile;
查看當前的記錄檔是否在使用
select * from v$log

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.