Oracle的體系結構

2021-10-04 05:52:12 字數 4184 閱讀 8606

三、系統全域性區sga

四、後台程序

五、儲存結構

使用者程序(user process),是指使用者通過客戶端,比如sql plus、pl/sql developer、sql load、應用程式等工具連線上oracle資料庫而產生的程序。使用者程序處理使用者輸入並與伺服器程序通訊。使用者程序還負責表現使用者請求的資訊,必要時可以將資訊處置成更可用的形式。

服務程序(server process),當客戶端發起連線時,oracle建立乙個使用者程序來處理這個連線。

使用者程序啟動後,oracle還會建立乙個服務程序來處理連線到例項的使用者程序提交的請求。使用者程序連線到資料庫並建立乙個會話時,oracle伺服器程序會分配專門用於當前使用者會話的記憶體區,即pga區,該區域是私有的,當程序建立時分配,程序結束後被釋放,只能被乙個服務程序使用。

以客戶端執行一條sql為例:

1)服務程序接收sql語句;

2)服務程序去共享池找sql和執行計畫,如果沒找到,則解析sql;

3)服務程序根據執行計畫去資料快取中找相關的資料,如沒有才到資料檔案中取出資料放到資料快取中,再返給客戶端;

4)若需要修改資料,服務程序把資料讀取到資料快取後再修改資料,修改後返給客戶端。

使用者程序與伺服器程序可以是一對一的關係(配置為專用伺服器模式時)。乙個伺服器也可連線多個使用者程序(配置為多執行緒伺服器時),但這樣做會減少對系統資源的占用。

系統全域性區sga(system global area),是oracle例項的重要組成部分,在例項啟動時分配,是一組包含oracle資料和控制資訊的共享記憶體。乙個sga只屬於乙個例項,也就是說,當乙個伺服器上有多個例項執行時,每個例項都有乙個自己的sga,例項之間不能相互訪問。sga包括共享池(share pool)、資料快取(data buffer cache)和重做日誌緩衝區(redo log buffer),其中共享池又包括library cache(庫快取)和data dict cache(資料字典快取)。

oracle後台程序是一組執行於oracle伺服器端的後台程式,也是oracle例項的重要組成部分。這些後台程序分別完成不同的功能。其中smon、pmon、dbwr、lgwr和ckpt這5個後台程序必須正常啟動,否則資料庫例項無法工作。此外,還有很多輔助程序,用於實現輔助的功能,如果這些輔助程序發生問題,只會使某些功能受到影響,資料庫例項仍是可用的。

1)資料寫入程序(dbwr)

資料寫入程序的主要任務是負責將記憶體中的「髒」資料塊回寫到資料檔案中。「髒」資料塊是指高速資料緩衝區中的被修改過的資料塊,這些資料塊的內容與資料檔案的資料塊內容不一致。但dbwr並不是隨時將所有的「髒」資料塊都寫入資料檔案,只有滿足一定的條件時,dbwr程序才開始成批量的將「髒」資料塊寫入資料檔案oracle這樣做的目的是為了儘量減少i/o操作,提高oracle伺服器效能。

2)檢查點程序(ckpt)

檢查點程序可以看作乙個事件,當檢查點事件發生時,ckpt會要求dbwr將某些「髒」資料塊回寫到資料檔案。當使用者程序發出資料請求時,oracle系統從資料檔案中讀取需要的資料並存放到高速資料緩衝區中,使用者對資料的操作時在緩衝區中進行的。當使用者運算元據時,就會產生大量的日誌資訊並儲存在重做日誌緩衝區,當oracle系統滿足一定條件時,日誌寫入程序(lgwr)會將日誌資訊寫入到重做日誌檔案組中,當發生日誌切換時(寫入操作正要從乙個日誌檔案組切換到另一組時),就會啟動檢查點程序。

另外,dba還可以通過修改初始化引數檔案spfile中的checkpoint_process引數為true來啟動檢查點程序。

3)日誌寫入程序(lgwr)

日誌寫入程序用於將重做日誌緩衝區中的資料寫入重做日誌檔案。oracle系統將使用者所做的修改日誌資訊寫入日誌檔案,然後將修改結果寫入資料檔案。

oracle例項在執行中會產生大量日誌資訊,這些日誌資訊首先被記錄在sga的重做日誌緩衝區中,當發生提交命令、或者重做日誌緩衝區的資訊滿1/3、或者日誌資訊存放超過3秒鐘時,lgwr程序就將日誌資訊從重做日誌緩衝區中讀出並寫入日誌檔案組中序號較小的檔案中,乙個日誌組寫滿後接著寫另外一組。當lgwr程序將所有䣌日誌檔案都寫過一遍後,它將再次轉向第乙個日誌檔案組重新覆蓋。

4)歸檔程序(arch)

歸檔程序是乙個可選擇的程序,只有當oracle資料庫處於歸檔模式時,該程序才可能起到作用。若oracle資料庫處於歸檔模式,當各個日誌檔案組都被寫滿即將被覆蓋之前,先由歸檔程序(arch)把即將覆蓋的日誌檔案中的日誌資訊讀出,然後再把這些「讀出的日誌資訊」寫入到歸檔日誌檔案中。

當系統比較繁忙而導致lgwr程序處於等待arch程序時,可通過修改log_archive_max_processes引數啟動多個歸檔程序,從而提高歸檔寫磁碟的速度。

5)系統監控程序(smon)

系統監控程序是在資料庫啟動時執行恢復工作的強制性程序。比如,在並行伺服器模式下,smon可以恢復另乙個處於失敗的資料庫,使系統切換到另外一台正常的伺服器上。

6)程序監控程序(pmon)

程序監控程序用於監控其他程序的狀態,當有程序啟動失敗時,pmon會清除失敗的使用者程序,用於資料不一致時進行恢復工作。

7)鎖定程序(lckn)

這是乙個可選程序,並行伺服器模式下可以出現多個鎖定程序以利於資料庫通訊。

8)恢復程序(reco)

這是在分布式資料庫模式下使用的乙個可選程序,用於資料不一致時進行恢復工作。

9)排程程序(dnnn)

這是乙個可選程序,在共享伺服器模式下使用,可以啟動多個排程程序。

10)快照程序(snpn):

快照程序用於處理資料庫快照的自動重新整理,並通過dbms_job包執行預定的資料庫儲存過程。

oracle分為邏輯儲存結構和物理儲存結構,邏輯儲存結構用來描述oracle內部組織和管理資料的方式,是一種層次結構,是面向使用者的;物理儲存結構是實際的資料儲存單元,就是資料庫存放在作業系統上的檔案。

oracle資料庫中的資料檔案被分組到乙個或多個表空間中。在每個表空間中,邏輯資料庫結構(如表和索引)都是片段,被進一步細分為「盤區」(extent)和「塊」(block)。這種儲存的邏輯細分c讓oracle更有效的控制磁碟。

1)表空間

表空間是oracle資料庫的最大邏輯劃分區域,常用來存放資料表,索引等資料物件,任何實體物件在建立時必須指定表空間。

表空間與資料檔案相對應,乙個表空間由乙個或多個資料檔案組成,乙個資料檔案只屬於乙個表空間。

oracle資料的儲存空間在邏輯上變現為表空間而在物理上表現為資料檔案,表空間相當於資料夾,資料檔案相當於資料夾中的檔案。

2)段資料庫中的下乙個邏輯分組級別是段。段是一組盤區,這組盤區組成了被oracle視為乙個單位的資料庫物件,如表或索引。因此,段一般是資料庫終端使用者要處理的最小儲存單位。oracle資料庫中可看到4種型別的段:資料段(非分割槽表和分割槽表的每個分割槽)、索引段、臨時段和回滾段。

3)盤區

它由乙個或多個資料庫塊組成。當擴大資料庫物件時,為該物件新增的空間將分配為乙個盤區。

4)塊資料庫塊是oracle資料庫最小的儲存單位。塊的大小是資料庫內給定表空間中特定數量的儲存位元組。預設塊大小是8kb。

1)資料檔案

資料檔案用於儲存資料庫中的所有資料,包含系統資料、資料字典資料、臨時資料、索引資料、應用資料等。

安裝oracle資料庫時系統會自動為資料庫建立幾個資料檔案,使用者對資料庫的操作本質是對資料檔案的操作。乙個表空間可以對應多個資料檔案,乙個資料檔案只能從屬於乙個表空間。在邏輯上,資料物件都存放在表空間中,實質上是存放在空間對應的資料檔案中。

2)控制檔案

每個oracle資料庫有一組控制檔案(control file),用於記錄和描述資料庫的物理儲存結構資訊,包含資料庫名、資料庫資料檔案和日誌檔案的名字和位置和資料庫的時間戳。

3)引數檔案

引數檔案用於設定資料庫啟動時的引數初始值。

4)密碼檔案:

用於儲存具有sysdba、sysoper許可權的使用者名稱和sys使用者密碼。

5)日誌檔案

oracle以sql指令碼的形式實時記錄了資料變化的詳細日誌,這些日誌儲存在重做日誌檔案中。根據重做日誌檔案,可以對資料庫進行備份和恢復。

日誌組在切換時,如果資料庫是歸檔模式,則將當前日誌檔案的內容轉存為作業系統檔案,成為歸檔日誌;若當前資料庫是非歸檔模式,則不進行歸檔操作,當前日誌檔案中的內容會被下一次覆蓋。

6)跟蹤檔案

使用者記錄使用者程序、資料庫後台程序的運**況。

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...