ADMIN_MOVE_TABLE
由于表空间告急,划分的盘又没剩余空间;所以需要挪动数据到其他表空间上去,在V9.7前我们需要对重建表,并使用load cursor来手工搬数据,V9.7DB2提供了ADMIN_MOVE_TABLE的函数来移动表,这样我们可以在线操作。
使用ADMIN_MOVE_TABLE在线搬移数据的优缺点:
优点:在线移动,不影响业务
操作简单,不需要重建表
缺点:对大表操作,IO压力大,影响其他业务
中途结束会留下垃圾,比如一些临时表,和before update triger,after update triger,下次继续MOVE TABLE时候会直接失败
比如开始执行ADMIN_MOVE_TABLE什么的,如果表比较大,在中途经常会遇到手工cancel掉,下次再重启MOVE TABLE的时候就会报错如:SQL2104N The ADMIN_MOVE_TABLE procedure could not be completed at this time by this user. Reason code: "9". SQLSTATE=5UA0M
解决办法:
先查找MOVE TABLE记录
db2 "select substr(TABSCHEMA,1,20), substr(TABNAME,1,20),substr(KEY,1,20), substr(VALUE,1,60) from SYSTOOLS.ADMIN_MOVE_TABLE where TABNAME='XXX'"
然后再查找ADMIN_MOVE_TABLE记录
db2 "select * from SYSTOOLS.ADMIN_MOVE_TABLE where key = 'LOCK' and TABNAME='XXX'"
查到有记录后,确认之后再删除
db2 "delete from SYSTOOLS.ADMIN_MOVE_TABLE where key = 'LOCK' and TABNAME='XX'"
然后再次手工发起ADMIN_MOVE_TABLE
添加新评论0 条评论