Trafodion Rename Tableが成功しなかった別の解決方法

2465 ワード

Trafodionサポート使用"Alter table table_name rename to new_テーブル名を変更するにはnameを使用しますが、「Alter table」が失敗した場合など、競合する問題が発生する場合があります.
SQL>alter table JL_AMSE_NEW rename to JL_AMSE;

*** ERROR[8616] A conflict was detected during commit processing. Transaction has been aborted. [2017-09-14 09:25:07]

実際には、HBAse Snapshot機能に依存して新しいテーブルを作成するalter tableも実現できます.新しいテーブルのデータとテーブル構造は元のテーブルと完全に一致しています.テーブル名が異なるだけで、元のテーブルを削除すればいいです.
大体の手順は次の通りです.1 Trafodionで新しいテーブルを作成します.
create table new_name () ...

2 HBAse shellに入り、作成したばかりの新しいテーブル・ノートを削除します.このステップが完了しても、新しいテーブルのメタデータ情報はまだ存在します.
hbase shell
disable 'TRAFODION.SCHEMA_NAME.NEW_NAME';
drop 'TRAFODION.SCHEMA_NAME.NEW_NAME';

3古いテーブルに基づいたSnapshotの作成
snapshot 'TRAFODION.SCHEMA_NAME.OLD_NAME','TRAFODION.SCHEMA_NAME.OLD_NAME_SNAPSHOT'

4上記で作成したSnapshotに基づいて新しいテーブルをクローンする
clone_snapshot 'TRAFODION.SCHEMA_NAME.OLD_NAME_SNAPSHOT', 'TRAFODION.SCHEMA_NAME.NEW_NAME'

5 Trafodionで新しいテーブルが正常にクエリされるかどうかを確認
trafci
select [first 1]* from new_name;

6上記のようにHbaseのSnapshotを削除
delete_snapshot 'TRAFODION.SCHEMA_NAME.OLD_NAME_SNAPSHOT'