長く運用しているとなんか足りなくなるのがバッファプール IBM DB2でバッファプールの一覧を表示するには、以下のSQLを実行すればわかる、ちなみにバッファプールは、データをメモリにキャッシュする領域くらいに考えておけばいいかと・・かと思う。
バッファプール一覧を確認する
こんな感じのSQLを投げれば、確認できる。
$ db2 "SELECT char(bpname,20) bpname ,pagesize,npages FROM SYSCAT.BUFFERPOOLS"
- 以下のような結果になりました。
BPNAME PAGESIZE NPAGES
-------------------- ----------- -----------
IBMDEFAULTBP 4096 1000000
4096バイトを、1000000ページ利用しているってことなので、つまり、うーんと・・・ 4GB 使っているってことか?
バッファプール領域の拡張
たとえばSELECT文を発行している際に、"SQL3015N 処理中に、SQL エラー "-1218" が発生しました。" とかでる場合は、バッファプールが不足しているのが原因です。その場合は、領域の拡張が必要になります。
拡張する場合は、以下のようなコマンドを投げます
$ db2 “ALTER BUFFERPOOL IBMDEFAULTBP IMMEDIATE SIZE 1500000 AUTOMATIC”
IBMDEFAULTBP のページサイズを、1500000 に拡張し、且つ、オートマチックに切り替える(STMM)、そして即時反映という技です。
- 結果以下の通りになります
NPAGEに-2が表示されている場合は、オートマチックに切り替わったという意味です。
$ db2 "SELECT char(bpname,20) bpname ,pagesize,npages FROM SYSCAT.BUFFERPOOLS"
BPNAME PAGESIZE NPAGES
-------------------- ----------- -----------
IBMDEFAULTBP 4096 -2