oracle 之 内存—鞭辟近里(一)
生活随笔
收集整理的這篇文章主要介紹了
oracle 之 内存—鞭辟近里(一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
oracle 之 內存—鞭辟近里(一)
今天是2013-07-8日,這幾天一直都在尋找一本深入研究oracle內存的書籍,期間一波三折弄的自己神魂顛倒,但是還是被我拿下了,感謝支持我的朋友,這周打算把oracle的內存進行一下深入剖析,以此記錄學習筆記。
?? 一)內存體系結構:
? 每當數據庫的實例啟動的時候oracle? database就會分配內存以及后臺進程,在內存區域中存儲的如下相關信息:
》程序代碼
》關于以及連接的會話信息,即使該會話不是活動狀態。
》程序執行期間需要的相關信息
》關于數據共享一些鎖的信息。
》緩沖的數據,想數據塊和重做日志記錄等等。
可以查一下上面這個圖:
A)基本的內存結構包括如下部分:
1)sga(系統全局區,system global area)
sga有很多共享內存結構組成,叫做sga的組件,它包括一些關于實例的數據信息和控制信息,sga被所有的服務進程和后臺進程所共享。例如數據存儲在sga中包括緩存的數據塊和共享sql區域。
2)pga(程序全局區,program global area)
pga是被一個oracle進程獨自占有的不是共享的一塊區域,它包含一些數據信息和控制信息。在oracle進程啟動的時候該區域就被創建了。
pga是為每個服務進程和后臺進程存在的,所有的服務進程和是后臺進程 鎖分配的所有pga成為實例pga大小。oracle只能對整個所有pga的大小進行限制,不能對單個進程的pga進行設置大小。
3)uga(用戶全局區,user global area)
uga保存了一些用戶的會話信息。
4) 軟件代碼區(software code areas)
該區域是存儲一些執行的代碼或是能夠被執行的代碼的區域。
B)oracle database 內存管理
內存管理就是可以根據數據庫的不斷變化能夠維護oracle內存的相關結構大小,并且給予內存的相關components一個合理的值。oracle內存的管理是通過設置相關參數文件中的參數進行設定的。其中包括如下管理方式:
1)自動內存管理(automatic memory management)
dba可以指定一個總的目標內存值,然后數據庫實例就會自動的對內存的相關組件按照不同的需求進行自動動態調整內存大小,也就是安裝不同內存的需求動態的調整pga和sga的相關大小。(該內容在后續進行深入研究)
2)自動共享內存管理((automatic shared memory management)
該管理模式是對內存的一個部分自動管理。你可以給sga設置一個總的大小目標值然后再設置一個總的pga大小內存值進行管理。
3)手動內存管理(manual memory management)
手動內存管理就不是設置一個目標最大值了,而是通過參數文件中的相關參數進行每個內存組件的手動管理。(該方式繁瑣,被棄用了)
note:在11g中,如果在創建數據庫的時候使用dbca然后選擇基本按照方式的時候,默認是采用了自動內存管理。
?
總結
以上是生活随笔為你收集整理的oracle 之 内存—鞭辟近里(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu下nagios监控远程主机
- 下一篇: 2012年读书目录