2009-04-01 17 views
0

私たちのアプリケーションで少数のストアドプロシージャを実行しているときに上記のエラーが発生しています。実際のエラーはsqlcode = -930です。これは、DB2のドキュメントによれば、「ステートメントを処理するのに十分なストレージがありません。ストアドプロシージャを実行しているときのdb2ストレージエラー

質問:どのようにこれらのプロクシが利用できるストレージを増やすことができますか?他に誰かにこのエラーが発生していたら、あなたは解決策を見つけましたか?

おかげで、あなたはあなたが使用しているためにどのプラットフォームとして回答していないので

+0

解決策や問題はしばしばそのプラットフォームに依存するため、db2にタグ付けしてプラットフォーム(LUW、iSeriesまたはSystem z)を指定するとよいでしょう。 – paxdiablo

答えて

1

は、私は初心者のためにAIXで刺してみましょう。

特定の原因を調べるには、db2diag.logを調べる必要がありますが、通常、AIXには共用メモリー・セグメントが不足しているためです。

AIXには合計16個の共有メモリセグメントがあり、そのうちの7個はデータベースで使用できます。データベースで実際に使用されている量は、トラブルシューティングガイドで調べることなく覚えておくのが難しい数式で計算できます。

しかし、データベースでは6つのセグメントが使用され、1つのセグメントしか残さない可能性があります。私は状況が発生したときに、メモリマップされたI/O要求がストアドプロシージャと同時に発生するのを見てきました。

これらはどちらも共有メモリセグメントが必要です.I/Oが最初に開始されると、ストアドプロシージャは表示されているとおりに失敗します。

  • 無効にメモリマップされたI/O:この問題を解決するために

    の方法は1つ以上を実行してセグメントを解放します。

  • データベースによるセグメントの使用量を減らします。その式が必要ですが、バッファプール、ヒープサイズ、ロックリストが必要です。
  • 必要がない場合はintra_parallelをオフにします。
関連する問題