天天看點

oracle 體系結構

oracle 體系結構

oracle的體系結構如上圖

oracle server 由 instance 和 database 兩大部分組成;

instance 裡面包括兩大部分:SGA 和 PGA;

SGA裡面主要包含:shared pool,DB buffer cache,redo log buffers;

PGA裡面主要包含:背景程序:PMON,SMON,DBWR,LGWR,CKPT ,和其他other;還有兩個普通:user process,server process;

database 裡面則是包含的一堆檔案:主要的有 data files ,control files,redo files,附屬檔案有:parameter files,password files,archived log files;

其實我先把架構寫出來,這樣子友善記憶。下面我将一個個介紹這裡面的功能。

oracle server

一共有三種安裝方式:

1基于主機的:即使用者可直接在安裝了資料庫的計算機上登入資料庫;

2用戶端~伺服器(client~server):資料庫和用戶端分别裝在不同的計算機上,使用者通過網絡從用戶端通路資料庫;

3用戶端~應用伺服器~伺服器(client~application server~server):使用者首先從自己的個人計算機登入應用伺服器,再通過應用伺服器通路真正的資料庫。

instance(執行個體):oracle執行個體是一種通路資料庫的機制,它由記憶體結構(SGA)和背景程序(PGA)組成。

SGA:shared pool,DB buffer cache,redo log buffer;

shared pool(共享池):是由庫高速緩存(library cache),資料字典高速緩存(data dictionary cache)兩部分組成。伺服器程序将SQL或者PL/SQL語句的正文和編譯後的代碼(parsed code)以及執行計劃都放在共享池的庫高速緩存中。在進行編譯時,伺服器程序首先在共享池中搜尋是否有相同的SQL或者PL/SQL語句(正文),如果有就不就不進行任何後續的編譯處理,而是直接使用已存在的編譯後的代碼和執行計劃。

*庫高速緩存包含了共享SQL和PL/SQL兩部分,它們分别存放在SQL和PL/SQL語句以及相關資訊。

DB buffer cache(資料庫高速緩沖區):

     通過緩存資料塊,進而減少I/O。

 通過構造CR(Consistent Read)塊,進而提供讀一緻×××。

 通過提供各種lock、latch機制,進而提供多個程序并發通路同一個資料塊的功能。

redo log buffer(重做日志檔案):引入重做日志檔案的主要目的就是資料的恢複。oracle在使用任何DDL或DML操改變資料之前都将恢複所需的資訊,即在寫資料庫高速緩沖區之前,先寫進重做日志緩沖區。

除了以上所介紹的結構外,SGA還可能含有large pool,java pool這兩個可選的記憶體結構。

引進large pool的主要目的是為了提高效率,而引進java pool的目的是能夠編譯java語言的指令。

PGA:主要有背景程序:PMON,SMON,CKPT,DBWR,LGWR等(還有一個ARCn),一般程序:user process,server process;當oracle建立一個伺服器程序的同時要為該伺服器程序配置設定一個記憶體區,該記憶體區稱為程式全局區(PGA),PGA是一個是私有的記憶體區,不能共享,且隻屬于一個程序。它随着程序的建立而被配置設定,随着程序的終止而被收回。

LGWR(重做日志寫程序):負責将重做的日志緩沖區的記錄順序的寫到重做日志檔案中。

DBWR(資料庫寫程序):負責将資料庫高速緩沖區中的髒緩沖區中的資料寫到資料檔案上。為了提高效率,一般是積累到足夠多的資料一次寫一大批記憶體資料塊到資料檔案上。

SMON(系統監督程序):如果由于某種原因oracle系統崩潰了(如斷電),SGA中還沒來得及儲存的資料可以通過SMON自動進行復原執行oracle執行個體的恢複工作。

PMON(程序監督程序):當某個程序崩潰時(如沒有正常退出oracle的情況下重新啟動了所用的PC),程序監督程序将負責它的清理工作。

CKPT(校驗點程序):當校驗點事件發生時,oracle要将校驗點号碼(oracle系統自動生成的)寫入所有相關的資料檔案的檔案頭中。還要将校驗點号碼,重做日志序列号,歸檔日志名稱和SCN号都寫入控制檔案中。

最後再介紹一個

ARCn(歸檔日志程序):有時亦寫成ARCH,以上的五個程序都是必須的,即它們任何一個停止後執行個體都将自動關閉。歸檔日志檔案可以看作是重做日志檔案的備份,但歸檔日志檔案是脫機的,即除了在進行(複制)時,oracle資料庫在正常運作時是不會關注歸檔日志檔案的。它執行時一般是自動執行的,利用這些歸檔日志檔案oracle系統就能保證在遇到資料檔案丢失或損壞後可以完全恢複資料庫中的資料。

user process 和 server process就不多做介紹了,詳細具體去看資料庫概論這本書。

database(資料庫):主要:control files,data files,redo log files。其餘:parameter files,password files。

1 control files(控制檔案):包含了維護和校驗資料庫一緻性所需的資訊。

2 data files (資料檔案):包含了資料庫中真正的資料。

3 redo log files (重做日志檔案):包含了當系統崩潰後進行恢複所需急需記錄的變化資訊。

4 parameter files (初始化參數檔案):定義了執行個體的特性,如系統全局區中一些記憶體結構的大小,DBWR的個數。

5 archived redo log files (歸檔重做日志檔案):是重做日志檔案的脫機備份。在系統崩潰後恢複可能需要這些檔案。

本文出自何明老師的oracle DBA 教育訓練教程——從實踐中學習oracle資料庫管理與維護和自己的一些整理。轉載請注明!!!!

下一篇: 依賴注入