DB2トランザクション・ログがフル (SQL0964C)
IBM i上のDB2から、Windows上のDB2 Express Cにデータをコピーする際に、あるテーブルの全レコードを"DELETE"したら、たまたま件数が多かった(12万件程度)のもあって、「SQL0964C データベースのトランザクション・ログがいっぱいです。 SQLSTATE=57011」というエラーが返された。
対象法として、
- トランザクションを細かくする
- ログ容量を増やす
が有る。「1」の方法はコピーを作る上では面倒なので、「2」のログサイズを増やしておいた。増やし方は以下の通り。
-
- 「コントロールセンター」を開き、該当するデータベースを右クリック。
- 「データベース・ロギングの構成」を選ぶ。
- 「ロギング・サイズ」の項目で、”1次ログ・ファイルの数”、”2次ログ・ファイルの数”、”各ログ・ファイルのサイズ”のページ数(ページ当たり4K)を増やす。
- 増やした後は、データベースを再起動する。
-
-
- 1次ログ・ファイル(初期値13)・・・データベース起動時に確保される。ログファイル。
- 2次ログ・ファイル(初期値4?)・・・1次ログで不足した際に、1つずつ確保されるログファイル。
- ファイルサイズ(初期値1024)・・・ログファイルのページ数(1ページ4K)
-
2次ファイルを多用するとパフォーマンス的には、1次ファイルより悪い。