Question & Answer
Question
運用に支障はありませんが、db2diag.log に DIA8305C と ADM6073W が出力されています。原因と対応方法を教えてください。
Cause
以下のような診断ログが記録されるのは、ほとんどの場合は特定のデータベースのメモリーの肥大化、もしくは複数のデータベースの活動化によるメモリー不足が原因です。
また、データベース・メモリーが肥大化する原因の多くはバッファー・プールの拡張です。ここではバッファー・プールの拡張の原因について解説します。
また、データベース・メモリーが肥大化する原因の多くはバッファー・プールの拡張です。ここではバッファー・プールの拡張の原因について解説します。
2010-06-09-19.16.20.586719+540 E21220A932 LEVEL: Severe
PID : 5980310 TID : 3857 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-7 APPID: *LOCAL.db2inst1.100609101620
AUTHID : DB2INST1
EDUID : 3857 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, base sys utilities, sqeLocalDatabase::FirstConnect, probe:110
MESSAGE : ZRC=0x850F0005=-2062614523=SQLO_NOSEG
"No Storage Available for allocation"
DIA8305C Memory allocation failure occurred.
DATA #1 : String, 283 bytes
Failed to allocate the database shared memory set.
The configured DATABASE_MEMORY plus smaller overflow may have
exceeded INSTANCE_MEMORY or the maximum shared memory on the system.
Attempting to start up with only the system buffer pools.
Database shared memory set size is (bytes):
DATA #2 : unsigned integer, 8 bytes
1025861222
2010-06-09-19.16.20.828413+540 E22658A786 LEVEL: Warning
PID : 5980310 TID : 3857 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-7 APPID: *LOCAL.db2inst1.100609101620
AUTHID : DB2INST1
EDUID : 3857 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, buffer pool services, sqlbStartPools, probe:2
MESSAGE : ADM6073W The table space "SYSCATSPACE" (ID "0") is configured to use
buffer pool ID "1", but this buffer pool is not active at this time.
In the interim the table space will use buffer pool ID "4096". The
inactive buffer pool should become available at next database startup
provided that the required memory is available.
2010-06-09-19.16.20.844405+540 E23445A785 LEVEL: Warning
PID : 5980310 TID : 3857 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-7 APPID: *LOCAL.db2inst1.100609101620
AUTHID : DB2INST1
EDUID : 3857 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, buffer pool services, sqlbStartPools, probe:2
MESSAGE : ADM6073W The table space "TEMPSPACE1" (ID "1") is configured to use
buffer pool ID "1", but this buffer pool is not active at this time.
In the interim the table space will use buffer pool ID "4096". The
inactive buffer pool should become available at next database startup
provided that the required memory is available.
:
2010-06-09-19.16.21.167235+540 I27379A537 LEVEL: Severe
PID : 5980310 TID : 3857 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-7 APPID: *LOCAL.db2inst1.100609101620
AUTHID : DB2INST1
EDUID : 3857 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, buffer pool services, sqlbinit, probe:620
DATA #1 : String, 70 bytes
Database will come up with hidden buffer pools.
totalBufferPoolPages:
DATA #2 : signed integer, 8 bytes
原因 1: ALTER BUFFERPOOL コマンドにより設定したバッファー・プール・サイズが大きすぎた
【シナリオ例 1】
あるデータベースのバッファー・プールを ALTER BUFFER POOL コマンドで拡張したところ、この時点ではメモリーが確保されず、次回データベースの活動化まで変更が据え置かれ、その後再度データベースを活動化した際に DIA8305C が出力された。
【確認方法】
この場合、db2diag.log にはバッファー・プールの拡張が据え置かれたことを示す ADM6050W が出力されます。
また、以下の EDU、FUNCTION で、バッファーを拡張したことを示す出力があります。
EDUNAME: db2agent
FUNCTION: sqlbAlterBufferPoolAct
【シナリオ例 1】
あるデータベースのバッファー・プールを ALTER BUFFER POOL コマンドで拡張したところ、この時点ではメモリーが確保されず、次回データベースの活動化まで変更が据え置かれ、その後再度データベースを活動化した際に DIA8305C が出力された。
【確認方法】
この場合、db2diag.log にはバッファー・プールの拡張が据え置かれたことを示す ADM6050W が出力されます。
また、以下の EDU、FUNCTION で、バッファーを拡張したことを示す出力があります。
EDUNAME: db2agent
FUNCTION: sqlbAlterBufferPoolAct
- [db2diag.log 出力例]
2012-04-26-15.51.21.161000+540 E3262F754 LEVEL: Warning
PID : 1368242 TID : 4371 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-7035 APPID: *LOCAL.db2inst1.120426065008
AUTHID : DB2INST1
EDUID : 4371 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, buffer pool services, sqlbAlterBufferPool, probe:50
MESSAGE : ADM6050W The ALTER BUFFERPOOL statement for buffer pool
"IBMDEFAULTBP" (ID "1") was successful but could not be performed
immediately because of insufficient memory. The change will take
effect on the next database startup. Refer to the documentation for
SQLCODE 20189.
2012-04-26-15.51.21.193000+540 E4018F569 LEVEL: Warning
PID : 1368242 TID : 4371 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-7035 APPID: *LOCAL.db2inst1.120426065008
AUTHID : DB2INST1
EDUID : 4371 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, buffer pool services, sqlbAlterBufferPool, probe:80
MESSAGE : ZRC=0x8002015E=-2147352226=SQLB_NO_BP_MEM "No more BP memory"
DATA #1 : String, 43 bytes
(Informational) Warning, alter was deferred
2012-04-26-15.51.21.208000+540 I4589F495 LEVEL: Info
PID : 1368242 TID : 4371 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-7035 APPID: *LOCAL.db2inst1.120426065008
AUTHID : DB2INST1
EDUID : 4371 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, buffer pool services, sqlbAlterBufferPoolAct, probe:90
MESSAGE : Altering bufferpool "IBMDEFAULTBP" From: "250" To: "1000000"
db2diag.log の確認ポイント:
DB: -データベース名を確認します。
MESSAGE: -バッファー・プール名、および変更前のサイズと変更後のサイズを確認します。
【シナリオ例 2】
あるデータベースのバッファー・プールを ALTER BUFFER POOL コマンドで拡張した後、他のデータベースを活動化した際に DIA8305C が出力された。
【確認方法】
この場合 db2diag.log に ADM6050W の出力はありませんが、以下の EDU、FUNCTION で、バッファー・プールを拡張したことを示す出力があります。
EDUNAME: db2agent
FUNCTION: sqlbAlterBufferPoolAct
- [db2diag.log 出力例]
2011-08-30-12.52.34.957425+480 I23658A505 LEVEL: Info
PID : 6643946 TID : 258 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-9 APPID: *LOCAL.db2inst1.110830045234
AUTHID : DB2INST1
EDUID : 258 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, buffer pool services, sqlbAlterBufferPoolAct, probe:90
MESSAGE : Altering bufferpool "IBMDEFAULTBP" From: "1000" <automatic> To:
"100000" <automatic>
DB: -データベース名を確認します。
MESSAGE: -バッファー・プール名および、変更前のサイズと変更後のサイズを確認します。
※バッファー・プール・サイズの後の <automatic> は、セルフチューニング可能を示します。
原因 2: セルフチューニング可能のバッファー・プールが拡張した
【シナリオ例】
あるデータベースのバッファー・プールが自動的に拡張した結果、このデータベースと同時に他のデータベースを活動化すると、DIA8305C が出力されるようになった。
【確認方法】
この場合、db2diag.log の以下の EDU、FUNCTION で、バッファーを拡張したことを示す出力があります。
EDUNAME: db2stmm
FUNCTION: sqlbAlterBufferPoolAct
※db2stmm はセルフチューニング・メモリー・マネージャーです。
- [db2diag.log 出力例]
2012-02-15-12.11.47.116379+540 I404450A513 LEVEL: Info
PID : 1540216 TID : 9655 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-9983 APPID: *LOCAL.db2inst1.120215020546
AUTHID : DB2INST1
EDUID : 9655 EDUNAME: db2stmm (SAMPLE) 0
FUNCTION: DB2 UDB, buffer pool services, sqlbAlterBufferPoolAct, probe:90
MESSAGE : Altering bufferpool "IBMDEFAULTBP" From: "1000" <automatic> To:
"152572" <automatic>
DB: -データベース名を確認します。
MESSAGE: -バッファー・プール名および、変更前のサイズと変更後のサイズを確認します。
※バッファー・プール・サイズの後の <automatic> は、セルフチューニング可能を示します。
また、sqllib/db2dump/stmmlog ディレクトリー内のSTMMログに、以下のような Type の出力があります。
Type: BUFFER POOL ( bufferpool_name )
- [stmm.*.log 出力例]
2012-02-15-12.11.47.372108+540 I3414835A759 LEVEL: Event
PID : 1540216 TID : 9655 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : DB75736
APPHDL : 0-9983 APPID: *LOCAL.db2inst1.120215020546
AUTHID : DB2INST1
EDUID : 9655 EDUNAME: db2stmm (SAMPLE) 0
FUNCTION: DB2 UDB, Self tuning memory manager, stmmLogRecordAfterResizes, probe:621
DATA #1 : String, 310 bytes
*** stmmCostBenefitRecord ***
Type: BUFFER POOL ( IBMDEFAULTBP )
PageSize: 4096
Original Size: 1000
Desired New Size: 152572
Actual New Size: 152572
Minimum Size: 1000
Potential Increase Amount: 0
Potential Increase Amount From OS: 0
Potential Decrease Amount: 0
Pages Available For OS: 0
Interval Time: 180.014
Type: -BUFFER POOL の後の()の中のバッファー・プール名を確認します。
Original Size: -変更前のサイズを確認します。
Actual New Size: -変更後のサイズを確認します。
原因 3: 構成アドバイザーにより、バッファー・プールに大きすぎるサイズが設定された
【シナリオ例】
データベース作成時、暗黙的、もしくは AUTOCONFIGURE コマンドにより明示的に構成アドバイザーが実行され、AUTOMATIC バッファー・プールの初期サイズに大きな値が設定された。
その結果、このデータベースと同時に他のデータベースを活動化すると DIA8305C が出力されるようになった。
【確認方法】
db2diag.log でバッファー・プール・サイズの変更を示す出力の前に、構成アドバイザーが実行されたことを示す CFG ADVIS: 出力があります。
- [db2diag.log 出力例]
2011-08-30-12.53.24.218400+480 I27838A401 LEVEL: Warning
PID : 613995 TID : 1 PROC : db2fmp (11893) 0
INSTANCE: db2inst1 NODE : 000
EDUID : 1 EDUNAME: db2fmp (11893) 0
FUNCTION: DB2 UDB, config/install, SmartGuide::compute, probe:13
DATA #1 : <preformatted>
CFG ADVIS: localMemoryPercentage 16.930320 New 16.930320 input.memoryPercent 25
2011-08-30-12.53.24.314872+480 I28240A628 LEVEL: Warning
PID : 6139950 TID : 1 PROC : db2fmp (11893) 0
INSTANCE: db2inst1 NODE : 000
EDUID : 1 EDUNAME: db2fmp (11893) 0
FUNCTION: DB2 UDB, config/install, SmartGuide::compute, probe:19
DATA #1 : <preformatted>
Memory Size: 65408 Mbs
Configured Memory: 65408 Mbs
Maximum Physical Memory Size: 65408 Mbs
Free Physical Memory: 52420 Mbs
Available Free Physical Memory: 52420 Mbs
Instance Memory Limit: 4096 Mbs
Memory Cap: 9801.966580 Mbs (based on 12 secs)
Previous Advisor Memory Size: 693 Mbs
Computed Memory: 693 Mbs
EDUNAME: db2agent
FUNCTION: sqlbAlterBufferPoolAct
MESSAGE : Altering bufferpool "bufferpool_name" From: "original_size" To: "new_size" <automatic>
- [db2diag.log 出力例]
2011-08-30-12.52.34.957425+480 I23658A505 LEVEL: Info
PID : 5316832 TID : 11893 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-9 APPID: *LOCAL.db2inst1.110830045234
AUTHID : DB2INST1
EDUID : 11893 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, buffer pool services, sqlbAlterBufferPoolAct, probe:90
MESSAGE : Altering bufferpool "IBMDEFAULTBP" From: "1000" To: "152572"
<automatic>
DB: -データベース名を確認します。
MESSAGE: -バッファー・プール名および、変更前のサイズと変更後のサイズを確認します。
※バッファー・プール・サイズの後の <automatic> は、セルフチューニング可能を示します。
原因 4: インスタンス・メモリーもしくはデータベース・メモリーのサイズを縮小した
【シナリオ例】
メモリー搭載量の少ないマシンにデータベースのバックアップを戻した。
Answer
【メッセージの意味】
db2diag.log のメッセージは、データベース活動化の際にバッファー・プールに割り当てるメモリーを確保できず、代わりに 4K、8K、16K、および 32K のページ・サイズを持つ小さなシステム・バッファー・プールを用いて活動化されたことを示しています。
※各システム・バッファー・プールのサイズは 16 ページです。
この場合、パフォーマンスが大幅に低下する可能性があります。
【対処法】
バッファー・プールのサイズ変更:
まず、縮小対象となるバッファー・プールの選定が必要となります。下記の要領でサイズの大きなバッファー・プールを確認し、その中からバッファー・プール・ヒット率の低いものを縮小することをお勧めします。
※ db2diag.log の確認などにより、縮小すべきバッファー・プールが既に分かっている場合は、ステップ 5 から開始します。
1. BUFFERPOOL モニター・スイッチの設定
事前に BUFFERPOOL モニター・スイッチを設定しておきます。
※ セッション単位で設定する場合は db2 update monitor switches using bufferpool on で設定します。
2. バッファー・プール情報の取得
db2pd コマンドにより、バッファー・プールに関する情報を入手します。
※ 対象データベースは活動中である必要があります。
【コマンド】
db2pd -alldb -bufferpool
【UNIX の例】
$ db2 update
$ db2pd -alldbs -buf | egrep 'Database|Address|0x|HitRatio|%'
Database Partition 0 -- Database TEST1 -- Active -- Up 0 days 00:05:29
Address Id Name PageSz PA-NumPgs BA-NumPgs BlkSize NumTbsp PgsToRemov CurrentSz PostAlter SuspndTSCt Automatic
0x0700000070408E40 1 IBMDEFAULTBP 4096 1000 0 0 5 0 1000 1000 0 False
0x070000007032F140 4096 IBMSYSTEMBP4K 4096 16 0 0 0 0 16 16 0 False
0x070000007032F5A0 4097 IBMSYSTEMBP8K 8192 16 0 0 0 0 16 16 0 False
0x070000007032FA00 4098 IBMSYSTEMBP16K 16384 16 0 0 0 0 16 16 0 False
0x0700000070408A20 4099 IBMSYSTEMBP32K 32768 16 0 0 0 0 16 16 0 False
BPID DatLRds DatPRds HitRatio TmpDatLRds TmpDatPRds HitRatio IdxLRds IdxPRds HitRatio TmpIdxLRds TmpIdxPRds HitRatio
1 614 218 64.50% 0 0 00.00% 544 366 32.72% 0 0 00.00%
4096 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4097 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4098 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4099 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
Database Partition 0 -- Database TEST2 -- Active -- Up 0 days 00:04:48
Address Id Name PageSz PA-NumPgs BA-NumPgs BlkSize NumTbsp PgsToRemov CurrentSz PostAlter SuspndTSCt Automatic
0x07000000A0408E40 1 IBMDEFAULTBP 4096 1000 0 0 4 0 1000 1000 0 False
0x07000000A032F140 4096 IBMSYSTEMBP4K 4096 16 0 0 0 0 16 16 0 False
0x07000000A032F5A0 4097 IBMSYSTEMBP8K 8192 16 0 0 0 0 16 16 0 False
0x07000000A032FA00 4098 IBMSYSTEMBP16K 16384 16 0 0 0 0 16 16 0 False
0x07000000A0408A20 4099 IBMSYSTEMBP32K 32768 16 0 0 0 0 16 16 0 False
BPID DatLRds DatPRds HitRatio TmpDatLRds TmpDatPRds HitRatio IdxLRds IdxPRds HitRatio TmpIdxLRds TmpIdxPRds HitRatio
1 612 218 64.38% 0 0 00.00% 542 366 32.47% 0 0 00.00%
4096 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4097 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4098 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4099 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
【Windows の例】
C:\Program Files\IBM\SQLLIB\BIN>db2pd -alldbs -buff | findstr /C:"Database" /C:"Address" /C:"0x"
Database Partition 0 -- Database TESTDB1 -- Active -- Up 0 days 00:02:29
Address Id Name PageSz PA-NumPgs BA-NumPgs BlkSize NumTbsp PgsToRemov CurrentSz PostAlter SuspndTSCt Automatic
0x7FC1F900 1 IBMDEFAULTBP 4096 1000 0 0 5 0 1000 1000 0 True
0x7FC1ECF0 4096 IBMSYSTEMBP4K 4096 16 0 0 0 0 16 16 0 False
0x7FC1EFD0 4097 IBMSYSTEMBP8K 8192 16 0 0 0 0 16 16 0 False
0x7FC1F2E0 4098 IBMSYSTEMBP16K 16384 16 0 0 0 0 16 16 0 False
0x7FC1F5F0 4099 IBMSYSTEMBP32K 32768 16 0 0 0 0 16 16 0 False
BPID DatLRds DatPRds HitRatio TmpDatLRds TmpDatPRds HitRatio IdxLRds IdxPRds HitRatio TmpIdxLRds TmpIdxPRds HitRatio
1 78 30 61.54% 0 0 00.00% 78 34 56.41% 0 0 00.00%
4096 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4097 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4098 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4099 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
Database Partition 0 -- Database TESTDB2 -- Active -- Up 0 days 00:00:12
Address Id Name PageSz PA-NumPgs BA-NumPgs BlkSize NumTbsp PgsToRemov CurrentSz PostAlter SuspndTSCt Automatic
0x7E539230 1 IBMDEFAULTBP 4096 1000 0 0 5 0 1000 1000 0 True
0x7E8BFBF0 4096 IBMSYSTEMBP4K 4096 16 0 0 0 0 16 16 0 False
0x7E538990 4097 IBMSYSTEMBP8K 8192 16 0 0 0 0 16 16 0 False
0x7E538C70 4098 IBMSYSTEMBP16K 16384 16 0 0 0 0 16 16 0 False
0x7E538F50 4099 IBMSYSTEMBP32K 32768 16 0 0 0 0 16 16 0 False
BPID DatLRds DatPRds HitRatio TmpDatLRds TmpDatPRds HitRatio IdxLRds IdxPRds HitRatio TmpIdxLRds TmpIdxPRds HitRatio
1 78 30 61.54% 0 0 00.00% 78 34 56.41% 0 0 00.00%
4096 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4097 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4098 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4099 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
ここで、
PageSz: バッファー・プールのページ・サイズ
CurrentSz: バッファー・プールの現行ページ数
PostAlter: バッファー・プールが再度開始されるときの、ページ内のバッファー・プールのサイズ
Automatic: セルフチューニングの設定状況
DatLRds DatPRds HitRatio:
バッファー・プール・データ論理読み取り、バッファー・プール・データ物理読み取り、データ・ヒット率
TmpDatLRds TmpDatPRds HitRatio:
バッファー・プール一時データ論理読み取り、バッファー・プール一時データ物理読み取り、一時データ・ヒット率
IdxLRds IdxPRds HitRatio:
バッファー・プール索引論理読み取り、バッファー・プール索引物理読み取り、索引ヒット率
TmpIdxLRds TmpIdxPRds HitRatio:
バッファー・プール一時索引論理読み取り、バッファー・プール一時索引物理読み取り、一時索引ヒット率
※ PostAlter フィールドの値が CurrentSz と異なる場合は、ALTER BUFFERPOOL コマンドによるサイズ変更が次回データベース活動化時まで据え置かれたことを意味します。
3. サイズの大きなバッファー・プールの確認
ステップ 2 の出力から各バッファー・プールのサイズ (PageSz * CurrentSz) を求め、サイズが大きいものを確認します。
4. 使用率の低いバッファー・プールの確認
ステップ 3 で確認したサイズの大きなバッファー・プールのうち、バッファー・プール・ヒット率 (HitRatio) が低いものを探します。
5. ステップ 3、4 で確認した、サイズが大きくヒット率が低いバッファー・プールを持つデータベースに接続
6. ALTER BUFFER POOL コマンドでサイズを縮小
デフォルトでは、バッファー・プール・サイズの変更はオンラインのまま変更されますが、コマンドの完了までに非常に時間を要します。
DEFERRED オプションを指定し、次回活動化するタイミングで反映させることをお勧めします。
また、セルフチューニングが有効なバッファー・プールのサイズを変更する場合は、サイズの後に AUTOMATIC を指定します。(指定したサイズはセルフチューニングの初期値となります。)
7. データベースの非活動化 (ステップ 3 で DEFERRED を指定した場合)
必要に応じてデータベース接続の切断や DEACTIVATE DATABASE コマンドを実行し、該当のデータベースを非活動化します。
運用上の考慮点
※1: セルフチューニングが有効になっているメモリー・コンシューマーの判別
※2: カーネル・パラメーターの変更 (Linux)
関連情報
db2pd - Db2 データベースのモニターおよびトラブルシューティング・コマンド
db2diag.log のメッセージは、データベース活動化の際にバッファー・プールに割り当てるメモリーを確保できず、代わりに 4K、8K、16K、および 32K のページ・サイズを持つ小さなシステム・バッファー・プールを用いて活動化されたことを示しています。
※各システム・バッファー・プールのサイズは 16 ページです。
この場合、パフォーマンスが大幅に低下する可能性があります。
【対処法】
バッファー・プールのサイズ変更:
まず、縮小対象となるバッファー・プールの選定が必要となります。下記の要領でサイズの大きなバッファー・プールを確認し、その中からバッファー・プール・ヒット率の低いものを縮小することをお勧めします。
※ db2diag.log の確認などにより、縮小すべきバッファー・プールが既に分かっている場合は、ステップ 5 から開始します。
1. BUFFERPOOL モニター・スイッチの設定
事前に BUFFERPOOL モニター・スイッチを設定しておきます。
※ セッション単位で設定する場合は db2 update monitor switches using bufferpool on で設定します。
- $ db2 update dbm cfg using dft_mon_bufpool on
2. バッファー・プール情報の取得
db2pd コマンドにより、バッファー・プールに関する情報を入手します。
※ 対象データベースは活動中である必要があります。
【コマンド】
db2pd -alldb -bufferpool
【UNIX の例】
$ db2 update
$ db2pd -alldbs -buf | egrep 'Database|Address|0x|HitRatio|%'
Database Partition 0 -- Database TEST1 -- Active -- Up 0 days 00:05:29
Address Id Name PageSz PA-NumPgs BA-NumPgs BlkSize NumTbsp PgsToRemov CurrentSz PostAlter SuspndTSCt Automatic
0x0700000070408E40 1 IBMDEFAULTBP 4096 1000 0 0 5 0 1000 1000 0 False
0x070000007032F140 4096 IBMSYSTEMBP4K 4096 16 0 0 0 0 16 16 0 False
0x070000007032F5A0 4097 IBMSYSTEMBP8K 8192 16 0 0 0 0 16 16 0 False
0x070000007032FA00 4098 IBMSYSTEMBP16K 16384 16 0 0 0 0 16 16 0 False
0x0700000070408A20 4099 IBMSYSTEMBP32K 32768 16 0 0 0 0 16 16 0 False
BPID DatLRds DatPRds HitRatio TmpDatLRds TmpDatPRds HitRatio IdxLRds IdxPRds HitRatio TmpIdxLRds TmpIdxPRds HitRatio
1 614 218 64.50% 0 0 00.00% 544 366 32.72% 0 0 00.00%
4096 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4097 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4098 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4099 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
Database Partition 0 -- Database TEST2 -- Active -- Up 0 days 00:04:48
Address Id Name PageSz PA-NumPgs BA-NumPgs BlkSize NumTbsp PgsToRemov CurrentSz PostAlter SuspndTSCt Automatic
0x07000000A0408E40 1 IBMDEFAULTBP 4096 1000 0 0 4 0 1000 1000 0 False
0x07000000A032F140 4096 IBMSYSTEMBP4K 4096 16 0 0 0 0 16 16 0 False
0x07000000A032F5A0 4097 IBMSYSTEMBP8K 8192 16 0 0 0 0 16 16 0 False
0x07000000A032FA00 4098 IBMSYSTEMBP16K 16384 16 0 0 0 0 16 16 0 False
0x07000000A0408A20 4099 IBMSYSTEMBP32K 32768 16 0 0 0 0 16 16 0 False
BPID DatLRds DatPRds HitRatio TmpDatLRds TmpDatPRds HitRatio IdxLRds IdxPRds HitRatio TmpIdxLRds TmpIdxPRds HitRatio
1 612 218 64.38% 0 0 00.00% 542 366 32.47% 0 0 00.00%
4096 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4097 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4098 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4099 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
【Windows の例】
C:\Program Files\IBM\SQLLIB\BIN>db2pd -alldbs -buff | findstr /C:"Database" /C:"Address" /C:"0x"
Database Partition 0 -- Database TESTDB1 -- Active -- Up 0 days 00:02:29
Address Id Name PageSz PA-NumPgs BA-NumPgs BlkSize NumTbsp PgsToRemov CurrentSz PostAlter SuspndTSCt Automatic
0x7FC1F900 1 IBMDEFAULTBP 4096 1000 0 0 5 0 1000 1000 0 True
0x7FC1ECF0 4096 IBMSYSTEMBP4K 4096 16 0 0 0 0 16 16 0 False
0x7FC1EFD0 4097 IBMSYSTEMBP8K 8192 16 0 0 0 0 16 16 0 False
0x7FC1F2E0 4098 IBMSYSTEMBP16K 16384 16 0 0 0 0 16 16 0 False
0x7FC1F5F0 4099 IBMSYSTEMBP32K 32768 16 0 0 0 0 16 16 0 False
BPID DatLRds DatPRds HitRatio TmpDatLRds TmpDatPRds HitRatio IdxLRds IdxPRds HitRatio TmpIdxLRds TmpIdxPRds HitRatio
1 78 30 61.54% 0 0 00.00% 78 34 56.41% 0 0 00.00%
4096 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4097 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4098 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4099 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
Database Partition 0 -- Database TESTDB2 -- Active -- Up 0 days 00:00:12
Address Id Name PageSz PA-NumPgs BA-NumPgs BlkSize NumTbsp PgsToRemov CurrentSz PostAlter SuspndTSCt Automatic
0x7E539230 1 IBMDEFAULTBP 4096 1000 0 0 5 0 1000 1000 0 True
0x7E8BFBF0 4096 IBMSYSTEMBP4K 4096 16 0 0 0 0 16 16 0 False
0x7E538990 4097 IBMSYSTEMBP8K 8192 16 0 0 0 0 16 16 0 False
0x7E538C70 4098 IBMSYSTEMBP16K 16384 16 0 0 0 0 16 16 0 False
0x7E538F50 4099 IBMSYSTEMBP32K 32768 16 0 0 0 0 16 16 0 False
BPID DatLRds DatPRds HitRatio TmpDatLRds TmpDatPRds HitRatio IdxLRds IdxPRds HitRatio TmpIdxLRds TmpIdxPRds HitRatio
1 78 30 61.54% 0 0 00.00% 78 34 56.41% 0 0 00.00%
4096 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4097 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4098 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
4099 0 0 00.00% 0 0 00.00% 0 0 00.00% 0 0 00.00%
ここで、
PageSz: バッファー・プールのページ・サイズ
CurrentSz: バッファー・プールの現行ページ数
PostAlter: バッファー・プールが再度開始されるときの、ページ内のバッファー・プールのサイズ
Automatic: セルフチューニングの設定状況
DatLRds DatPRds HitRatio:
バッファー・プール・データ論理読み取り、バッファー・プール・データ物理読み取り、データ・ヒット率
TmpDatLRds TmpDatPRds HitRatio:
バッファー・プール一時データ論理読み取り、バッファー・プール一時データ物理読み取り、一時データ・ヒット率
IdxLRds IdxPRds HitRatio:
バッファー・プール索引論理読み取り、バッファー・プール索引物理読み取り、索引ヒット率
TmpIdxLRds TmpIdxPRds HitRatio:
バッファー・プール一時索引論理読み取り、バッファー・プール一時索引物理読み取り、一時索引ヒット率
※ PostAlter フィールドの値が CurrentSz と異なる場合は、ALTER BUFFERPOOL コマンドによるサイズ変更が次回データベース活動化時まで据え置かれたことを意味します。
3. サイズの大きなバッファー・プールの確認
ステップ 2 の出力から各バッファー・プールのサイズ (PageSz * CurrentSz) を求め、サイズが大きいものを確認します。
4. 使用率の低いバッファー・プールの確認
ステップ 3 で確認したサイズの大きなバッファー・プールのうち、バッファー・プール・ヒット率 (HitRatio) が低いものを探します。
5. ステップ 3、4 で確認した、サイズが大きくヒット率が低いバッファー・プールを持つデータベースに接続
- db2 connect to <dbname>
6. ALTER BUFFER POOL コマンドでサイズを縮小
デフォルトでは、バッファー・プール・サイズの変更はオンラインのまま変更されますが、コマンドの完了までに非常に時間を要します。
DEFERRED オプションを指定し、次回活動化するタイミングで反映させることをお勧めします。
また、セルフチューニングが有効なバッファー・プールのサイズを変更する場合は、サイズの後に AUTOMATIC を指定します。(指定したサイズはセルフチューニングの初期値となります。)
- db2 alter bufferpool <bufpool> [deferred] size <size> [automatic]
7. データベースの非活動化 (ステップ 3 で DEFERRED を指定した場合)
必要に応じてデータベース接続の切断や DEACTIVATE DATABASE コマンドを実行し、該当のデータベースを非活動化します。
- db2 list applications
db2 "force application (applHandle [,applHandle])"
db2 list active databases
db2 deactivate database <dbname>
運用上の考慮点
- INSTANCE_MEMORY がデフォルトの AUTOMATIC に設定されている場合、インスタンス内のデータベース・メモリーの合計サイズは、INSTANCE_MEMORY で制限されません。
(DB2 V9.7 Fix Pack 1 および V9.5 Fix Pak 5 以降のメモリー使用制限の無いエディションの場合。) - セルフチューニング・メモリーが有効で、かつ DATABASE_MEMORY が AUTOMATICの場合、インスタンス上で同時に活動化できるデータベースの数が変化する可能性があります。(※1)
- Solaris、Linux 等では、共有メモリーの最大サイズがカーネル・パラメーターによって小さな値に制限されている場合があります。(※2)
※1: セルフチューニングが有効になっているメモリー・コンシューマーの判別
※2: カーネル・パラメーターの変更 (Linux)
関連情報
db2pd - Db2 データベースのモニターおよびトラブルシューティング・コマンド
[{"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":"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:
24 August 2023
UID
swg21610950