您好,登錄后才能下訂單哦!
SCN(system change number) 系統更改號
RBA (redo block address)onlin redo log的重做塊地址
select dbms_flashback.get_system_change_number from dual; 系統當前的SCN
SCN的更新觸發是由commit來進行的,每隔3秒種系統也都會刷新一次SCN
CKPT進程是在checkpoint發生的時候將數據庫當前的SCN更新入數據庫文件頭和控制文件當中,DBWn進程將buffer cache中的臟數據塊(dirty block)寫到數據文件中,而是ckpt在更新控制文件和數據文件頭的有關信息后,通知DBWn進程,產生一個檢查點,在產生檢查點的時候,DBWn進程會將buffer cache中的臟數據(當前online redo log對應的臟數據),寫入我們的數據文件當中,基本就是這么一個循環過程,ckpt進程還會在控制文件當中記錄RBA,這個地址用來標志實例恢復的時候需要從日志中的那個位置開始,也就是一個checkpoint對應一個rba,當instance recovery(實例恢復)的時候oracle就會知道從那個檢查點開始在redo的那個rba開始介質恢復!
創建檢查點(checkpoint)的條件:
1.alter system checkpoint
2.alter system switch logfile
3.DBWn進程寫出臟塊
查看控制文件中的scn:執行checkpoint后,(存于控制文件中)Oracle會更新當前控制文件中的System checkpoint SCN
select checkpoint_change# from v$database;
查看控制文件中記錄的數據文件信息中的scn:(存于控制文件中)控制文件中記錄了Oracle各個數據庫文件的位置和信息,其中當然也包括了Datafile checkpoint SCN,因此在執行checkpoint的時候,Oracle還會去更新控制文件中所記錄的各個數據文件的datafile checkpoint SCN
select checkpoint_change# from v$datafile;
查看數據文件頭中的start scn:(存于數據文件頭中)執行checkpoint時,Oracle會更新存放在各個實際的數據文件頭的Start SCN(注意絕對不會是控制文件中),這個SCN存在的目的是用于檢查數據庫啟動過程中是否需要做media recovery(介質恢復)
select checkpoint_change# from v$datafile_header;
查看控制文件中數據文件的end scn:(存于控制文件中)每一個所記錄的數據文件頭都有一個對應的End SCN,這個End SCN一定是存在于控制文件當中。這個SCN存在的絕對意義主要是用來去驗證數據庫啟動過程中是否需要做instance recovery(實例恢復)。
select name,last_change# from v$datafile
SCN與恢復的關系,可參考:
https://blog.csdn.net/dba_waterbin/article/details/7758641
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。