zss0109211
作者zss0109211·2013-10-17 11:29
数据库管理员·null

ADMIN_MOVE_TABLE搬数据

字数 976阅读 3209评论 0赞 1
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

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广