深入淺出-檢查點scn
最近又開始重新檢視eygle的深入淺出了,大師的書籍確實值得一讀再讀,這裡摘要下大師的第一張資料庫啟動關閉的一些個人覺得需要細細理解的知識點。
checkponit cnt在open狀態檢驗
我們說過:當我們使用file_hdrs事件來轉儲資料檔案頭資訊時,Oracle會轉儲兩部分資訊,一部分來自控制檔案,一部分來自資料檔案,在資料庫啟動過程中,這兩部分資訊要用來進行啟動驗證。
在資料庫open的過程中,Oracle要進行檢查中包含以下兩個過程:
第一次檢查資料檔案頭中的Checkpoint cnt是否與對應控制檔案中的Checkpoint cnt一致.
如果相等,進行第二次檢查.
第二次檢查資料檔案頭的開始SCN和對應控制檔案中的結束SCN是否一致如果結束SCN等於開始SCN,則不需要對那個檔案進行恢復.
對每個資料檔案都完成檢查後,開啟資料庫.同時將每個資料檔案的結束SCN設定為無窮大.同樣正常關閉資料庫時,stop scn和資料檔案頭的啟動scn一致,如果意外關閉不進行檢查點,則控制檔案中記錄的資料檔案stop scn將無限大。
scn是oracle資料庫的內部時鐘機制,oracle透過scn來維護資料庫的一致性,維護oracle的恢復機制。
這裡個人說一下資料庫例項恢復起始點和終止點是low cache rba到on disk rba,也就是上一次檢查點寫進控制檔案中的low cache rba(記錄的是上次檢查點時將dirty寫進disk時的rba,rba上由日誌檔案序號,資料檔案序號和日誌記錄偏移量組成, 其實資料檔案頭也記錄了rba,當丟失了ctl時,資料檔案就是根據檔案頭的rba開始執行恢復的,也就是dbwn的寫出進度),而on disk rba是lgwr寫到disk上的rba,也就是lgwr的進度,而檢查點就是為了減少恢復的時間。
(CKPT每三秒會在控制檔案中記錄檢查點的位置,以表示Instance Recovery時開始恢復的日誌條目,這個概念稱為檢查點的“心跳”(heartbeat),ckpt是有心跳,每三秒會更新ctl中的mount id,當執行檢查點,dbwr從檢查點佇列按照low rba順序寫出,ckpt程式使用非常輕量級的控制檔案更新協議,將當前的對地rba寫入控制檔案,而增量檢查點則是透過fast-start checkpoint特性實現。)
資料檔案頭 控制檔案 日誌檔案 資料塊頭 事務表中都存在scn。scn隨時間而改變,但是可能並不連續,除非重建資料庫,不然scn不可能為0。
select dbms_flashback.get_system_change_number from dual--獲得資料庫當前或相近的scn
--系統當前的scn並不是在任何資料庫操作都會發生變化,scn通常在事務提交或回滾改變
1 資料檔案頭部包含了該資料檔案的checkpoint scn,表示資料檔案最近一次執行檢查點操作的scn
alter session set events 'immediate trace name file_hdrs level 10';--轉儲資料檔案頭
2 日誌檔案中包含了Low scn和Next scn
Low scn和Next scn這兩個SCN表示該日誌介於Low scn和Next scn的重做資訊,對於current的日誌檔案,其最終的scn不可知,也就無窮大了
alter system dump logfile '' --dump日誌的方式轉儲
檢查點實際上只是一個資料事件,存在的原因在於減少崩潰恢復的時間
select * from v$instance_recovery
estimated_mttr根據基於Dirty Buffer的數量和日誌快得出,此時資料庫崩潰恢復的時間為estimated_mttr。
writes_autotune欄位值就是由於自動調整檢查點執行的寫出次數,而ckpt_block_writes則是由於檢查點寫出的blocks數量
target_mttr代表期望的平均恢復事件,通常該引數應該等於fast_start_mttr_target引數設定值。當estimated_mttr接近或超過fast_start_mttr_target(v$instance_recovery target_mttr)時,將觸發檢查點,執行寫出之後,系統恢復資訊將會重新計算。
可能會出現estimated_mttr>target_mttr,可能是dbwr忙於寫出,或checkpoint不能及時完成情況,以上來自oracle9I。
--oracle
當fast_start_mttr_target引數未設定,自動檢查點調整生效。如果必須嚴格控制例項和節點資訊恢復時間,那麼可以設定fast_start_mttr_target為期望時間,如果恢復時間不嚴格控制,那麼可以不設定fast_start_mttr_target,讓oracle自動檢查點調整特性
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25362835/viewspace-1056372/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 深入淺出檢查點和例項recovery
- Oracle 檢查點涉及的SCNOracle
- 檢查點機制與scn
- Oracle SCN機制解析 (SCN, checkpoint檢查點) - finalOracle
- 【SCN】Oracle檢查scn值指令碼Oracle指令碼
- 【體系結構】SCN與checkpoint(檢查點)
- 深入淺出 Angular 變更檢測Angular
- 關於資料檔案頭的檢查點SCN
- Oracle SCN健康狀態檢查Oracle
- 檢查點和oracle資料庫的恢復(一)SCNOracle資料庫
- 深入淺出FE(十四)深入淺出websocketWeb
- Oracle資料庫啟動過程驗證檢查點SCNOracle資料庫
- 關於資料檔案頭的檢查點SCN知識
- 檢查點SCN在事務發生後以及發生檢查點和歸檔操作後的變化
- 深入淺出的SQL server 查詢優化SQLServer優化
- 深入淺出——MVCMVC
- 深入淺出mongooseGo
- HTTP深入淺出HTTP
- 深入淺出IO
- 深入淺出 RabbitMQMQ
- 深入淺出PromisePromise
- ArrayList 深入淺出
- mysqldump 深入淺出MySql
- 深入淺出decorator
- 深入淺出 ZooKeeper
- 機器學習深入淺出機器學習
- 深入淺出HTTPHTTP
- http 深入淺出HTTP
- 深入淺出 ARCore
- 深入淺出 synchronizedsynchronized
- 深入淺出WebpackWeb
- 深入淺出 blockBloC
- block深入淺出BloC
- 【知識點】深入淺出STL標準模板庫
- 淺讀-《深入淺出Nodejs》NodeJS
- 重建控制檔案, 資料檔案檢查點SCN到底來自哪裡?
- 《深入淺出webpack》有感Web
- 深入淺出 Laravel MacroableLaravelMac