對“checkpoint not completed!”的理解 (zt)
假設資料庫存在兩個日誌組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!”
作者:ZALBB 時間:04-09-28 16:42
我理解的比較簡單:歸檔日誌沒資料庫寫日誌快。比如:資料庫有兩組日誌,日誌1還在歸檔,
日誌2已經被寫滿了,此時要覆蓋日誌1,但日誌1還沒被歸檔完畢(COPY完畢),結果就出現
此提示。
解決方法:增加日誌組,多些緩衝時間,以便歸檔。
作者:biti_rainy 時間:04-09-28 16:58
是 lgwr等待將被覆蓋的 logfile 對應的 dirty buffer 被寫入資料檔案,也就是io 繁忙導致 dbwr寫太慢
作者:ZALBB 時間:04-09-28 17:52
quote:
最初由 biti_rainy 釋出
是 lgwr等待將被覆蓋的 logfile 對應的 dirty buffer 被寫入資料檔案,也就是io 繁忙導致 dbwr寫太慢
若是這種解釋,那就不是增加日誌組可解決了。
作者:biti_rainy 時間:04-09-28 18:03
quote:
最初由 ZALBB 釋出
若是這種解釋,那就不是增加日誌組可解決了。
如果大量的IO只是一個段時期的高峰,增加日誌組可以延緩這個週期,從而可能會解決這個問題
如果你的系統永遠都處於高峰期?那恐怕你需要使用更高速的儲存裝置和更好的主機
歸檔沒完畢的提示資訊是不一樣的,當然歸檔沒有完成通常也是IO問題
作者:nattyneat 時間:04-09-29 09:45
如果歸檔沒有完成的話,Alert中提示如下:
Thread 1 cannot allocate new log, sequence 12
All online logs needed archiving
程式碼:
SQL> connect sys/richel@testdb as sysdba; Connected. SQL> archive log list; Database log mode Archive Mode
Automatic archival Enabled
Archive destination D:oracleoradataaxisoft2archive
Oldest online log sequence 383
Next log sequence to archive 385
Current log sequence 385
SQL> alter system archive log stop;
System altered.
SQL> archive log list; Database log mode Archive Mode
Automatic archival Disabled
Archive destination D:oracleoradataaxisoft1archive
Oldest online log sequence 3
Next log sequence to archive 7
Current log sequence 7
SQL> SELECT COUNT(*) FROM richel.test;
COUNT(*)
----------
6000
SQL> insert into richel.test select * from richel.test;
6000 rows created.
SQL> insert into richel.test select * from richel.test;
12000 rows created. SQL> insert into richel.test select * from richel.test;
(此時系統hang,檢視alert,發現上述警告資訊。)
開啟另一個會話:
SQL> alter system archive log group 1;
System altered.
而後,插入得以繼續完成。
SQL> commit;
Commit complete.
作者:Niy38 時間:04-09-29 14:08
Re: 對“checkpoint not completed!”的理解,歡迎大家討論
quote:
最初由 nattyneat 釋出對“checkpoint not completed!”的理解,歡迎大家討論
假設資料庫存在兩個日誌組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!”
My understanding:
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.
作者:Niy38 時間:04-09-29 14:11
quote:
最初由 ZALBB 釋出我理解的比較簡單:歸檔日誌沒資料庫寫日誌快。比如:資料庫有兩組日誌,日誌1還在歸檔,
日誌2已經被寫滿了,此時要覆蓋日誌1,但日誌1還沒被歸檔完畢(COPY完畢),結果就出現
此提示。
解決方法:增加日誌組,多些緩衝時間,以便歸檔。
This is event "logfile switch ( archiving needed )", different
from "logfile switch ( checkpoint incomplete)"
作者:remen 時間:04-09-29 15:05
那麼如果db是非歸檔模式,僅僅在高峰時間出現
Thread 1 cannot allocate new log, sequence 286857
Checkpoint not complete
這樣的情況的話,應該如何解決呢?
作者:remen 時間:04-09-29 15:08
增加日誌組??
作者:biti_rainy 時間:04-09-29 15:33
quote:
最初由 remen 釋出那麼如果db是非歸檔模式,僅僅在高峰時間出現
Thread 1 cannot allocate new log, sequence 286857
Checkpoint not complete
這樣的情況的話,應該如何解決呢?
Checkpoint not complete
---------- 很明顯,檢查點沒完成,增加日誌組和日誌檔案大小,當然有限考慮io問題
作者:remen 時間:04-09-29 15:40
謝謝回覆!
但是我們的系統平時大概18分鐘切換一次日誌,唯獨在中午執行mrp計劃的時候切換比較頻繁,同時提示檢查點無法完成,所以我覺得日誌檔案的大小應該差不多了,增加日誌組才是首選,請問我的推斷正確嗎?
作者:biti_rainy 時間:04-09-29 16:05
難道有什麼不正確的嗎? 都到這個份上了幹嗎那麼懷疑自己呢
作者:remen 時間:04-09-29 16:16
呵呵,謝謝!
作者:remen 時間:04-10-07 09:36
另外,如果出現Checkpoint not complete,會造成什麼後果呢?
寫日誌的程式等待歸檔完成???那麼再歸檔沒完成之前的這段時間日誌往哪個日誌組寫呢?
比如現在group 2寫滿了,要開始寫group 1,但是1的歸檔還沒完成,這個時候就出現了Checkpoint not complete,那麼這個時候1是不能寫的,那日誌往哪裡寫呢?繼續重用2??這樣的話,2中的資料不就被覆蓋了?它可還沒有歸檔呢呀!
另外,上面討論的都是歸檔模式下的,但是非歸檔呢?如果出現Checkpoint not complete意味著什麼呢?DBWn速度太慢??
作者:biti_rainy 時間:04-10-07 11:19
Checkpoint not complete 那資料庫就暫時地hang住了唄
非歸檔,當然是 dbwr 速度太慢(本質上就是io存在問題)
作者:remen 時間:04-10-07 11:30
謝謝!
既然這樣,那麼如果這時候資料庫遭到破壞,需要利用歸檔日誌來恢復,僅僅憑藉這些日誌能夠完全恢復嗎?
因為既然資料庫hang住了,那麼這段時間內發生的資料庫的改變就沒有地方可以寫,也就造成了歸檔日誌的不完整,對嗎?
作者:biti_rainy 時間:04-10-07 11:39
ft
資料庫hang住了,這段時間資料庫能發生改變嗎?無法產生任何日誌!也就意味著資料庫跟死了一樣,普通使用者都無法登陸!
所有時間均為 . 現在時間是 09:41.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-84823/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 對checkpoint的理解(轉載)
- checkpoint詳解(zt)
- 對checkpoint的理解一文的學習
- [zt]Oracle檢查點ckpt (checkpoint)Oracle
- zt_checkpoint相關知識
- zt_checkpoint檢查點解密(轉)解密
- 理解 oracle 的 “lsnrctl status”(ZT)Oracle
- 關於scn的理解 (zt)
- zt 對C#下函式,委託,事件的一點理解!C#函式事件
- 關於Oracle GoldenGate中Extract的checkpoint的理解OracleGo
- 物理data guard原理的理解(zt)
- 針對enq: KO - fast object checkpoint的優化ENQASTObject優化
- SCN、Checkpoint、例項恢復介質恢復理解
- Postgresql 的CheckpointSQL
- Flink 非對齊Unaligned的checkpoint(原始碼分析)原始碼
- 對 REST 的理解REST
- 對rose 的理解ROS
- 對Join的理解
- Spark效能優化:對RDD持久化或CheckPoint操作Spark優化持久化
- [20131028]理解archivelog completed,before,after,until-time.txtHive
- 我對抽象的理解抽象
- 對於BFC的理解
- 對事務的理解
- 對於MVVM的理解MVVM
- 對VUE框架的理解Vue框架
- 我對引擎的理解
- 對測試的理解
- 對CustomHTTPProtocol的理解HTTPProtocol
- 自己對Binder的理解
- 加深對 JavaScript This 的理解JavaScript
- 對ORACLE SCN的理解Oracle
- 我對SNS的理解
- 對值物件的理解物件
- 對Oracle cursor的理解Oracle
- 對/etc/oratab的理解
- 對HTML中"#"的理解HTML
- 總結-理解和使用aix的日誌系統(zt)AI
- Checkpoint和SCN的解析