Trafodion Rename Tableが成功しなかった別の解決方法
2465 ワード
Trafodionサポート使用"Alter table table_name rename to new_テーブル名を変更するにはnameを使用しますが、「Alter table」が失敗した場合など、競合する問題が発生する場合があります.
実際には、HBAse Snapshot機能に依存して新しいテーブルを作成するalter tableも実現できます.新しいテーブルのデータとテーブル構造は元のテーブルと完全に一致しています.テーブル名が異なるだけで、元のテーブルを削除すればいいです.
大体の手順は次の通りです.1 Trafodionで新しいテーブルを作成します.
2 HBAse shellに入り、作成したばかりの新しいテーブル・ノートを削除します.このステップが完了しても、新しいテーブルのメタデータ情報はまだ存在します.
3古いテーブルに基づいたSnapshotの作成
4上記で作成したSnapshotに基づいて新しいテーブルをクローンする
5 Trafodionで新しいテーブルが正常にクエリされるかどうかを確認
6上記のようにHbaseのSnapshotを削除
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'