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數據庫管理與維護和自己的一些整理。轉載請註明!!!!

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章