ORACLE體繫結構包括:實例(Instance),資料庫文件,用戶進程(User process),伺服器進程以及其他文件。 1.ORACLE實例(instance) 1).要訪問資料庫必須先啟動實例,實例啟動時先分配記憶體區,然後再啟動後臺進程,後他進程執行資料庫的輸入,輸出以及監控其他進程。 在 ...
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(進程全局區):伺服器進程專用的一塊記憶體