Oracle PGA記憶體的配置和使用
--預備知識
PGA(Process Global Area),是server process一段私有記憶體區,它包含有全域性變數,資料結構和一些控制資訊。在Oracle8i 中,PGA調整非常複雜,要調整SORT_AREA_SIZE、HASH_AREA_SIZE、BITMAP_MERGE_AREA_SIZE、 CREATE_BITMAP_AREA_SIZE等引數。在ORACLE9I中,只需要調整 PGA_AGGREGATE_TARGET。
--PGA_AGGREGATE_TARGET初始化設定
PGA_AGGREGATE_TARGET的值應該基於Oracle例項可利用記憶體的總量來設定,這個引數可以被動態的修改。假設Oracle例項可分配4GB的實體記憶體,剩下的記憶體分配給作業系統和其它應用程式。你也許會分配80%的可用記憶體給Oracle例項,即3.2G。現在必須在記憶體中劃分SGA和PGA區域。
在OLTP系統中,典型PGA記憶體設定應該是總記憶體的較小部分(例如20%),剩下80%分配給SGA。
OLTP:PGA_AGGREGATE_TARGET = (total_mem * 80%) * 20%
在DSS系統中,由於會執行一些很大的查詢,典型的PGA記憶體最多分配70%的記憶體。
DSS:PGA_AGGREGATE_TARGET = (total_mem * 80%) * 50%
在這個例子中,總記憶體4GB,DSS系統,你可以設定PGA_AGGREGATE_TARGET為1600MB,OLTP則為655MB。
--配置PGA自動管理
不用重啟DB,直接線上修改。
SQL> alter system set workarea_size_policy=auto scope=both;
System altered.
SQL> alter system set pga_aggregate_target=512m scope=both;
System altered.
SQL> show parameter workarea
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
workarea_size_policy string AUTO --這個設定成AUTO
SQL> show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 536870912
SQL>
--監控自動PGA記憶體管理的效能
V$PGASTAT:這個檢視給出了一個例項級別的PGA記憶體使用和自動分配的統計。
SQL> set lines 256
SQL> set pages 42
SQL> SELECT * FROM V$PGASTAT;
NAME VALUE UNIT
---------------------------------------------------------------- ---------- ------------
aggregate PGA target parameter 536870912 bytes --當前PGA_AGGREGATE_TARGET的值
aggregate PGA auto target 477379584 bytes --當前可用於自動分配了的PGA大小,不應該比PGA_AGGREGATE_TARGET 小
global memory bound 26843136 bytes --自動模式下工作區域的最大大小,Oracle根據工作負載自動調整。
total PGA inuse 6448128 bytes
total PGA allocated 11598848 bytes --PGA的最大分配
maximum PGA allocated 166175744 bytes
total freeable PGA memory 393216 bytes --PGA的最大空閒大小
PGA memory freed back to OS 69074944 bytes
total PGA used for auto workareas 0 bytes --PGA分配給auto workareas的大小
maximum PGA used for auto workareas 1049600 bytes
total PGA used for manual workareas 0 bytes
maximum PGA used for manual workareas 530432 bytes
over allocation count 1118 --例項啟動後,發生的分配次數,如果這個值大於0,就要考慮增加pga的值
bytes processed 114895872 bytes
extra bytes read/written 4608000 bytes
cache hit percentage 96.14 percent --命中率
16 rows selected.
--V$PGA_TARGET_ADVICE
SQL> SELECT round(PGA_TARGET_FOR_ESTIMATE/1024/1024) target_mb,
ESTD_PGA_CACHE_HIT_PERCENTAGE cache_hit_perc,
ESTD_OVERALLOC_COUNT
FROM v$pga_target_advice;
The output of this query might look like the following:
TARGET_MB CACHE_HIT_PERC ESTD_OVERALLOC_COUNT
---------- -------------- --------------------
63 23 367
125 24 30
250 30 3
375 39 0
500 58 0
600 59 0
700 59 0
800 60 0
900 60 0
1000 61 0
1500 67 0
2000 76 0
3000 83 0
4000 85 0
可以看出當TARGET_MB 為375M是ESTD_OVERALLOC_COUNT=0,所以我們可以將PGA_AGGREGATE_TARGET設定成375M。
地址:http://blog.chinaunix.net/uid-10218589-id-348945.html
PGA(Process Global Area),是server process一段私有記憶體區,它包含有全域性變數,資料結構和一些控制資訊。在Oracle8i 中,PGA調整非常複雜,要調整SORT_AREA_SIZE、HASH_AREA_SIZE、BITMAP_MERGE_AREA_SIZE、 CREATE_BITMAP_AREA_SIZE等引數。在ORACLE9I中,只需要調整 PGA_AGGREGATE_TARGET。
--PGA_AGGREGATE_TARGET初始化設定
PGA_AGGREGATE_TARGET的值應該基於Oracle例項可利用記憶體的總量來設定,這個引數可以被動態的修改。假設Oracle例項可分配4GB的實體記憶體,剩下的記憶體分配給作業系統和其它應用程式。你也許會分配80%的可用記憶體給Oracle例項,即3.2G。現在必須在記憶體中劃分SGA和PGA區域。
在OLTP系統中,典型PGA記憶體設定應該是總記憶體的較小部分(例如20%),剩下80%分配給SGA。
OLTP:PGA_AGGREGATE_TARGET = (total_mem * 80%) * 20%
在DSS系統中,由於會執行一些很大的查詢,典型的PGA記憶體最多分配70%的記憶體。
DSS:PGA_AGGREGATE_TARGET = (total_mem * 80%) * 50%
在這個例子中,總記憶體4GB,DSS系統,你可以設定PGA_AGGREGATE_TARGET為1600MB,OLTP則為655MB。
--配置PGA自動管理
不用重啟DB,直接線上修改。
SQL> alter system set workarea_size_policy=auto scope=both;
System altered.
SQL> alter system set pga_aggregate_target=512m scope=both;
System altered.
SQL> show parameter workarea
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
workarea_size_policy string AUTO --這個設定成AUTO
SQL> show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 536870912
SQL>
--監控自動PGA記憶體管理的效能
V$PGASTAT:這個檢視給出了一個例項級別的PGA記憶體使用和自動分配的統計。
SQL> set lines 256
SQL> set pages 42
SQL> SELECT * FROM V$PGASTAT;
NAME VALUE UNIT
---------------------------------------------------------------- ---------- ------------
aggregate PGA target parameter 536870912 bytes --當前PGA_AGGREGATE_TARGET的值
aggregate PGA auto target 477379584 bytes --當前可用於自動分配了的PGA大小,不應該比PGA_AGGREGATE_TARGET 小
global memory bound 26843136 bytes --自動模式下工作區域的最大大小,Oracle根據工作負載自動調整。
total PGA inuse 6448128 bytes
total PGA allocated 11598848 bytes --PGA的最大分配
maximum PGA allocated 166175744 bytes
total freeable PGA memory 393216 bytes --PGA的最大空閒大小
PGA memory freed back to OS 69074944 bytes
total PGA used for auto workareas 0 bytes --PGA分配給auto workareas的大小
maximum PGA used for auto workareas 1049600 bytes
total PGA used for manual workareas 0 bytes
maximum PGA used for manual workareas 530432 bytes
over allocation count 1118 --例項啟動後,發生的分配次數,如果這個值大於0,就要考慮增加pga的值
bytes processed 114895872 bytes
extra bytes read/written 4608000 bytes
cache hit percentage 96.14 percent --命中率
16 rows selected.
--V$PGA_TARGET_ADVICE
SQL> SELECT round(PGA_TARGET_FOR_ESTIMATE/1024/1024) target_mb,
ESTD_PGA_CACHE_HIT_PERCENTAGE cache_hit_perc,
ESTD_OVERALLOC_COUNT
FROM v$pga_target_advice;
The output of this query might look like the following:
TARGET_MB CACHE_HIT_PERC ESTD_OVERALLOC_COUNT
---------- -------------- --------------------
63 23 367
125 24 30
250 30 3
375 39 0
500 58 0
600 59 0
700 59 0
800 60 0
900 60 0
1000 61 0
1500 67 0
2000 76 0
3000 83 0
4000 85 0
可以看出當TARGET_MB 為375M是ESTD_OVERALLOC_COUNT=0,所以我們可以將PGA_AGGREGATE_TARGET設定成375M。
地址:http://blog.chinaunix.net/uid-10218589-id-348945.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28282660/viewspace-1663284/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SGA和PGA記憶體管理記憶體
- oracle例項記憶體(SGA和PGA)調整Oracle記憶體
- oracle資料庫記憶體分配(sga和pga)Oracle資料庫記憶體
- ORACLE記憶體管理 之一 ORACLE PGAOracle記憶體
- Oracle記憶體結構研究-PGA篇Oracle記憶體
- 【SGA】【PGA】普適的Oracle記憶體分配策略Oracle記憶體
- PGA 記憶體的管理 (zt)記憶體
- ORACLE 記憶體管理 之二 PGA v$pgastatOracle記憶體AST
- ORACLE RAC 記憶體SGA,PGA配置超過300G的問題Oracle記憶體
- Oracle的記憶體分配和使用Oracle記憶體
- oracle12c之 控制pdb中sga 與 pga 記憶體使用Oracle記憶體
- Oracle體系結構之記憶體結構(SGA、PGA)Oracle記憶體
- Oracle9i 自動管理PGA記憶體(zt)Oracle記憶體
- Oracle 之 配置HugePages記憶體Oracle記憶體
- ORACLE記憶體管理 之三 PGA v$sql_workarea_histogram v$pga_target_adviceOracle記憶體SQLHistogram
- 對oracle例項的記憶體(SGA和PGA)進行調整,優化資料庫性Oracle記憶體優化資料庫
- 記憶體的配置和使用——效能調整手冊和參考記憶體
- 【大頁記憶體】Oracle資料庫配置大頁記憶體記憶體Oracle資料庫
- 當實體記憶體小於sga+pga時記憶體
- 如何檢視和設定sga和pga的當前記憶體的建議值記憶體
- linux的hugepage的配置-優化oracle記憶體 .Linux優化Oracle記憶體
- Oracle記憶體分配與使用(zt)Oracle記憶體
- aix +oracle 記憶體使用說明AIOracle記憶體
- 【記憶體管理】Oracle如何使用ASMM自動共享記憶體管理記憶體OracleASM
- ORACLE RAC 300G記憶體配置Oracle記憶體
- yarn記憶體配置Yarn記憶體
- 如何配置oracle資料庫伺服器的記憶體Oracle資料庫伺服器記憶體
- Ogre記憶體池的使用和說明記憶體
- 如何配置 SQL Server 使用 2 GB 以上的實體記憶體SQLServer記憶體
- Oracle 體系結構 SGA 和PGA 總結Oracle
- 從記憶體洩露、記憶體溢位和堆外記憶體,JVM優化引數配置引數記憶體洩露記憶體溢位JVM優化
- 實體記憶體和虛擬記憶體記憶體
- linux記憶體管理(一)實體記憶體的組織和記憶體分配Linux記憶體
- 記憶體配置的最佳化記憶體
- MySQL InnoDB記憶體配置MySql記憶體
- Jmeter:修改記憶體配置JMeter記憶體
- Oracle 記憶體管理Oracle記憶體
- oracle 共享記憶體Oracle記憶體