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