ORACLE體系結構小結
1. Oracle資料庫中的資料庫與例項
Oracle資料庫包括一個資料庫和至少一個例項(通常是指只有一個例項),資料庫和例項是緊密相關的,Oracle資料庫這個術語有時即指例項,也指資料庫。這個術語嚴格的意義具有以下的含義:
資料庫
資料庫是一組檔案,位於磁碟,用於儲存資料,這些檔案可以獨立於資料庫例項存在。
資料庫例項
例項包含系統全域性區(SGA)的共享記憶體區和一組後臺程式。例項可以獨立於資料庫檔案而存在。
2. Oracle資料庫的工作原理
(1)在Oracle資料庫上啟動Oracle例項。
(2)使用者程式通過監聽與伺服器建立連線。
(3)當應用程式發出SQL語句時,在PGA中開啟遊標
(4)語法檢查
對SQL語句進行語法檢查,Oracle資料庫必須檢查SQL語句的語法有效性。違法了標準格 式的 SQL語法規則的語句無法通過檢查。例如:把FROM的關鍵字錯誤的拼寫成為FORM;
(5)語義檢查
對SQL語句進行語義檢查,語句的語義即它的含義。因此,語義檢查確定一條語句是否是 有意義的,語義檢查是在共享全域性區(SGA)的Shared pool的Data Dictinary Cache 中對照資料字典中檢查表、索引、檢視和使用者的許可權。
(6)解析
資料庫為SQL語句生成雜湊值,在Library Cache中存放著SQL的執行計劃,然後會在Shared pool中的Libray Cache 的共享SQL區中查詢是否已有執行計劃。如果沒有,就要進行硬解析,在硬解析期間,要對SQL進行查詢轉化,生成執行效率更高的SQL語句。資料庫多次訪問庫快取和資料字典快取以檢查資料字典。要進行大量的磁碟IO操作,同時閂鎖爭用會增加語句的執行時間,並降低併發性。如果共享SQL中儲存著要執行語句的執行計劃,那麼就要進行軟解析。
(7)取結果
現在有了執行計劃,從DB buffer cache中取資料,
1)當一個Server程式需要讀資料到Buffer Cache 中時,首先必須判斷該資料Buffer Cache中是否存在(圖中的①),如果存在且可用,則獲取該資料,同時根據LRU演算法增進其訪問的計數;如果DB buffer cache還沒有快取該資料,則需要從資料檔案上進行讀取;
2)在讀取資料之前,Server 程式需要掃描LRU List 尋找Free的Buffer,掃描過程中 Server程式會發現的所有已經被修改過的Buffer註冊到LRUW List上(圖中②)這些Dirty Buffer隨後可以被寫到資料檔案
3)如果LRUW Queue超過閾值,Server程式就會通知DBWn去寫出去髒資料(圖中的③)這是出發DBWn的一個條件,這個閾值是25%,也就是Dirty Queue 超過25%滿就會觸發的寫操作;
如果Server j程式掃描LRU超過40%還沒有找到足夠多的額Free Buffer就會停止搜尋,通知DBWn 執行寫出,這程式處於free buffer wait 等待;
4)找到足夠的Buffer之後,Server程式就可以將Buffer從資料檔案讀入Buffer Cache(圖中的④);
5)如果讀取的Block不滿足讀一致性需求,則Server程式需要通過當前的Block版本和回滾段構造前映象返回給使用者。
(8)執行UPDATE語句時
當執行的語句是update的時候,Server程式把資料從磁碟讀到Buffer cache:要開始這個事務,首先要獲得一個UNDO資料塊來存放資料的前映象,UNDO的資料塊被讀入Buffer Cache中;在修改資料之前資料的前映象被儲存在UNDO中,對於UNDO塊的修改會生成一條Redo記錄;UNDO記錄生成後ORACLE就可以修改資料了。資料修改的時候同時也會生成一條Redo記錄。
(9)重做緩衝區
當資料發生變化的時候會生成重做日誌,比如執行UPDATA,DELETE等語句的時候都會生成redo log,當日志緩衝區的日誌資料達到一定數量時,由後臺程式LGWR將日誌資料寫入日誌檔案中。進行LGWR的條件有:(1)無論何時,只要提交時,(2)重做緩衝區三分之一滿,或者包含了1MB的快取重做日誌資料,每3秒一次(3)DBWR之前。都會使緩衝區的日誌資料寫入日誌檔案的。
(10)歸檔
在Oracle資料庫中日誌檔案是採用迴圈複寫的方式。一般日誌檔案有三組,先往第一組寫,當第一組寫滿,再往第二組寫,發生日誌切換。第一組的日誌資料就會歸檔,儲存在歸檔檔案中。以便以後的介質恢復的時候使用。
(11)後臺程式
DBWR 資料寫入程式
1)、將修改後的緩衝區資料寫入資料檔案中。
2)、觸發的條件:檢查點事件,四分之一滿,表空間離線,備份恢復等。
LGWR 日誌寫入程式
1)、負責將日誌緩衝區中的日誌資料寫入日誌檔案。
2)、系統有多個日誌檔案,該程式以迴圈的方式將資料寫入檔案。
3), 觸發的條件無論何時,只要提交時,1M,三分之一滿,3秒,DBWR之前
CKPT檢查點程式
1)、檢查點的存在就是為了縮短資料庫恢復的時間,當通常檢查點發生的時候,會通知DBWn程式,把髒塊,也就是在此Checkpoint SCN之前的髒資料,從Buffer Cache寫入資料檔案,當寫完之後,CKPT程式則會相應的更新控制檔案頭和資料檔案頭,記錄檢查點資訊,標示更改。
2)、檢查點包括兩種:完全檢查點、增量檢查點。
3)、完全檢查點被觸發:
①使用者發出alter system checkpoint;
②一致性關閉資料庫。
4)、增量檢查點觸發情況:
①每隔三秒
②日誌切換
PMON 程式監控程式,監控使用者程式是否正常。
1)、清理出現故障的程式。
2)、釋放所有當前掛起的鎖定。
3)、釋放故障程式使用的資源。
SMON 系統監控程式,實時監控整個oracle狀況。
1)、在例項失敗之後,重新開啟資料庫時自動恢復例項。
2)、整理資料檔案的自由空間。
3)、釋放不再使用的臨時段。
(11)undo段
當對資料庫進行修改的時候,資料庫會生成undo資訊,以便回到更改前的狀態,undo段中存放的是資料修改的前映象,因為有undo段我們可以進行“Rollback”和閃回查詢等操作,同時也實現了寫不阻塞讀,可以實多版本一致性。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29435844/viewspace-1101179/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle體系結構總結Oracle
- oracle體系結構Oracle
- Oracle體系結構之-物理結構Oracle
- Oracle體系結構之-記憶體結構Oracle記憶體
- Oracle體系結構:記憶體結構和程式結構(轉)Oracle記憶體
- 3:Oracle體系結構(邏輯結構)Oracle
- oracle體系結構(轉)Oracle
- ORACLE-體系結構Oracle
- Oracle體系結構梳理Oracle
- Oracle 體系結構圖Oracle
- oracle體系結構(1)Oracle
- oracle體系結構(2)Oracle
- oracle體系結構(3)Oracle
- Oracle體系結構部落格連結Oracle
- 【Oracle體系結構】 Oracle19C 系統結構介紹Oracle
- Oracle體系結構之記憶體結構(SGA、PGA)Oracle記憶體
- Oracle記憶體體系結構Oracle記憶體
- oracle體系結構概覽Oracle
- Oracle 體系結構介紹Oracle
- Oracle 體系結構 SGA 和PGA 總結Oracle
- Oracle OCP(37):Database 體系結構OracleDatabase
- Oracle 11g體系結構Oracle
- Oracle體系結構理論篇Oracle
- Oracle 12C 體系結構Oracle
- Oracle資料庫體系結構Oracle資料庫
- 【00】Oracle體系結構詳解Oracle
- Oracle RAC 體系結構--儲存Oracle
- Oracle 體系結構介紹(轉)Oracle
- Oracle系列:Oracle RAC叢集體系結構Oracle
- Oracle體系結構之-Oracle後臺程式Oracle
- [ADMIN]oracle入門-oracle體系結構Oracle
- 0718_oracle 體系結構Oracle
- Oracle體系結構學習筆記Oracle筆記
- oracle 11g 體系結構研究Oracle
- 【體系結構】Oracle引數介紹Oracle
- oracle12c體系結構圖Oracle
- oracle體系結構梳理----各種程式Oracle
- oracle體系結構梳理---SGA+PGAOracle