Question & Answer
Question
アプリケーションが SQL0956C で失敗し、Db2 診断ログ (db2diag.log) に DIA8302C No memory available in the database heap が多数記録されたり、db2pd -alldbs -memp で観察するとデータベース・ヒープ (dbh) が 15分毎に増加することがあります。 このメモリー・エラーや、メモリー使用量増加の理由と対処方法を教えてください。
Cause
Db2 9.7 以降、データベース・オブジェクトが最後に使用された日付が、システム・カタログに記録されるようになりました。
データベース・オブジェクトが最後に使用された日付の特定
LASTUSED デーモン (db2lused) は、パッケージ・キャッシュを参照して SYSCAT.PACKAGES に登録されているパッケージの使用日付を更新します。
パッケージ・キャッシュのクリーンアップによって、使用されたパッケージがキャッシュから除去されるとき、使用履歴を記録するために、パッケージの情報がデータベース・ヒープに一時的に保管されます。
ここで、データベース・ヒープに空きがなく、パッケージの情報を保管できない場合、以下のような診断情報が db2diag.log に記録されます。
エラーが記録されない場合でも、db2lused は 15 分のインターバルで情報を収集するため、最大 15分間はこの情報がデータベース・ヒープに保管されます。
このため、15分間隔でデータベース・ヒープが増加する動作が観察されることがあります。
データベース・オブジェクトが最後に使用された日付の特定
LASTUSED デーモン (db2lused) は、パッケージ・キャッシュを参照して SYSCAT.PACKAGES に登録されているパッケージの使用日付を更新します。
パッケージ・キャッシュのクリーンアップによって、使用されたパッケージがキャッシュから除去されるとき、使用履歴を記録するために、パッケージの情報がデータベース・ヒープに一時的に保管されます。
ここで、データベース・ヒープに空きがなく、パッケージの情報を保管できない場合、以下のような診断情報が db2diag.log に記録されます。
2010-09-21-11.04.12.959530 I2672081A625 LEVEL: Error
PID : 3342838 TID : 260913 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-47888 APPID: 192.168.1.23.49952.100921012054
AUTHID : DB2INST1
EDUID : 260913 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, access plan manager, sqlra_add_pkg_id_to_ejected_list, probe:252
RETCODE : ZRC=0x8B0F0002=-1961951230=SQLO_NOMEM_DBH
"No memory available in 'Database Heap'"
DIA8302C No memory available in the database heap.
エラーが記録されない場合でも、db2lused は 15 分のインターバルで情報を収集するため、最大 15分間はこの情報がデータベース・ヒープに保管されます。
このため、15分間隔でデータベース・ヒープが増加する動作が観察されることがあります。
Answer
以下のいずれかの方法で、SQL0956C エラーや診断ログのメッセージを抑制したり、データベース・ヒープの使用量を減らせる可能性があります。
関連情報
パスポート・アドバンテージによく寄せられる質問
[Db2] DB2 のメモリー管理 - 2.各メモリー・セットの役割
[Db2] DB2 のメモリー管理 - 3.各メモリー・プールの役割
[Db2] ADM4500W パッケージ・キャッシュ・オーバーフローの原因と対処方法
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート
- パッケージ・キャッシュの増加
パッケージ・キャッシュが十分に大きく、パッケージをクリーンアップする必要がない場合、パッケージの情報をデータベース・ヒープに保管する必要はありません。
ただし、使用しているパッケージの数やステートメントの種類が多い場合、パッケージ・キャッシュを追加してもクリーンアップが避けられないことがあります。設定例db2 connect to <db_name> db2 update db cfg using PCKCACHESZ <new_value>
db2 connect to <db_name> db2 update db cfg | grep PCKCACHESZ
- データベース・ヒープの増加 (エラー抑制のみ)
データベース構成パラメーター DBHEAP が固定値の場合、サイズを増やしたり AUTOMATIC に設定することで、割り当て可能なメモリーのサイズを増やします。
AUTOMATIC の場合、データベース・メモリーセット中のどのヒープも予約していないエリアを使用できます。設定例db2 connect to <db_name> db2 update db cfg using DBHEAP AUTOAMTIC
db2 connect to <db_name> db2 update db cfg | grep DBHEAP
- データベース・オブジェクトの使用日付を更新しない
データベース・オブジェクトの使用日付を追跡する要件がない場合、以下の設定で使用日付の更新を停止できます。db2set DB2_SYSTEM_MONITOR_SETTINGS="LAST_USE_INTERVAL:0" db2stop db2start
- Db2 のフィックスパック・レベルが低い場合、パッケージ・キャッシュにおけるメモリー・リークの障害のために、パッケージ・キャッシュを増加しても効果がない可能性があります。パッケージ・キャッシュを増加しても症状が改善しないときは、最新のフィックスパックを適用してください。
- 「関連情報」のメモリー管理資料に記述されているように、データベース・ヒープはデータベースの動作に必要とされる様々なメモリー要求を満たすために使用される汎用ヒープです。データベース・ヒープの使用量が単調増加する場合、以下のコマンド結果をサポートに送付すると、ヒープの詳細な利用状況が把握できます。
db2pd -db <データベース名> -memblocks 2 sort
関連情報
パスポート・アドバンテージによく寄せられる質問
[Db2] DB2 のメモリー管理 - 2.各メモリー・セットの役割
[Db2] DB2 のメモリー管理 - 3.各メモリー・プールの役割
[Db2] ADM4500W パッケージ・キャッシュ・オーバーフローの原因と対処方法
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート
[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m0z000000GozAAAS","label":"Memory"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]
Was this topic helpful?
Document Information
Modified date:
31 August 2023
UID
swg21625200