1. 程式人生 > >Oracle數據庫------體系結構

Oracle數據庫------體系結構

顧問 內存結構 動態 alt 索引 ron 信息 instance 訪問

ORACLE體系結構包括:實例(Instance),數據庫文件,用戶進程(User process),服務器進程以及其他文件。

1.ORACLE實例(instance)

1).要訪問數據庫必須先啟動實例,實例啟動時先分配內存區,然後再啟動後臺進程,後他進程執行數據庫的輸入,輸出以及監控其他進程。

在數據庫啟動的過程中 一下五個進程必須啟動:

1.SMON(系統監控進程)

2.PMON(進程監控)

3.DBWR(數據庫寫進程)

4.LGWR(日誌寫進程)

5.CKPT(檢驗點進程)

2).Oracle數據庫實例由內存區和後臺進程組成

(1.)內存區:數據庫高速緩存,重做日誌緩存,共享池,流池以及其他可選內存區(如java池),這些池也稱為數據庫的內存結構

(2.)後臺進程:系統監控進程(SMON),進程監控(PMON),數據庫寫進程(DBWR),日誌寫進程(LGWR),檢驗點進程(CKPT),其他進程等。

2.ORACLE服務器(Server)

1).Oracle是服務器由數據庫實例和數據庫文件組組成,即常說的數據庫管理系統。

2).數據庫服務器除了維護實例和數據庫文件以外,還在用戶建立與數據庫連接時啟動服務器進程並分配PGA(程序全局區)

3.物理結構

1).數據文件

2).控制文件

3).重做日誌文件

4.Oracle數據庫的鏈接與會話

1).鏈接:鏈接是指客戶端進程與數據庫實例之間的物理線路------網絡連接

2).會話:指一個明確的數據庫連接,即存在於實例中的邏輯實體

5.Oracle數據庫的內存結構

1).SGA(系統全局區):包含幾個重要的內存區,數據庫高速緩存,重做日誌緩存,共享池,大池和java池。

(1.)共享池(shared pool):共享SQL或PL/SQL代碼

共享池由庫高速緩存數據字典高速緩存組成

庫高速緩存(大小不可手動調節):存儲了最近使用過的sql或pl/sql語句,庫高速緩存容量有限,不能超過共享池的大小,Oracle采用LRU算法管理庫高速緩存。

數據字典高速緩存:與數據字典有關的一段緩沖區,存儲數據文件,表,索引,列,用戶,權限信息和其他的一些數據庫對象的定義。就是把相關的數據字典信息放入緩存以提高查詢響應時間。

設置及查看共享池大小

alter system set shared_pool_size=20M;

show parameter shared_pool_size;

(2.)數據庫高速緩存

存儲了最近從數據文件讀入的數據塊信息或用戶更改後需要寫回數據庫的信息,此時這些更改後沒有提交給數據庫的信息稱為臟數據。

置及查看庫高速緩存的大小

alter system set db_cache_size=200M;

show parameter db_cache_size;(parameter:參數)

show sga;//查詢sga的分配情況

緩沖區顧問參數(Buffer Cache Advisory Parameter):目的是讓Oracle對於數據庫緩沖區的內存分配提供一些建議,用於啟動或關閉統計信息。

(3.)重做日誌緩存

當用戶執行了insert,update,delete,create,alter和drop操作時,數據發生了變化,這些發生率變化的數據在寫入數據庫高速緩存之前會先寫入重做日誌緩 存區,同時變化之前的數據也放入重做日誌高速緩存區,這樣在數據恢復時,Oracle就知道哪些需要前滾,哪些需要後滾。

重做日誌緩存區參數(log_buffer)是靜態參數,不能動態修改

查看重做日誌緩沖區的大小

show parameter log_buffer;

(4.)大池和java池

大池(Large Pool)是SGA的一段可選內存區,只在共享服務器環境中配置大池,用戶進程區UGA的大部分將在大池中分配,可以減輕共享池的負擔。在大規模輸,入輸出及備份過程中也需 要大池作為緩存空間。large_power_size設置大池的大小。

show parameter large_power_szie;

java池也是可選的一段內存區、但是安裝了java語言或者使用java程序時必須設置java池,用於編譯java語言編寫的指令。java_pool_size設置java池的大小。

show parameter java_pool_size;

2).PGA(進程全局區):服務器進程專用的一塊內存

Oracle數據庫------體系結構