收藏What’s the Point of Oracle Checkpoints?
(oracle checkpoint相關的一些重要問題)
作者簡介: Harald van Breederode (oracle大學高階DBA講師,擁有25年unix方面的經驗和12年oracle相關經驗。Oracle 8i,9i,10g,11g ocp。Oracle 10g ocm)
原文是一個英文的PDF(PPT),同事推薦的,PDF內容比較粗。第一次翻譯,有不正確的地方歡迎指正。原文下載
1.目錄
1. 介紹。
2. 緩衝區(Buffer cache)基礎知識。
3. Redo和緩衝區的關係。
4. 什麼是檢查點(checkpoint)。
5. 檢查點的種類。
6. Oracle在什麼情況下會進行檢查點(checkpoint)。
7. 調整線上日誌檔案。
8. 總結。
2 .緩衝區基礎知識
2.2 緩衝區的組成結構如下:
1. Buffers(緩衝區)
一個緩衝區可以保持一個資料塊在任何時刻的的映象。
2. Buffer headers(緩衝區頭)
儲存緩衝內容的後設資料(metadata)。
作為一種快取的管理結構。
3. Buffer pools(緩衝池)
收集相同用途的緩衝區,並對它們做相應的管理 。
4. 它們的工作職責
緩衝池的全部或者一部分。
分配給一個DBWn程式。
2.3 緩衝區管理
緩衝區是通過雙向連結串列來管理的。
REPL:
這塊緩衝區中包含正在使用的塊映象。
REPL-AUX(輔助REPL):
這塊緩衝區用來做I/O或CR(一致性讀)的重建工作。
WRITE and CKPT-Q:
髒塊請求I/O佇列。
WRITE-AUX(輔助WRITE):
正在進行IO操作的髒緩衝。
緩衝區管理用計數的方式來決定塊最初插塊莖入到REPL連結串列中的位置。
輔助REPL連結串列用於避免多餘的掃描。
3.Redo和buffer cache的關係
1. 當一個塊發生修改時,緩衝區中會包含這個塊的髒塊映象,併產生redo。
2. 一個塊在redo的一個的RBA 上變髒,RBA重做日誌塊(redo log block)的地址。
3. 由lgwr程式將redo寫入相應的redo log file,並將log file的狀態設為active。
4. 髒塊映象被DBWn程式寫入資料檔案,並且將redo log file置為inactive狀態。
5. Redo總是在髒塊寫入資料檔案之前完成。
6. 在日誌檔案中的Active redo的大小,會影響instance crash的恢復時間。
7. 需要在效能和恢復時間之間做好權衡。
3.2 Buffer Cache I/O
3.2.1 服務程式在輔助REPL上尋找一個可用的buffer,然後再將一個資料塊讀進來。
1. 將快取從輔助REPL讀取到REPL。
2. 如果塊被修改了,則修改的塊會被增加到CKPT-Q中(檢查點佇列)。
3. 在搜尋可用空間的過程中,服務程式會同時將髒快取寫出。
3.2.2 DBWn將髒塊內容重新整理輸出到資料庫中
1.記憶體讀從寫快取區被移動到輔助寫快取區。
2.一旦塊被寫入後:
Buffer 被移回到輔助寫快取區。
Buffer從checkpoint佇列中移出。
3.2.3 DBWn的程式寫請求
1.促使緩衝區空閒。
2.做Checkpoint。
4.什麼是檢查點?
1. 一個在特定時間點發生的同步事件。
2. 促使部分或者所有的髒塊的映象寫入到資料庫,由此保證在那個點(checkpoint)之前髒掉的資料庫塊能夠被及時寫入資料庫。
3. 將資料庫狀態帶到新的時間點。
4. 存在很多種不同型別的檢查點。
5.Checkpoint的種類
1.完全檢查點。
2.執行緒檢查點。
3.檔案檢查點。
4.物件檢查點。
5.並行查詢檢查點。
6.增量檢查點。
7.檔案切換檢查點(Log Switch Checkpoint)。
注:通過設定log_checkpoints_to_alert=true,某些檢查點能夠被記錄到alter日誌中。
5.2 完全檢查點
1. 在所有的例項中(針對rac),將髒衝區的塊重新整理輸出到資料庫。
2. 變更的統計資訊條目(v$sysstat, name列):
DBWR checkpoints
DBWR checkpoint buffers written
DBWR thread checkpoint buffers written
3. 發生的情況:
Alter system checkpoint [global]
Alter database begin backup
Alter database begin backup
Shutdown
4. 控制檔案頭和資料檔案頭被更新。
CHECKPOINT_CHANGE#
5. 相關問題:
在log switch 之後,oracle instance是否發生一個完全檢查點?
在oracle8i之前(包括8i),一直是這樣做的,但是oracle 8i之後,就這種方式就被改變了。
5.3 執行緒檢查點
1. 在單個例項中(針對rac而言),將髒衝區的塊重新整理輸出到資料庫。
2. 變更的統計資訊條目:
DBWR checkpoints
DBWR checkpoint buffers written
DBWR thread checkpoint buffers written
3. 發生的情況:
Alter system checkpoint local
4. 控制檔案頭和資料檔案頭被更新。
CHECKPOINT_CHANGE#
5.4 檔案檢查點
1. 在所有例項中,將一個表空間中的所有資料檔案中的髒衝區塊重新整理輸出到資料庫。
2. 變更的統計資訊:
DBWR tablespace checkpoint buffers written。
DBWR checkpoint buffers written。
DBWR檢查點。
3. 發生的情況:
Alter tablespace XXX offline
Alter tablespace XXX begin backup
Alter tablespace XXX read only
4. 控制檔案頭和資料檔案頭被更新。
CHECKPOINT_CHANGE#
5.5 並行查詢檢查點
1. 在所有例項中,當進行並行查詢時,這個查詢有關的objects的所有髒塊會被重新整理資料到資料庫。
2. 變更的統計資訊.
DBWR checkpoint buffers written
DBWR checkpoints
3. 發生情況.
並行查詢。
PDML(並行DML)和PDDL(並行DDL)中的並行查詢部分。
強制一致性。(direct io)
5.6 物件檢查點
1. 在所有例項中,將一個物件的所有髒塊輸出到資料庫。
2. 變更的統計資訊條目:
DBWR object drop buffers written
DBWR checkpoints
3. 一般在drop/truncate段時發生:
Drop table XXX
Drop table XXX purge
Truncate table XXX
Drop index XXX
4. 強制性介質恢復的目的。(原文:Mandatory for media recovery purposes)
1. 從檢查點佇列中,重新整理輸出一部分髒塊到資料庫。
5.7 增量檢查點
塊映象以SCN號的順序來寫。
Checkpoint的rba地址在SGA中被更新。
2. 變更的統計資訊:
DBWR checkpoint buffers written
3. 控制檔案每3秒鐘被CKPT程式更新一次。
Checkpoint程式記錄進度。
5.8 一些其它的定義
每3秒鐘,CKPT程式會根據以下引數來計算目標檢查點的RBA地址:
1. 最近的RBA地址。
2. log_checkpoint_timeout
3. log_checkpoint_interval
4. fast_start_mttr_target
5. fast_start_io_target
6. 最小線上日誌檔案的90%
在所有的快取區髒掉之前,將對應的目標RBA寫入到資料庫中。
5.9 檔案切換檢查點
寫一部分髒塊內容到資料庫中。
變更的統計資訊:
DBWR checkpoints
DBWR checkpoint buffers written
background checkpoints started
background checkpoints completed
控制檔案頭和資料檔案頭被更新:
CHECKPOINT_CHANGE#
6.檢查點管理
一些有用的檢查點管理檢視:
V$INSTANCE_RECOVERY
V$SYSSTAT
V$DATABASE
V$INSTANCE_LOG_GROUP
V$THREAD
V$DATAFILE
V$DATAFILE_HEADER
問:什麼是oracle checkpoint的目的?
答:checkpoint的目的是:為了實現資料庫的一致性,為了效能和恢復,同步所有的資料檔案,部分資料檔案或者一些物件到一個一致的時間點。但是必需在他們控制作之前控制他們(翻譯者補充:意思是這塊的效能影響會比較大,需要理解他們的原理 。)。
6.2 Checkpoint發生的觸發條件
V$INSTANCE_RECOVERY
WRITES_MTTR
fast_start_mttr_target
WRITES_LOGFILE_SIZE
90% of the smallest online redo log file
WRITES_LOG_CHECKPOINT_SETTINGS
log_checkpoint_timeout
WRITES_OTHER_SETTINGS
fast_start_io_target
WRITES_AUTOTUNE
10g self tuning checkpoints
WRITES_FULL_THREAD_CKPT
Manual checkpoints
7.調整線上日誌檔案(online redo log file)的大小
1.增量checkpoint不應該被線上日誌檔案的大小所觸發。
2.線上日誌檔案的大小必需被正確的設定。
3.使用REDO LOG檔案大小的建議:
V$INSTANCE_RECOVERY的OPTIMAL_LOGFILE_SIZE引數
4.或者參照:
V$INSTANCE_RECOVERY的WRITES_LOGFILE_SIZE引數
5.使用archive_lag_target引數去控制日誌檔案切換(log switch)的頻率。
6.在一個oracle的rac系統上,日誌必需在所有的例項上被準確的設定。
注意:線上日誌檔案,只會因為設定的過小,不會嫌大。
8.總結
如果效能是一個很關鍵的一個指標。那麼,在進行以下操作時要尤其小心:
1. drop/truncate object。
2. 將表空間置於read only狀態時。
3. 將資料庫或表空間置於backup模式時。
1. 在有dml的物件上進行並行查詢。
2. 調整線上重做日誌檔案的大小。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13750068/viewspace-696179/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- What's New in MariaDB 10.4
- What’s new in RxSwift 5Swift
- What's new of dubbogo v1.4Go
- Networking from the container's point of view 筆記AIView筆記
- What's new in dubbo-go-pixiu 0.4.0Go
- What’s New in TiDB 3.0.0-rc.1TiDB
- React Native填坑之旅 -- What's nextReact Native
- 1453D - Checkpoints3D
- What's new in Dubbo-go v1.5.1Go
- What's new in Dubbo 3.1.4 and 3.2.0-beta.3
- What's new in Dubbo 3.1.5 and 3.2.0-beta.4
- What's new in dubbo-go v1.5.6Go
- What’s your own way of spending two-day weekend?
- VMware vSphere:What's New V5.1培訓
- What's the maximum typical speed possible with a USB2.0 drive?
- WWDC18 What’s New in LLVM 個人筆記LVM筆記
- 「萌新指南」SOA vs. 微服務:What’s the Difference?微服務
- 真正“搞”懂HTTP協議05之What's HTTP?HTTP協議
- [Original] What's HEAD, FETCH_HEAD and ORIG_HEAD in GitGit
- study critical point and saddle point using Hessian Matrix
- Codeforces Round #688(Div 2) D. Checkpoints
- Oracle's V$ Views(轉)OracleView
- What is Babel?Babel
- what is life?
- What is WebpackWeb
- What is wrong?
- What is maven?Maven
- Oracle's Parallel Execution Features(zt)OracleParallel
- What is an SQL relation?SQL
- What is rate limiting?MIT
- What is a service mesh?
- WHAT IS PPM Encoder ?
- SampleNet: Differentiable Point Cloud SamplingCloud
- What does -> do in clojure?
- CISO之What & How
- What are the benefits of using an proxy?
- [Information Security] What is WEPORM
- What is dbo in SQL Server?SQLServer
- What is the "WF - Contention'' Enqueue ?ENQ