假設數據庫存在兩個日志組log1和log2,首先,--log1--log2--log1,此時(log2切換到log1)觸發checkpoint,該checkpoint will flush dirty block to datafile,從而觸發DBWn書寫dirty buffer,等到log1覆蓋的dirty block全部被寫入datafile后才能使用log1(
假設數據庫存在兩個日志組log1和log2,首先,-->log1-->log2-->log1,此時(log2切換到log1)觸發checkpoint,該checkpoint will flush dirty block to datafile,從而觸發DBWn書寫dirty buffer,等到log1覆蓋的dirty block全部被寫入datafile后才能使用log1(循環使用),如果DBWn寫入過慢,LGWR必須等待DBWn完成,則這時會出現“checkpoint not completed!”
別人的回答是
log1-> log2, trigger checkpoint 1
after log2 is full,
log2-> log1, trigger checkpoint 2
but if checkpoint 1 is still not finished, then LGWR must wait. This is "logfile switch (checkpoint incompleted)" event.
我的理解是
1.檢查點完成,才能順利切換。
2.checkpoint1阻塞了log2->log1的切換。
3.沒有可用的redo日志,會阻塞數據正常使用,這時數據庫是短暫hang住的。(原因如下)
不知道對不對,請高人指正~
Before a change is done in the buffer cache a change vector (file, block, row, value) about this change is written to the redo buffer. First the change of the undo block to be made soon is tracked (L). Then the change is done in the buffer cache (M). Then
the change of the table block to be made soon is tracked (N). Then the insert to the table block is done in the buffer cache (O). All actions up to now where done by the server process (P). Finally it returns the control to the client process (Q).
redo無法試用,導致事務不能正常進行。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com