天天看點

redo、dirty data、commit、checkpoint了解

redo到底是什麼東西;重做

是對資料庫修改的一個描述資訊;

比如修改了一個資料塊;在redo中會記錄什麼時間,修改了第幾個檔案的哪個資料塊,修改了什麼東西。就是一條特定格式的記錄。注意:不是記錄SQL語句。

什麼是髒資料塊啊?記憶體中的資料和檔案中的資料不一緻的。

commit會不會觸發DBWriter?不會;

dbwriter是一個很底層的程序,由oracle自己決定什麼時候啟用。

commit會不會觸發logwriter?會。隻要commit肯定會重新整理logwriter,會把redo logbuffer中的資料寫到redo log files。

commit會不會喚醒ckpt?不會。

chkpt:要麼發生日志切換,要麼超過3秒,要麼shutdownnormal,要麼alter system checkpoint

.checkpoint由ckpt程序觸發oracle進行checkpoint動作,将data buffer中的髒塊(已經寫在redo裡記錄但是沒有寫到datafile裡的)的内容寫入到data file裡并釋放站用的空間,由dbw背景程序完成,并修改controlfile和datafile的scn.

一般手工執行是由于要删除某個日志但是該日志裡還有沒有同步到datafile裡的内容,就需要手工check point來同步資料,然後就可以drop logfile group n.

checkpoint主要是用于去重新整理data buffer中髒資料到資料檔案中的。通過checkpoint來控制髒資料隊列的長度,進而來縮小下一次啟動資料庫所花費的時間。