ORACLE記憶體管理 之一 ORACLE PGA
SGA, System Global Area---可以被所以PROCESS訪問。
PGA, Process Global Area—單個PROCESS(thread)私有。
UGA會包括在其中之一里
UGA, User Global Area—SESSION私有,shared server的時候在SGA,dedicated server的時候在PGA
- 首先先看看PGA
WORKAREA_SIZE_POLICY指的就是PGA的管理,PGA的管理分手工和自動(PGA裡非UGA的部分,比如sorting,hashing),以下引數在手工管理時用到SORT_AREA_SIZE,SORT_AREA_RETAINED_SIZE,sort結束後保留的大小,比如 SORT_AREA_SIZE是1M, SORT_AREA_RETAINED_SIZE是512K,則一個大的SORT可能用完1M,SORT 完後超過512K的會交換到TEMP SEGMENT裡.
HASH_AREA_SIZE server process用來在記憶體裡存hash table的大小.
大致來看,如果workarea_size_policy=manual那麼pga_aggregate_target將會不被使用,而是使用響應的sort_area_size,hash_area_size等引數.;如果workarea_size_policy=auto的話那麼就會使用pga_aggregate_target而不使用其他的sort_area_size,hash_area_size等引數.
if ( 資料庫版本 >= 10gR1 )
then
if (workarea_size_policy=auto)
then
sort area size 無效
else
sort area size 有效
end if
else -- 資料庫版本 < 10gr1
if ( shared server 連線方式 )
then
sort area size 有效
else -- dedicated server連線方式
if (workarea_size_policy=auto)
then
sort area size 無效
else
sort area size有效
end if
end if
end if
- 用sort_area_size 512K,1M,1G來看手工與自動管理時的異同,以下是自動管理
SQL> create table wwm as select * from all_objects;
SQL> alter session set sort_area_size=524288;
session xxx memory表示現在這個時刻用了多少,session xxx memory max 表示最高峰時用了多少
SQL> set autotrace traceonly statistics;
SQL> select * from wwm order by 1,2,3,4
---------------------------------------------------------
0 recursive calls
0 db block gets
420 consistent gets
0 physical reads
0 redo size
2178018 bytes sent via SQL*Net to client
22768 bytes received via SQL*Net from client
2038 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
30547 rows processed
SQL> alter session set sort_area_size=1048576; 同上
SQL> alter session set sort_area_size=1048576000; 同上
自動管理時sort_area_size不起作用.
- 改成手工管理後
SQL> alter session set workarea_size_policy=manual;
SQL> alter session set sort_area_size = 65536; --64K
SQL> set autotrace traceonly statistics;
SQL> select * from wwm order by 1,2,3,4
----------------------------------------------------------
0 recursive calls
22 db block gets
420 consistent gets
513 physical reads
0 redo size
2178018 bytes sent via SQL*Net to client
22768 bytes received via SQL*Net from client
2038 SQL*Net roundtrips to/from client
0 sorts (memory)
1 sorts (disk)
30547 rows processed
============退出,重進
SQL> alter session set sort_area_size=1048576;
SQL> set autotrace traceonly statistics;
SQL> select * from wwm order by 1,2,3,4;
----------------------------------------------------------
0 recursive calls
4 db block gets
420 consistent gets
424 physical reads
0 redo size
2178018 bytes sent via SQL*Net to client
22768 bytes received via SQL*Net from client
2038 SQL*Net roundtrips to/from client
0 sorts (memory)
1 sorts (disk)
30547 rows processed
還有排序操作在DISK上
SQL> set autotrace off
==============退出,重進
SQL> alter session set sort_area_size=1048576000;
SQL> set autotrace traceonly statistics;
SQL> select * from wwm order by 1,2,3,4;
----------------------------------------------------------
0 recursive calls
0 db block gets
420 consistent gets
0 physical reads
0 redo size
2178018 bytes sent via SQL*Net to client
22768 bytes received via SQL*Net from client
2038 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
30547 rows processed
以上分別用64K,1M,1G來測試,分配1G並不代表就要切實分配1G的MEM出去。而是說你有權利用到1G,相反,設定64K並不代表你的session只能用64k,一個SQL可能有多個SORT,指的是每個SORT 的限額.
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/633084/viewspace-888417/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【記憶體管理】Oracle AMM自動記憶體管理詳解記憶體Oracle
- oracle12c之 控制pdb中sga 與 pga 記憶體使用Oracle記憶體
- 【記憶體管理】Oracle如何使用ASMM自動共享記憶體管理記憶體OracleASM
- Oracle:PGA 簡介Oracle
- oracle 11g自動記憶體管理Oracle記憶體
- Oracle 11gR2 ASM例項記憶體管理OracleASM記憶體
- ORACLE AMM 、ASMM 、自動記憶體管理(官方手冊)OracleASM記憶體
- 從Oracle資料庫故障到AIX記憶體管理Oracle資料庫AI記憶體
- [20210126]探究oracle記憶體分配.txtOracle記憶體
- Oracle記憶體結構(四)----如何獲得Oracle各記憶體段的內部資訊(轉)Oracle記憶體
- 【大頁記憶體】Oracle資料庫配置大頁記憶體記憶體Oracle資料庫
- Oracle OCP(39):Database 記憶體結構OracleDatabase記憶體
- Oracle:記憶體設定注意事項Oracle記憶體
- 成為MySQL DBA後,再看ORACLE資料庫(五、記憶體管理)MySqlOracle資料庫記憶體
- Oracle - 資料庫的記憶體結構Oracle資料庫記憶體
- Oracle - 資料庫的記憶體調整Oracle資料庫記憶體
- Oracle Exadata與SGA快取記憶體CQOracle快取記憶體
- [20210126]探究oracle記憶體分配3.txtOracle記憶體
- [20210126]探究oracle記憶體分配4.txtOracle記憶體
- 記憶體管理 記憶體管理概述記憶體
- oracle RDBMS Kernel Executable 佔用記憶體過高Oracle記憶體
- Oracle面試寶典-記憶體結構篇Oracle面試記憶體
- [20190202]使用smem查詢oracle記憶體使用.txtOracle記憶體
- JVM虛擬機器和Oracle資料庫記憶體管理的學習JVM虛擬機Oracle資料庫記憶體
- 【TUNE_ORACLE】PGA_AGGREGATE_LIMIT詳解(一)PGA_AGGREGATE_TARGET的限制OracleMIT
- 【TUNE_ORACLE】PGA_AGGREGATE_LIMIT詳解(二)PGA_AGGREGATE_LIMIT的作用OracleMIT
- 記憶體管理篇——實體記憶體的管理記憶體
- [20191115]oracle例項佔用記憶體計算.txtOracle記憶體
- 【記憶體管理】記憶體佈局記憶體
- 【TUNE_ORACLE】PGA_AGGREGATE_LIMIT詳解(三)PGA_AGGREGATE_LIMIT的大小設定OracleMIT
- 記憶體管理兩部曲之實體記憶體管理記憶體
- Java的記憶體 -JVM 記憶體管理Java記憶體JVM
- Go:記憶體管理與記憶體清理Go記憶體
- 記憶體管理兩部曲之虛擬記憶體管理記憶體
- 【MEMORY】Oracle記憶體結構資源常用檢視及sqlOracle記憶體SQL
- Oracle在Linux下對記憶體大頁HugePage的實踐OracleLinux記憶體
- Oracle記憶體結構(一)----SGA的區域資訊(轉)Oracle記憶體
- JavaScript 記憶體管理JavaScript記憶體
- iOS 記憶體管理iOS記憶體