關於oracle SCN 的討論
1、SCN存在redo log檔案,control檔案、資料檔案;
2、oracle正常執行時,control檔案的SCN是個很大的數,與redo log檔案、資料檔案的SCN不同,正常關閉時,做完checkpoint後,三者的SCN值相同;
日誌檔案中scn有起始和結束2個(高低),在current log中高scn同樣為 無窮大
3、當一個事務commit成功時,redo log檔案中的SCN+1,當該事務所做的修改寫入資料檔案後,資料檔案的SCN+1;
commit的時候加一,其他很多時候也會加1,只要資料庫發生了變化都會增加。 資料寫入資料檔案scn不是加1而是ckpt 更新,檢查點發生的時候才修改資料檔案頭的 檢查點計數和更新scn
4、所以,當資料庫發現SCN不一致,應該是
redo log檔案中的SCN>=資料檔案中的SCN
5、疑問:
是不是如果一個事務比較大,在事務提交前就發生redo log entries、data buffer的寫入,此時斷電,則資料檔案、redo log檔案的SCN沒有+1,且相同,但控制檔案SCN不同,資料庫startup時發生回滾。
資料檔案是由ckpt程式更新檔案頭的,scn不是加1,而是更新為檢查點發生那時的scn,回滾是根據回滾段頭的事務表狀態來進行的
資料寫入資料檔案scn不是加1而是ckpt 更新,檢查點發生的時候才修改資料檔案頭的 檢查點計數和更新scn
是不是應該這麼說?:
當ckpt 更新時發生資料寫入,同時修改資料檔案頭的 檢查點計數和更新scn 。當出現其他情況下的資料寫入時(如無空閒緩衝等),不發生ckpt ,但SCN會增加。
這個時候修改的是資料塊但不是資料檔案頭,只有檢查點發生的時候才更新資料檔案頭,也就是說只有 ckpt 程式更新資料檔案頭(oracle8以前如果沒有ckpt程式就是lgwr更新),dbwr只寫資料塊
commit的時候加一,其他很多時候也會加1,只要資料庫發生了變化都會增加。
很多時候,能否舉一些例子
dml一發生即使沒有提交也會增加scn, job程式一樣產生scn,只要對資料庫中檔案發生任何的改變都有可能產生scn,SCN: system change number, not system commit number .也就是 系統發生變化 所產生的一個時間點標誌。不是提交的標誌,只是因為提交也是系統的變化之一而已
CKPT發生時REDO LOG紀錄對應SCN和CHECK POINT SEQUENCE#並立即由LGWR將REDO LOG BUFFER中的內容全部寫入REDO LOGFILE;同時DBWR將BUFFER CACHE內容寫入DATEFILE。
待LGWR和DBWR完成工作,CKPT將LOG SEQUENCE#、CHECK POINT SEQUENCE#和SCN寫入DATAFILE和CONTROLFILE檔案頭。
檢查點的發生,跟寫日誌檔案是沒有必然聯絡的
檢查點通知 DBWR 寫資料檔案,寫完後ckpt更新控制檔案 和資料檔案頭
當DBWR 寫 資料塊的時候若發現 資料塊的 相關 RDBA (位於日誌檔案的位置) 的 log block 還沒有被寫入日誌檔案,則在dbwr寫塊之前必須通知llgwr把log buffer 中日誌寫入日誌檔案
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-664789/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 關於例項恢復的一個討論Oracle
- [技術討論]關於低耦合開發的討論
- 關於aio的設定的討論AI
- 關於部落格評論外掛的討論
- 關於神經網路的討論神經網路
- 關於rails和Grails的效能討論AI
- 關於HTTP中文翻譯的討論HTTP
- 關於業務元件相關架構的討論元件架構
- 關於oracle的share-nothing 和 share-disk HA相關討論Oracle
- 討論關於Constraint statesAI
- 關於UI的一次討論——來自專案管理群的討論UI專案管理
- 關於一個建立型模式的討論:模式
- 關於string.Empty & "" & null 的討論Null
- 關於專案經理的討論 (轉)
- 關於分類的線性模型的討論模型
- 關於SCN的理解(全面)
- 關於scn的理解 (zt)
- 討論:關於The REBIND utility and the FLUSH PACKAGE CACHEPackage
- 關於檔案寫入的原子性討論
- 關於HTTP中文翻譯的討論之二HTTP
- 關於程式設計風格的討論 (轉)程式設計
- 關於 Angular 應用 Module 的 forRoot 方法的討論Angular
- 關於網站設計的一點點討論網站
- 《快速排序》引發關於演算法的討論排序演算法
- 關於大資料和資料庫的討論大資料資料庫
- 關於按鍵掃描程式的終極討論
- 關於拉幕程式的討論和原始碼 (轉)原始碼
- 關於ora_pz程式的一些討論
- 關於資料庫作業系統的討論資料庫作業系統
- 寫得非常好的一篇關於Oracle的SCNOracle
- 關於 Service Worker 和 Web 應用對應關係的討論Web
- 關於SCN的總結測試
- [提問交流]關於onethink模型這塊的討論模型
- 關於BSS資料化轉型的幾點討論
- 一個關於月球車的筆試題--求討論筆試
- 關於 appium 獲取不到 toast 訊息的討論APPAST
- 關於如何節約資料庫連線的討論?資料庫
- 關於軟體事務記憶體(STM)的討論記憶體