天天看點

Oracle-體系結構

oracle的體系很龐大,要學習它,首先要了解oracle的架構。在這裡,簡要的講一下oracle的架構,讓初學者對oracle有一個整體的認識。

Oracle 體系架構

執行個體+資料庫

執行個體包括:記憶體+程序

記憶體包括:資料緩沖區:避免重複讀取常用的資料(存儲了最近從資料檔案讀入的資料塊資訊或使用者 更改後需要寫回資料庫的資料資訊。記憶體讀取比磁盤讀取的速度快的多。提高了通路速度。這裡的存 取也采用了LRU(最近最少使用)算法。)

日志緩沖區:提高增删改的速度,減少i/o對磁盤的讀取(在執行insert、update等操作後。資料發生了改變。這些變化的資料在寫入資料庫高速緩存前會先寫入重做日志緩沖區。包括變化之前的資料。)

共享池:使相同的SQL語句不再編譯,多次執行,一次解析。

共享池包括:庫緩存+資料字典緩存

程序:資料寫程序(dbwr)日志寫程序,系統監控(smon),程序監控(pmon),檢查點程序,歸檔程序,使用者程序

Oracle伺服器包括兩部分:資料庫執行個體和資料庫檔案。他們構成了也就是所謂的資料管理系統(DBMS)

實體結構

(由控制檔案、資料檔案、重做日志檔案、參數檔案、歸檔檔案、密碼檔案組成)

控制檔案:包含維護和驗證資料庫完整性的必要資訊、例如,控制檔案用于識别資料檔案和重做日志檔案,一個資料庫至少需要一個控制檔案

資料檔案:存儲資料的檔案

重做日志檔案:含對資料庫所做的更改記錄,這樣萬一出現故障可以啟用資料恢複。一個資料庫至少需要兩個重做日志檔案

參數檔案:定義Oracle 例程的特性,例如它包含調整SGA 中一些記憶體結構大小的參數

歸檔檔案:是重做日志檔案的脫機副本,這些副本可能對于從媒體失敗中進行恢複很必要。

密碼檔案:認證哪些使用者有權限啟動和關閉Oracle例程。

邏輯結構

(表空間、段、區、塊)

表空間:是資料庫中的基本邏輯結構,一系列資料檔案的集合。

段:是對象在資料庫中占用的空間

區:是為資料一次性預留的一個較大的存儲空間

塊:ORACLE最基本的存儲機關,在建立資料庫的時候指定

記憶體配置設定

(SGA和PGA)

SGA:是用于存儲資料庫資訊的記憶體區,該資訊為資料庫程序所共享。它包含Oracle 伺服器的資料和控制資訊, 它是在Oracle 伺服器所駐留的計算機的實際記憶體中得以配置設定,如果實際記憶體不夠再往虛拟記憶體中寫。

PGA:包含單個伺服器程序或單個背景程序的資料和控制資訊,與幾個程序共享的SGA 正相反PGA 是隻被一個程序使用的區域,PGA 在建立程序時配置設定在終止程序時回收

背景程序

(資料寫程序、日志寫程序、系統從v 監控、程序監控、檢查點程序、歸檔程序、服務程序、使用者程序)

資料寫程序(DBWR):負責将更改的資料從資料庫緩沖區高速緩存寫入資料檔案

日志寫程序(LGWR):将重做日志緩沖區中的更改寫入線上重做redo日志檔案

系統監控(SMON):檢查資料庫的一緻性如有必要還會在資料庫打開時啟動資料庫的恢複

程序監控(PMON):負責在一個Oracle 程序失敗時清理資源

檢查點程序(CKPT):負責在每當緩沖區高速緩存中的更改永久地記錄在資料庫中時,更新控制檔案和資料檔案中的資料庫狀态資訊。

歸檔程序(ARCn):在每次日志切換時把已滿的日志組進行備份或歸檔

服務程序:使用者程序服務。

使用者程序:在用戶端,負責将使用者的SQL 語句傳遞給服務程序,并從伺服器段拿回查詢資料。

例程

Oracle 例程由SGA 記憶體結構和用于管理資料庫的背景程序組成。例程一次隻能打開和使用一個資料庫。

SCN

(System Change Number):系統改變号,一個由系統内部維護的序列号。當系統需要更新的時候自動增加,他是系統中維持資料的一緻性和順序恢複的重要标志。

實際上,檢查點隻是一個資料庫事件,它存在的根本意義在于減少崩潰恢複(Crash Recovery)時間。當檢查點發生時(此時的SCN被稱為CheckPoint SCN),Oracle會通知DBWR程序,把修改過的資料,也就是Checkpoint SCN之前的髒資料(Dirty Data)從Buffer Cache寫入磁盤,當寫入完成之後,CKPT程序更新控制檔案和資料檔案頭,記錄檢查點資訊,辨別變更。