Trafodion Rename Table不成功的另外一种解决方法

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]

其实我们也可以通过另外一种方法去实现alter table,即依赖HBase Snapshot功能创建一个新表,新表的数据和表结构与原表完全一致,只是表名不同,然后删除原表即可。

大致步骤如下,
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'

你可能感兴趣的:(Trafodion Rename Table不成功的另外一种解决方法)