天天看點

Oracle資料庫體系結構解析

Oracle資料庫體系結構解析

  縱觀上圖可知,oracle資料庫伺服器大緻分為兩個主要部分 既1.oracle instance (資料庫執行個體 上半部分)2.database (資料庫 下半部分)。

  使用者不能直接連接配接到資料庫,而是使用者先發出一個使用者程序, 使用者程序和oracle伺服器發出的伺服器程序互動,然後伺服器程序再和執行個體互動,最後執行個體和底層資料庫互動,進而實作使用者和資料庫的互動。具體過程看下圖:

Oracle資料庫體系結構解析

  下面詳述體系結構中各個組成部分的具體功能和特點

  1.首先先有的整體的認識:

  oracle 伺服器=執行個體+資料庫

  執行個體=sga(執行個體記憶體)+背景程序

  記憶體=sga+pga

  sga=database buffer cache (資料庫高速緩存區緩存)+share pool +redo log buffer

  2.執行個體記憶體sga結構:前三個是必選的,其餘是可選的。

  2)redo log buffer (線上日志緩沖區): ()記錄所有資料庫的塊的改變,主要用于恢複,大小由log_buffer 決定, 在對資料庫塊進行操作之前,會把所做的所有操作記錄這裡。

  3)share pool (共享池):包括library cache (庫高速緩沖區)和database dictionary cache(資料字典緩存)  ,前者主要存儲最近使用的sql和pl/sql 語句的資訊(存一次 多次使用,防止硬解析,) 後者主要存儲最近使用的定義,如表、索引、列、使用者權限、和其他資料庫對象。

  4)large pool :  是系統全局區的一個可選的部分,是共享伺服器的會話記憶體,以減輕在共享池中的負擔,可動态的改變大小,也可以自動管理。

  6)stream pool : 流相關的資料在流池中,提高緩存效果。

  3.接下來介紹執行個體背景程序:

  1) pmon (程序檢測程序) :當會話異常終止時 清除失敗的程序 包括 復原事務、釋放鎖、動态注冊監聽器,

  2) smon (系統檢測程序):執行個體恢複(前滾所有重做日志中的改變、復原沒有送出的事務),釋放臨時表空間。

  3) dbwn(資料寫程序): 将資料庫高速緩存區緩存中的髒塊,重新整理到磁盤資料檔案中,  寫的條件:1,發生檢查點2,髒緩存到達極限值(1/4)、沒有可用的緩存區時。

  4) lgwr(日志寫程序)将redo log buffer 中的redo 重新整理到磁盤日志檔案中,  寫的條件:1,commit 的時候,2.達到1/3滿時,3.大小達到1m時,4.每擱三秒 5.在dbwr程序寫資料之前。

  5) ckpt (檢查點程序) : 給dbwn 信号,使它開始寫髒塊。更新資料檔案頭和控制檔案,(就是把scn号更新為最新的)3秒一次。  常說的一緻性 要保證三個scn 号一緻,包括資料檔案頭的scn号,control files 記錄資料檔案頭的scn号,control files 記錄的總的scn号。檢查點程序 觸發的越快,dbwr 寫的就越快,這樣記憶體中的緩存區髒塊就越少,進而恢複執行個體所用的時間就會越少,但是頻繁的i/o導緻性能下降,是以性能和速度是沖突的;

  6) arcn (歸檔程序):将聯機重做日志檔案歸檔到(也可以了解為複制)歸檔日志檔案 ,如果開啟了歸檔模式  重做日志檔案 一般分為兩個組,這兩組是循環複寫的,一個組用來記錄對資料庫的修改,另一組進行歸檔。但是如果記錄修改的那組已經寫滿,這樣本來該再去寫另一組,但是另一組還沒有完成歸檔,這就會出問題,資料庫夯住了。

最新内容請見作者的github頁:http://qaseven.github.io/