新米SEのブログ

医療系システムに関わる中でつまづいた箇所をメモしています

MENU

DB2 レプリケーションエラー

DB2 10.5.4でのレプリケーションでうまくいかないことがあったのでメモ。

●現象

列を追加した後にREORGをしていないテーブルがあったので、

SQLSTATE=57016

が発生。

REORGを実施後に解消。

●調査

IBMのサイトを見てテーブルを抽出。

IBM [DB2 LUW] REORGペンディングの回復方法 - Japan

db2 "SELECT VARCHAR(TABSCHEMA,30) TABSCHEMA,VARCHAR(TABNAME,30) TABNAME, REORG_PENDING, NUM_REORG_REC_ALTERS  FROM SYSIBMADM.ADMINTABINFO WHERE REORG_PENDING = 'Y'

 

●解消のための手順

1.テーブルのバックアップデータ取得
2. ALTER TABLE で DATA CAPTURE CHANGES を無効にする
    db2 alter table tablename data capture none
3. ALTER TABLEで表の列の定義変更を実施(この場合キャラ10へ変更)
    db2 alter table tablename alter column colomnname set data type char(10)
4.REORG ペンディング状態になるため、対象表に対して REORG を実施
    db2 reorg table tablename
5. ALTER TABLE で DATA CAPTURE CHANGES を再度定義
    db2 alter table tablename data capture changes