oracle 體系結構簡介

2022-09-19 18:45:10 字數 2820 閱讀 2364

1.1、sga(system global area)

sga是oracle instance的基本組成部分,在示例啟動是分配。是一組包含乙個oracle例項的資料和控制資訊的共享記憶體結構。主要用於儲存資料庫資訊的記憶體區,該資訊為資料庫程序所共享。

1.1.1、共享池(shared pool)

1)data dictionary cache(快取的是資料字典資訊)

2)library cache

a)編譯後的sql語句,當有新的語句來了之後,就從這裡找,如果有的話,就直接執行了。

b)也涉及到命中率的問題

c)優化:以繫結變數方式,將where 過濾條件不同而其他相同的語句進行變數繫結,降低硬解析。

3)共享模式的情況下,pga在共享池中。

4)每乙個會話分配乙個uga,uga在共享池中分配,如果是共享模式,那麼久在large pool中。

1.1.2、資料快取記憶體區(database buffer cache)

1)命中率的概念

讀記憶體的時候,如果在db buffer cache中的話,那麼就從記憶體中返回,如果沒有的話,那麼久從資料庫中讀到記憶體中。從記憶體中返回的比率越高說明命中率也高,效能相對也會較好。命中率較低的優化:加大記憶體,也可以將開闢乙個keep快取區,將經常訪問的資料放到keep記憶體中。

1.1.3、重做日誌快取區(redo log buffer)

觸發redo log buffer的寫入規則

1)三秒鐘

2)無論何時,只要有提交

3)三分之一滿或者快取了1m的重做日誌資料

4)切換日誌或檢查點事件

1.2、pga(program global areas)

此區域包含單個伺服器程序或單個後台程序的資料和控制資訊,與幾個程序共享的sga正相反,pga是只被乙個程序使用的私有區域,pga在建立程序時分配,在終止程序時**。專用模式下每乙個伺服器程序分配使用乙個pga。

1.3、記憶體結構

1)使用者程序(user process)

》是乙個需要與oracle server互動的程式

》執行於客戶端

》當使用者執行於某個工具或應用程式時建立,當使用者退出上述程式時結束。

》使用者向oracle server 發出呼叫,但它並不與oracle server 直接互動,而是用過server process與oracle server進行互動。

2)服務程序(server process)

》是乙個直接與oracle server互動的程式

》與oracle server執行於同一臺機器上

》使用pga執行user process發出的呼叫,並向user process返回結果狀態和結果資訊。

3)後台程序(background)

後台程序用於維護物理儲存於記憶體中的資料之間的關係。主要包括:

》smon:系統監視程序,程序負責在例項啟動時恢復例項,包括清除臨時段以及恢復因系統崩潰而中斷的事務。

a)例項恢復

b)重做已提交的事務

c)開啟資料庫

d)回滾未提交的事務

e)合併資料檔案中相鄰的自由空間

f)釋放臨時段的空間

》pmon:程序監視程序,程序負責監視資料庫的處理情況,並負責清除掉死掉的程序。pmon還負責重啟失敗的排程程序。

a)回滾使用者的當前事務。

b)釋放相關的鎖。

c)釋放其他相關的資源。

》dbwn:資料庫寫入程序,程序負責將髒資料(已經修改但是沒有提交的資料)從資料快取區寫回磁碟。當乙個事務修改資料塊中的資料以後,不需要立即將資料塊寫回磁碟。由於oracle所採用的先進機制,修改後的資料可以不用立即回寫,並且出現故障也不會丟失。因此dbwr可以採取更有效的寫回方式,而不用在事務提交完之後立即寫回。dbwr通常定時寫回資料,除非資料緩衝區需要清空或已滿。

資料寫回時,採用了最近最少使用原則。對於支援非同步io的系統,只需要乙個dbwr程序即可,對不支援非同步io的可以通過增加dbwr的個數來提公升效率。

觸發dbwr程序的情況:

#發生檢查點

#達到髒緩衝區閾值

#超時#將表空間設定為離線或唯讀

#刪除或截斷表

#備份表空間

》ckpt:檢查點程序,ckpt程序負責向dbwr程序傳送訊號,要求執行一次檢查點,並更新資料庫的所有資料和控制檔案為一直檢查點。

skpt會檢查控制檔案的scn和資料檔案的scn是否一直,如果不一致,它會觸發dbwr保證資料庫的一致性。checkpoint(檢查點),是指由dbwr程序將所有修改過的資料緩衝區裡的髒資料寫回資料檔案。ckpt是可選的,如果沒有ckpt程序,則有lgwr程序代行這些任務。

a)是dbwr將sga中所有被修改的資料庫緩衝區的內容寫入磁碟,無論事務是否被提交

b)用檢查點資訊更新資料檔案頭

c)用檢查點資訊更新控制檔案

它可以保證

d)將經常被修改的資料寫入磁碟

e)簡化例項恢復

》lgwr程序:日誌寫入程序lgwr負責將日誌緩衝區中的資料寫入重做日誌。由於commit操作依賴於lgwr寫回日誌(commit操作觸發lgwr將日誌緩衝區資料寫入redo日誌),因此系統效能容易受到lgwr的影響。

lgwr的執行要早於dbwr

觸發條件:    

a)事務提交

b)三分之一的redo日誌緩衝區已滿

c)每三秒鐘

d)在dbwr寫磁碟之前

以上是對oracle體系結構中的一些常用的程序與記憶體區做乙個基礎的描述,如果想深入去了解oracle體系結構原因,還是需要找一些詳細全面的文件來研究。

oracle體系結構

oracle由例項和資料庫組成 例項是由sga system global area 和一系列後台程序組成的,其中sga最主要劃分為共享池 shared pool 資料緩衝區 db cache 和日誌緩衝區 log buffer 後台程序包括pmon smon lckn reco ckpt dbwr...

oracle體系結構

一.oracle資料庫的後台程序 dbwr 資料庫寫程序,負責將更改的資料從資料庫緩衝區寫入資料檔案 smon 系統監控,檢查資料庫的狀態,恢復資料庫的例項 pmon 程序監控,負責oracle程序失敗時資源清理釋放 chpt 檢查點程序,每當緩衝區資料寫入檔案時,更新控制檔案的資料庫狀態資訊 ar...

oracle體系結構

oracle體系結構圖 1.1 為什麼oracle資料庫管理系統要引進非常複雜的體系結構 更高效的使用記憶體,保證資料庫不丟失任何資料 1.2 常用術語 1.2.1 程序 一段記憶體正在執行的程式 1.2.2 後台程序 可以有多個後台程序 1.2.3 緩衝區 臨時儲存資料的記憶體區 1.3 orac...