日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

讨论oracle的反腐,关于oracle SCN 的讨论

發布時間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 讨论oracle的反腐,关于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 中日志寫入日志文件

總結

以上是生活随笔為你收集整理的讨论oracle的反腐,关于oracle SCN 的讨论的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。