Question & Answer
Question
バッファー・プールを新規に作成、もしくは既存のバッファー・プールのサイズを拡張したあと、変更を反映させるためにデータベースを再活動化したところ、メモリーが不足して活動化できませんでした。対応方法を教えてください。
Answer
Db2 はデータベースを活動化する際、定義されているバッファー・プールを指定されたサイズで確保しようとします。データベースに割り振ることができる仮想メモリーが不足していると、ごく小さなシステム・バッファー・プール (16ページ) だけが確保された状態でデータベースが活動化されます。
通常は、この状態でバッファー・プールのサイズを小さくする、あるいは不要なバッファー・プールを削除するなどしてバッファー・プールに必要なメモリー量を調整した上で、データベースの再活動化を試みます。
しかし、再活動化時に破損回復やロールフォワードが必要になる場合は、これらの作業がバッファー・プール・サイズ不足のために失敗することがあります。
DB2_OVERRIDE_BPF レジストリー変数を設定することで、一時的にバッファー・プール・サイズを上書きしてデータベースを活動化させることができます。
SQL1478W 定義されたバッファー・プールを開始できませんでした。代わりに、DB2 のサポートするページ・サイズごとに、小さいバッファー・プールを開始しました。
通常は、この状態でバッファー・プールのサイズを小さくする、あるいは不要なバッファー・プールを削除するなどしてバッファー・プールに必要なメモリー量を調整した上で、データベースの再活動化を試みます。
しかし、再活動化時に破損回復やロールフォワードが必要になる場合は、これらの作業がバッファー・プール・サイズ不足のために失敗することがあります。
DB2_OVERRIDE_BPF レジストリー変数を設定することで、一時的にバッファー・プール・サイズを上書きしてデータベースを活動化させることができます。
- 実行例(すべてのユーザー定義バッファー・プールのサイズを 5000 ページに指定する例)
db2set DB2_OVERRIDE_BPF=5000
-
db2set DB2_OVERRIDE_BPF=
なお、DB2_OVERRIDER_BPF レジストリー変数の設定を反映させるためには、インスタンスの再起動が必要です。
db2diag.log 出力例 (破損回復に失敗するケース):
運用上の考慮点
DB2_OVERRIDE_BPF は、あくまで一時的な回避策として使用してください。常時設定したまま稼動させることは推奨されません。
関連情報
db2diag.log 出力例 (破損回復に失敗するケース):
2012-03-30-22.59.17.605226+480 I818298135E454 LEVEL: Warning
PID : 32050 TID : 47423317181088PROC : db2agent(SAMPLE) 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-7 APPID: *LOCAL.db2inst1.120330145913
AUTHID : DB2INST1
FUNCTION: DB2 UDB, recovery manager, sqlpresr, probe:410
MESSAGE : Crash recovery started. LowtranLSN 00002E556C186C40 MinbuffLSN
00002E4EE2DF26B7
:
2012-03-30-22.59.17.795466+480 E818299485E501 LEVEL: Error
PID : 32144 TID : 47423317181088PROC : db2redow(SAMPLE) 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-7 APPID: *LOCAL.db2inst1.120330145913
AUTHID : DB2INST1
FUNCTION: DB2 UDB, Common Trace API, sqlbFreeUpSlot, probe:122
MESSAGE : ADM6019E All pages in buffer pool "IBMSYSTEMBP32K" (ID
"4099") are in use. Refer to the documentation for SQLCODE -1218.
:
2012-03-30-22.59.17.795946+480 I818300467E427 LEVEL: Severe
PID : 32144 TID : 47423317181088PROC : db2redow(SAMPLE) 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-7 APPID: *LOCAL.db2inst1.120330145913
AUTHID : DB2INST1
FUNCTION: DB2 UDB, Common Trace API, sqlbFreeUpSlot, probe:0
DATA #1 : String, 44 bytes
Current size of bufferpool #4099: 16 slots.
2012-03-30-22.59.17.796062+480 I818300895E444 LEVEL: Severe
PID : 32144 TID : 47423317181088PROC : db2redow(SAMPLE) 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-7 APPID: *LOCAL.db2inst1.120330145913
AUTHID : DB2INST1
FUNCTION: DB2 UDB, data management, sqldRedo, probe:6299
RETCODE : ZRC=0x8502002C=-2063466452=SQLB_BPFULL
"no available buffer pool pages"
:
2012-03-30-22.59.17.806984+480 E818314887E419 LEVEL: Error
PID : 32050 TID : 47423317181088PROC : db2agent(SAMPLE) 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-7 APPID: *LOCAL.db2inst1.120330145913
AUTHID : DB2INST1
FUNCTION: DB2 UDB, base sys utilities, recover, probe:60
MESSAGE : ADM1532E Crash recovery has failed with SQLCODE "-1042".
運用上の考慮点
DB2_OVERRIDE_BPF は、あくまで一時的な回避策として使用してください。常時設定したまま稼動させることは推奨されません。
関連情報
[{"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":"a8m500000008PlPAAU","label":"Database Objects-\u003EBufferpools"}],"ARM Case Number":"","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"}],"Version":"All Version(s)"}]
Was this topic helpful?
Document Information
Modified date:
25 August 2023
UID
swg21594745