資料庫例項有buffercache,buffercache中有很多buffer
buffercache裡面單獨有一塊記憶體區域用來記錄,有很多鏈是chain
lru鏈:least recent use最近最少使用,lru上鏈的是乾淨塊
lruw鏈:least recently used write,也叫做dirty list,是髒資料塊鍊錶
lru鏈是將乾淨和可用的塊串起來,當從buffercache裡面找到可用塊時就找lru鏈
lruw是將髒塊鏈起來,將來dbwr要將髒塊寫到磁碟上時就訪問lruw這個鏈,我們之所以把塊鏈起來,就是為了組織和管理這些塊。
總之,不同的鏈有不同的功能!!
oracle buffercache裡面有一種鏈叫檢查點佇列鏈----checkpoint query鏈
首先來講他是乙個鏈,鏈結的是buffer,鏈的是塊
檢查點佇列也連線髒塊
髒塊鏈結在lruw上,是通過塊的使用頻率(冷/熱)來鏈結的,經常訪問的在熱端,不經常訪問的在冷端,而在冷端的塊會先將資料寫入磁碟,之後就可以被重複使用。
但是檢查點佇列連線髒塊,是通過塊第一次髒的時間點連線起來。
注意:1.檢查點佇列裡對應的塊是髒塊
2.按照髒塊第一次髒的時間點進行連線
rba redoblockaddress 日誌塊位址 對塊進行修改後會產生日誌,rba就是日誌塊的位址
塊中有兩個位址
lrba 塊第一次被髒的日誌位址
hrba 塊最近一次髒的日誌位址
注意:檢查點佇列是按照lrba將髒塊連線在一起
最早髒的塊對應的日誌以下存放的是除最早塊外其他髒塊對應的日誌
日誌按照時間的順序記錄著塊的修改
ckpt程序----檢查點程序有兩種工作的方式
1.完全檢查點:當完全檢查點發生後,ckpt程序會觸發dbwr,將所有的髒塊寫到磁碟上;
什麼時候發生完全檢查點?
------資料庫正常執行時,只有在正常關閉資料庫時才會發生完全檢查點
什麼時候發生增量檢查點?
-------資料庫在正常執行時是幾乎不會發生完全檢查點,但會發生增量檢查點,oracle每個3秒鐘發生增量檢查點。
那麼在增量檢查點發生時,ckpt程序將檢查佇列的最早髒的資料塊對應的lrba位址記錄到控制檔案中。
記住:增量檢查點是每隔3秒鐘發生一次!!!
on disk rba----current中記錄的最新的日誌位址
alter system flush buffer_cache;---將所有的髒塊寫到磁碟上
oracle檢查點checkpoint資訊
1 關於checkpoint的概述 checkpoint是oracle在資料庫一致性關閉 例項恢復和oracle基本操作中不可缺少的機制,包含以下相關的含義 a 檢查點的位置 checkpoint position 為一種資料結構,在redo流中記錄的scn號是在進行資料庫例項恢復起始位置。檢查點的...
Oracle檢查點的型別
oracle檢查點的型別 ckpt負責把檢查點寫入控制檔案和資料檔案頭。檢查點有以下型別 thread checkpoints 其為資料庫檢查點,在以下情況下會出現這種檢查點 一致性關閉資料庫 alter systerm checkpoint語句 online redo log file的切換 al...
oracle檢查點checkpoint資訊
1 關於checkpoint的概述 checkpoint是oracle在資料庫一致性關閉 例項恢復和oracle基本操作中不可缺少的機制,包含以下相關的含義 a 檢查點的位置 checkpoint position 為一種資料結構,在redo流中記錄的scn號是在進行資料庫例項恢復起始位置。檢查點的...