[DB2]レプリケーション作成時にエラー発生した際の対処法:STATE:54040 – CODE:-1424


対象DBMoto:すべてのバージョン
対象データベース:DB2(Windows, Linux, AIX, z/OS)
レプリケーションモード:ミラーリング・シンクロナイゼーションでトリガーモード使用時
発生条件:レプリケーション作成完了時にエラー発生

●エラー内容:

ログリーダーに新しいレプリケーションを追加する際にエラー。
コマンド’CREATE TRIGGER …; END’の実行にエラーが発生しました。
SqlDb2DRDA: DRDA Execute exception occurred.execute: Too many transition tbles: “2” – STATE:54040 – CODE:-1424
execute: Too many transition tbles: “2” – STATE:54040 – CODE:-1424

●エラー発生理由

DBMotoはトリガーを使用した差分レプリケーションの際に、レプリケーション定義作成と同時に該当テーブルに対してトリガーを作成します。
本エラーはそのトリガー作成するために必要な「システム一時表スペース」がDB2側で不足していることが原因です。
テーブルのカラム数が多い場合に発生することがあります。

●対処法

対処法は以下の通りとなります。

(1)バッファープールのサイズを 32KB で作成する
(2)(1)を使用するようにシステム一時表スペースを作成する

以下はDB2クライアントアクセスツール「IBM Data Studio」での対処手順です。

1. バッファー・プールを右クリックし「バッファー・プールの作成」を選択します。
20140812-01

2. ページ・サイズを「32768」に変更して保存します。
20140812-02

3. 変更プランで適用します。
20140812-03 20140812-04 20140812-05

4. 表スペースを右クリックし「システム一時表スペースの作成」を選択します。
20140812-06

5. バッファー・プールを先ほど選択したものへ変更し保存します。
20140812-07

6. 変更プランで適用します。
20140812-08 20140812-09 20140812-10

以上で設定は完了です。
DBMotoにて正常にレプリケーションを作成できることをご確認ください。

※バッファプールはCLPにて以下のコマンドで確認可能です。
SELECT BPNAME, BUFFERPOOLID, NPAGES, BLOCKSIZE, PAGESIZE FROM SYSCAT.BUFFERPOOLS
20140812-11

※表スペースはCLPにて以下のコマンドで確認可能です。
LIST TABLESPACES SHOW DETAIL
20140812-12

 

関連したトピックス

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください