プライマリ・コンテンツに移動
Oracle® Database VLDBおよびパーティショニング・ガイド
12c リリース1 (12.1)
B71291-10
目次へ移動
目次
索引へ移動
索引

前
次

SHARED_POOL_SIZE

パラレル実行では、シリアルSQL実行で必要なメモリー・リソースに加えてさらにメモリー・リソースが必要です。追加のメモリーは、問合せサーバー・プロセスと問合せコーディネータ間での通信とデータの受渡しに使用されます。

Oracle Databaseによって、共有プールから問合せサーバー・プロセスにメモリーが割り当てられます。次のように共有プールをチューニングします。

  • 共有プールの他のクライアント(共有カーソルやストアド・プロシージャなど)を考慮します。

  • 大きな値ではマルチユーザー・システムでのパフォーマンスが向上しますが、小さな値ではメモリー使用量が減ることに注意します。

  • その後、パラレル実行で使用されるバッファ数を監視し、shared pool PX msg poolと、ビューV$PX_PROCESS_SYSSTATの出力に示されている現在の最高水位標を比較します。

    注意:

    使用可能な十分なメモリーがない場合は、エラー・メッセージ12853(「PXバッファのメモリーが不足しています: 現在はstringKBですが、最大stringKBが必要です」)が生成されます。これは、PXバッファのためのSGAメモリーが十分でない場合に発生します。少なくとも(MAX - CURRENT)バイトを追加するようにSGAメモリーを再構成する必要があります。

デフォルトでは、Oracle Databaseはパラレル実行バッファを共有プールから割り当てます。

Oracle Databaseで起動時に次のエラーが表示された場合、SHARED_POOL_SIZEの値を、データベースが起動できるように十分に下げる必要があります。

ORA-27102: out of memory 
SVR4 Error: 12: Not enough space 

SHARED_POOL_SIZEの値を下げた後で、次のエラーが発生する場合があります。

ORA-04031: unable to allocate 16084 bytes of shared memory 
   ("SHARED pool","unknown object","SHARED pool heap","PX msg pool") 

その場合は、次の問合せを実行して、Oracle Databaseが16,084バイトを割り当てられなかった理由を判別します。

SELECT NAME, SUM(BYTES) FROM V$SGASTAT WHERE POOL='SHARED POOL' 
  GROUP BY ROLLUP (NAME); 

出力は次のようになります。

NAME                       SUM(BYTES) 
-------------------------- ---------- 
PX msg pool                   1474572 
free memory                    562132
                              2036704 

SHARED_POOL_SIZEを指定したときに、保持するよう指定したメモリー容量がプールよりも大きい場合、Oracle Databaseでは、取得できるメモリーのすべてを割り当てません。一部の領域が残されます。問合せが実行されるとき、Oracle Databaseは必要なメモリーを取得しようとします。Oracle Databaseは560KBを使用し、失敗するとさらに16KBが必要になります。このエラーでは、必要とされた容量の累積は報告されません。必要な追加メモリー容量を判別する最適な方法としては、「メッセージ・バッファに必要なメモリー」の式を使用します。

この例の問題を解決するには、SHARED_POOL_SIZEの値を増やします。サンプル出力に表示されるように、SHARED_POOL_SIZEは約2MBです。使用可能なメモリー容量によって異なりますが、SHARED_POOL_SIZEの値を4MBに増やしてから、データベースの起動を試行してください。Oracle Databaseで引き続きORA-4031メッセージが表示される場合は、起動が成功するまでSHARED_POOL_SIZEの値を次第に増やします。

関連項目:

SHARED_POOL_SIZE初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください