ORACLE體系結構小結

DB_SUN發表於2014-03-04

         

 

 

 

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章