記憶體管理簡介
l 概述
oracle的記憶體可以按照共享和私有的角度分為系統全域性區和程式全域性區,也就是SGA和PGA(process global area or private global area)。對於SGA區域內的記憶體來說,是共享的全域性的,在UNIX上,必須為oracle設定共享記憶體段(可以是一個或者多個),因為oracle在UNIX上是多程式;而在WINDOWS上oracle是單程式(多個執行緒),所以不用設定共享記憶體段。PGA是屬於程式(執行緒)私有的區域。在oracle使用共享伺服器模式下(MTS),PGA中的一部分,也就是UGA會被放入共享記憶體large_pool_size中。
對於SGA部分,我們透過sqlplus中查詢可以看到:
SQL> select * from v$sga;
NAME VALUE
-------------------- ----------
Fixed Size 454032
Variable Size 109051904
Database Buffers 385875968
Redo Buffers 667648
Fixed Size
oracle 的不同平臺和不同版本下可能不一樣,但對於確定環境是一個固定的值,裡面儲存了SGA各部分元件的資訊,可以看作引導建立SGA的區域。
Variable Size
包含了shared_pool_size、java_pool_size、large_pool_size等記憶體設定和用於管理資料緩衝區等記憶體結構的hash table、塊頭資訊(比如x$bh消耗記憶體)等
Database Buffers
指資料緩衝區,在8i中包含default pool、buffer_pool_keep、buffer_pool_recycle三部分記憶體。在9i中包含db_cache_size、db_keep_cache_size、db_recycle_cache_size、db_nk_cache_size。這裡要注意在8i中三部分記憶體總和為db_block_buffers*db_block_size。
Redo Buffers
指日誌緩衝區,log_buffer。在這裡要額外說明一點的是,對於v$parameter、v$sgastat、v$sga查詢值可能不一樣。v$parameter裡面的值,是指使用者在初始化引數檔案裡面設定的值,v$sgastat是oracle實際分配的日誌緩衝區大小(因為緩衝區的分配值實際上是離散的,也不是以block為最小單位進行分配的),v$sga裡面查詢的值,是在oracle分配了日誌緩衝區後,為了保護日誌緩衝區,設定了一些保護頁,通常我們會發現保護頁大小大約是11k(不同環境可能不一樣)。參考如下內容
SQL> select substr(name,1,10) name,substr(value,1,10) value
2 from v$parameter where name = 'log_buffer';
NAME VALUE
-------------------- --------------------
log_buffer 524288
SQL> select * from v$sgastat ;
POOL NAME BYTES
----------- -------------------
fixed_sga 454032
buffer_cache 385875968
log_buffer 656384
SQL> select * from v$sga;
NAME VALUE
-------------------- ----------
Fixed Size 454032
Variable Size 109051904
Database Buffers 385875968
Redo Buffers 667648
關於各部分記憶體的作用,參考oracle體系結構,在此不再敘述。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9099175/viewspace-909422/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java記憶體模型簡介Java記憶體模型
- Java記憶體模型 - 簡介Java記憶體模型
- 持久記憶體指令(PMDK)簡介記憶體
- 記憶體管理 記憶體管理概述記憶體
- jvm堆記憶體和GC簡介JVM記憶體GC
- 計算機記憶體管理介紹計算機記憶體
- C++記憶體管理:簡易記憶體池的實現C++記憶體
- 記憶體管理篇——實體記憶體的管理記憶體
- 【記憶體管理】記憶體佈局記憶體
- 記憶體管理兩部曲之實體記憶體管理記憶體
- Java的記憶體 -JVM 記憶體管理Java記憶體JVM
- Go:記憶體管理與記憶體清理Go記憶體
- 【記憶體管理】Oracle AMM自動記憶體管理詳解記憶體Oracle
- 記憶體管理兩部曲之虛擬記憶體管理記憶體
- JavaScript 記憶體管理JavaScript記憶體
- iOS 記憶體管理iOS記憶體
- Android記憶體管理Android記憶體
- OC記憶體管理記憶體
- 記憶體管理-swMemoryGlobal記憶體
- Flink記憶體管理記憶體
- MySQL記憶體管理MySql記憶體
- 記憶體回收介紹記憶體
- CUDA記憶體介紹記憶體
- 【記憶體管理】Oracle如何使用ASMM自動共享記憶體管理記憶體OracleASM
- linux記憶體管理(一)實體記憶體的組織和記憶體分配Linux記憶體
- Linux 筆記分享十二:軟體包管理簡介Linux筆記
- Linux實體記憶體管理Linux記憶體
- iOS 記憶體管理MRCiOS記憶體
- “理解”iOS記憶體管理iOS記憶體
- iOS 記憶體管理研究iOS記憶體
- 01記憶體管理-概述記憶體
- python的記憶體管理Python記憶體
- 管理 Bitmap 記憶體(譯)記憶體
- C++記憶體管理C++記憶體
- CF的記憶體管理。記憶體
- Windows記憶體管理-分段Windows記憶體
- JavaScript的記憶體管理JavaScript記憶體
- HotSpot JVM 記憶體管理HotSpotJVM記憶體
- Linux記憶體洩露案例分析和記憶體管理分享Linux記憶體洩露