2017.09.26
PGA AGGREGATE TARGET
目次
基本情報
パラメータ情報
Syntax:PGA_AGGREGATE_TARGET 設定方法 ・Parameter File ・ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 1G バージョンとデフォルト 9iR2 : 0 10gR1 : Max(10M, 20% of SGA)
説明
PGA_AGGREGATE_TARGET(PAT)パラメータは、単一のインスタンスで起動されているすべてのサーバプロセス(Server Process)が使用するPGAメモリーの合計サイズの目標値(Target)を設定します。この機能を使用すると、ユーザーがSort Area Sizeと同じWorkarea Sizeを個別指定しなくても、Oracleが目標値に基づいて、各プロセスごとに最適なサイズのPGAを割り当てます。
この値がセットされると、WORKAREA_SIZE_POLICYパラメータの値は、AUTOに設定されたものとみなされます。またSORT_AREA_SIZE、HASH_AREA_SIZEと同じWorkarea Sizeを決定するパラメータの値は無視されます。
注意
PGA/ Workareaサイズ
PGA_AGGREGATE_TARGETの値と実際のサーバプロセスが使用可能なメモリとの間の相関関係を理解する必要があります。仮にこの値が1Gに設定されたことは何を意味するかを下の例で見てみましょう。
ALTER SYSTEM SET PGA_AGGREGATE_TARGET=1G; - パラメータ値の照会 pga_aggregate_target=1073741824=1G _smm_max_size=104850=100M _smm_px_max_size=524288=500M _pga_max_size=214732800=200M
・_SMM_MAX_SIZEパラメータの値は、単一のサーバープロセスが使用可能な最大Wokrareaサイズを意味します。 上記例を見るとPATの値を1Gに指定しても、実際の一つのサーバプロセスが使用可能な最大Workareaは100Mに制限されます。 ・_SMM_PX_MAX_SIZEパラメータの値は、単一の並列実行に属する並列スレーブが使用可能な最大Workareaサイズを意味します。 上記例を見るとすべての並列スレーターこれらの使用可能なWorkarea領域の最大サイズは500Mに制限されます。 ・_PGA_MAX_SIZEパラメータの値は、単一のサーバープロセスが使用可能な最大PGAサイズを意味します。 PGAはWokareaほかSession情報、Cursor情報などの情報を含んでいます。
Hash/ Sort操作との関係
PGA_AGGREGATE_TARGETパラメータによって指定されたWorkareaの大きさは、Hash作業とSort操作のパフォーマンスを決定する重要な値です。使用可能なWorkareaのサイズに応じてHash/ Sort操作がOptimal、OnepassまたはMultipassで実行され、どのような方法で実行されるのかに応じて、Hash/ Sort操作のパフォーマンスが大幅に違ってきます。Hash/ Sort操作は可能なOptimalやOnepass方法で実行する必要があり、PGA_AGGREGATE_TARGETの値を利用してWorkareaのサイズを増やすことが可能です。
V$ SQL_WORKAREA、V$ SQL_WORKAREA_ACTIVEビューを利用すると、各SQLカーソルごとWorkareaをどのように使用するか、いくつかの実行方法(Optimal、Onepass、Multipass)を使用したかの情報を簡単に確認することができます。V$ SQL_WORKAREA_HISTOGRAMビューを使用すると、Workareaのサイズグループごとに実行する分布を知ることができます。
SELECT low_optimal_size AS low, high_optimal_size as high, optimal_executions as optimal, onepass_executions as onepass, multipasses_executions as multipass FROM V$SQL_WORKAREA_HISTOGRAM
LOW HIGH OPTIMAL ONEPASS MULTIPASS 0 1023 0 0 0 1024 2047 0 0 0 2048 4095 701796 0 0 4096 8191 4 0 0 8192 16383 6 0 0 16384 32767 0 0 0 32768 65535 0 0 0 ...
非常に大きなSort Areaが必要な場合
非常に大きなサイズのデータをSortしようとする場合には、大きいサイズのWorareaを必要とします。しかし、PGA_AGGREGATE_TARGETを使用している場合は、各サーバプロセスが使用可能な最大Workareaのサイズが、Oracleによって一定の大きさに制限されます。オラクルによって指定されたサイズ以上のSort Areaが必要な場合には、そのセッションに対してWORKAREA_SIZE_POLICYの値をManualに切り替える方法を使用することができます。以下に簡単な例を示します。
ALTER SESSION SET WORKAREA_SIZE_POLICY = MANUAL; ALTER SESSION SET SORT_AREA_SIZE = 2000000;
関連情報
1. _SMM_MAX_SIZEパラメータ 2. _SMM_PX_MAX_SIZEパラメータ 3. _PGA_MAX_SIZEパラメータ 4. HASH_AREA_SIZEパラメータ 5. SORT_AREA_SIZEパラメータ 6. SORT_AREA_RETAINED_SIZEパラメータ 7. WORK_AREA_SIZE_POLICYパラメータ 8. MEMORY_TARGETパラメータ 9. direct path write temp待機イベント 10. direct path read temp待機イベント 11. V$ SQL_WORKAREAビュー 12. V$ SQL_WORKAREA_ACTIVEビュー 13. V$ SQL_WORKAREA_HISTOGRAMビュー 14. 10032 Event 15. 10033 Event 16. 10046 Event 17. 10104 Event
分析例
PGA_AGGREGATE_TARGET整合性分析
OS Free Memory使用量とPGA_AGGREGATE_TARGET
Free Memory推移
分析しようとするインスタンスは、早朝の時間はOS Free Memoryが1G程度で十分に維持されるが、業務時間にはFree Memoryがほとんどない場合を取り上げます。(13時11分には、Free Memoryが55MBある)
Total Session推移
早朝には、Total Sessionが100個程度を維持するか、業務時間にはMax550個まで増加します。
Free MemoryとTotal Session推移比較
Sessionsが増加し、Sessionが割り当てられたPGA MemoryをSessionがReleaseされるまで保有することになるので、継続的にSessionが増加する場合、Free Memoryは持続的に減少することになります。
PGAメモリーの使用状況を確認
パラメータ
_pga_max_size = 209715200 Bytes -> 200MB _smm_max_size = 40089 KB -> 약 40MB pga_aggregate_target = 821035008 Bytes -> 783MB
V$PGA_TARGET_ADVICE
結論
1つのSessionに割り当てられているPGA MemoryのMax Sizeは、上記の設定で確認して見たとき40Mまで割り当てることができます。
基本的に割り当てられているPGA MemoryはSessionがInactive SessionにStatusが変更されてもOSに返却せずに、当該セッションが保有することになるので、継続的にPGA Memory Sizeが増加することになります。
それほどOS Free Memoryは減少することになりますが、その増加値はPGA_AGGREGATE_TARGETに割り当てられたサイズまで増加することになり、これ以上増加しません。
20時間のlogons sessionのパターンを見ると、業務時間に増加していたセッションは、早朝の時間に戻ってreleaseになってFree Memoryが1G程度を維持するようになって業務時間にtotal sessionsが増加し、Free Memoryが減少をする一連のパターンを維持している。営業時間のセッションの増加による通常のメモリの使用が非業務時間と比較され、問題となると判断することができる余地があります。
つまり、この場合は、異常な事由によるFree Memory減少ではないと判断されます。