天天看點

Oracle的體系結構一、概述二、使用者程序和服務程序三、系統全局區SGA四、背景程序五、存儲結構六、版權聲明

文章目錄

  • 一、概述
  • 二、使用者程序和服務程序
    • 1、使用者程序
    • 2、服務程序
  • 三、系統全局區SGA
  • 四、背景程序
  • 五、存儲結構
    • 1、邏輯存儲結構
    • 2、實體存儲結構
  • 六、版權聲明

一、概述

Oracle的體系結構是資料庫的組成、工作過程,以及資料庫中資料的組織和管理機制,包含一系列元件(軟體)、使用者程序(User process)、服務程序(Server process、PGA)、SGA(共享池、資料緩存、日志緩沖區)、背景程序(SMON、DBWn、PMON、CKPT、LGWR、其它程序)、參數檔案(Parameter file)、密碼檔案(Password)、資料檔案(Data files)、控制檔案(Control files)、線上重做日志檔案(Redo log files)、歸檔日志檔案(Archived log files)。

Oracle的體系結構一、概述二、使用者程式和服務程式三、系統全局區SGA四、背景程式五、存儲結構六、版權聲明

二、使用者程序和服務程序

1、使用者程序

使用者程序(User process),是指使用者通過用戶端,比如SQL Plus、PL/SQL Developer、SQL Load、應用程式等工具連接配接上Oracle資料庫而産生的程序。使用者程序處理使用者輸入并與伺服器程序通信。使用者程序還負責表現使用者請求的資訊,必要時可以将資訊處置成更可用的形式。

2、服務程序

服務程序(Server Process),當用戶端發起連接配接時,Oracle建立一個使用者程序來處理這個連接配接。

使用者程序啟動後,Oracle還會建立一個服務程序來處理連接配接到執行個體的使用者程序送出的請求。使用者程序連接配接到資料庫并建立一個會話時,Oracle伺服器程序會配置設定專門用于目前使用者會話的記憶體區,即PGA區,該區域是私有的,當程序建立時配置設定,程序結束後被釋放,隻能被一個服務程序使用。

以用戶端執行一條SQL為例:

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

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

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

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

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

三、系統全局區SGA

系統全局區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的體系結構一、概述二、使用者程式和服務程式三、系統全局區SGA四、背景程式五、存儲結構六、版權聲明

1、邏輯存儲結構

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

1)表空間

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

表空間與資料檔案相對應,一個表空間由一個或多個資料檔案組成,一個資料檔案隻屬于一個表空間。

Oracle資料的存儲空間在邏輯上變現為表空間而在實體上表現為資料檔案,表空間相當于檔案夾,資料檔案相當于檔案夾中的檔案。

2)段

資料庫中的下一個邏輯分組級别是段。段是一組盤區,這組盤區組成了被Oracle視為一個機關的資料庫對象,如表或索引。是以,段一般是資料庫終端使用者要處理的最小存儲機關。Oracle資料庫中可看到4種類型的段:資料段(非分區表和分區表的每個分區)、索引段、臨時段和復原段。

3)盤區

它由一個或多個資料庫塊組成。當擴大資料庫對象時,為該對象添加的空間将配置設定為一個盤區。

4)塊

資料庫塊是Oracle資料庫最小的存儲機關。塊的大小是資料庫内給定表空間中特定數量的存儲位元組。預設塊大小是8KB。

2、實體存儲結構

1)資料檔案

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

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

2)控制檔案

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

3)參數檔案

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

4)密碼檔案:

用于儲存具有SYSDBA、SYSOPER權限的使用者名和SYS使用者密碼。

5)日志檔案

Oracle以SQL腳本的形式實時記錄了資料變化的詳細日志,這些日志儲存在重做日志檔案中。根據重做日志檔案,可以對資料庫進行備份和恢複。

日志檔案有兩種:線上日志和歸檔日志。

建立Oracle資料庫執行個體的時候,預設建立三組線上日志,每組一個日志檔案。三組日志中隻有一組處于活動狀态,這組活動的日志也稱為目前日志,資料庫不斷的往目前日志裡寫入SQL腳本,目前日志寫滿後,Oracle會切換到下一組日志,繼續寫入,就這樣循環切換。

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

如果資料庫運作在歸檔模式下,當資料庫出現媒體失敗時,使用備份檔案、歸檔日志和線上日志可以完全恢複資料庫。

6)跟蹤檔案

使用者記錄使用者程序、資料庫背景程序的運作情況。

六、版權聲明

C語言技術網原創文章,轉載請說明文章的來源、作者和原文的連結。

來源:C語言技術網(www.freecplus.net)

作者:碼農有道

如果這篇文章對您有幫助,請點贊支援,或在您的部落格中轉發我的文章,謝謝!!!

如果文章有錯别字,或者内容有錯誤,或其他的建議和意見,請您留言指正,非常感謝!!!