Oracle 11g R2 體系結構

安裝oracle軟件----創建數據庫----在數據庫中創建表----表裏存儲信息---這些表文件需要存儲在物理硬盤上面。

假如有一個用戶(這個用戶可以是遠程用戶,也可以是本地的,也可以是一個應用程序)連接到oracle數據庫上面,用戶是不能直接連接在硬盤上存儲的數據文件,所以在oracle中要運行一個實例,實例並不是保存在硬盤上面的,實例是內存的一部分,而庫和表文件是存放在硬盤上面的,用戶不能直接訪問庫裏面的數據,只能訪問實例,實例是一個特殊的內存塊,只有實例能和數據庫直接通信,在咱們的實驗環境中實例和數據庫是在同一臺機器上,我們稱之爲單實例環境,對於用戶而言所有的操作都是在實例中完成的,oracle爲實例劃分了一個內存塊,這個內存塊我們稱之爲SGA,其實oracle實例啓動的時候,將會分配一個SGA系統全局區並啓動一些oracle的後臺進程(守護進程)。

SGA核心組件介紹:

在oracle中內存=SGA+PGA

一個實例只能有一個SGA,所有的服務器進程和後臺進程都共享一個SGA

PGA:

我們先看一下一個select語句是如何被執行的?

如果hr用戶寫了一個select * from scott.emp;

第一步:先做編譯,編譯包含了語法的檢查和語義的檢查。

第二步:如果編譯沒有問題會進入shared pool(共享池 )中,而shared pool 是由library cache和data dictionary cache(數據字典緩存)組成。Sql語句第一時間會進入librarycache中,即library cache中會存放被編譯過的正確的sql語句,僅僅是sql語句而已。library cache中沒有緩存的sql語句需要進行硬解析(即需要耗費設備的I/0資源從硬盤讀取)。假設library cache中有這個sql語句,就不需要做硬解析,接着會查 data dictionary cache。data dictionary cache中緩存了權限和對象數據及屬性,所有data dictionary cache檢查hr用戶是否對scott.emp表是否具有訪問權限,如果有權限繼續往下執行,如果沒有權限,直接給hr用戶返回一個結果。如果一條語句從來都沒有被執行過,這條語句首先被緩存在share pool中的library cache中,下一次被執行的時候直接從share pool中取sql語句。存放sql語句也需要佔用空間,share pool的空間也是有限的,爲了防止share pool空間不夠用,採用先進先出的規則即後執行的sql語句會覆蓋先執行的sql語句來釋放空間,當然share pool的空間越大越好。

我們通過企業管理器來查看share pool的相關信息
Oracle 11g R2 體系結構
Oracle 11g R2 體系結構
在sql plus中可以用以下方式查看,圖中“0”表示自動化管理
Oracle 11g R2 體系結構
可以從v$sgainfo中查看shared pool size

SQL> select name,bytes/1024/1024||'MB' from v$sgainfo;

Shared Pool Size

256MB

Large Pool Size

16MB

Java Pool Size

16MB

第三步:data buffer cache現在hr用戶可以訪問scott.emp表了,databuffer cache的作用就是從磁盤或存儲中將數據塊調入內存,緩存在buffer cache中。

舉例:

用戶第一次訪問scott.emp的內容

SQL> set timing on

SQL> select * from scott.emp;第一次執行sql語句

已選擇14行。

已用時間: 00: 00: 00.05

SQL> /再次執行上一條命令所用的時間爲00: 00: 00.00

已選擇14行。

已用時間: 00: 00: 00.00

總結:buffer cache緩存數據本身,library cache緩存sql語句本身。

可以通過show parameter db_cache_size查看buffer cache的大小
Oracle 11g R2 體系結構
第四步:redo log buffer<重做日誌緩衝區>當用戶執行insert,update,delete,create,alter等操作後,數據發生了變化,這些變化了的數據寫入數據緩衝區(buffer cache)之前,先寫入重做日誌緩衝區,同時變化之前的數據也放入重做日誌緩存中,這樣做,是爲了保證在數據恢復時oracle就知道哪些事務需要提交,哪些事務需要撤回。

如果對此文有什麼問題的話,請加下面微信一起探討
Oracle 11g R2 體系結構

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