ITPub博客

首页 > Linux操作系统 > Linux操作系统 > DROP or SELECT on a detached data partition.. SQL20285N V9.7解决方法

DROP or SELECT on a detached data partition.. SQL20285N V9.7解决方法

原创 Linux操作系统 作者:ss8ll 时间:2013-04-28 16:35:39 0 删除 编辑
DROP or SELECT on a detached data partition from a partitioned table throws SQL20285N with Reason code 2解决方法
在db2中使用分区表的在线转出(DETACH PARTITION),V9.7比V9.5跨越比较大。V9.7使用异步方式,虽然已经执行了“ALTER TABLE ... DETACH PARTITION ...”,但当分离还没有进行完毕时,对分离出的表进行drop或select,就会抛错“DROP or SELECT on a detached data partition from a partitioned table throws SQL20285N with Reason code 2”,这时查看SYSCAT.DATAPARTITIONS 目录视图会发现你所分离的分区还在这里面。只有当异步分离完成后,才能进行drop或select,并且查看SYSCAT.DATAPARTITIONS 目录视图,进行分离的分区已不存在。
若在存储过程中同时对表分区DETACH,并对分离出的表进行drop或select。该存储过程在V9.5中可用,在V9.7中不可用。为兼容V9.7可加入以下代码逻辑临时解决
      SET DETACH_DONE=0;
      WHILE DETACH_DONE = 0 DO
        SET DETACH_DONE=1;
        FOR CURSOR_DETACH AS CURSOR_DETACH CURSOR WITH HOLD FOR SELECT DATAPARTITIONID FROM SYSCAT.DATAPARTITIONS
                                                          WHERE TABSCHEMA = '架构名'
                                                          AND   TABNAME = '分区表名' AND DATAPARTITIONID=分区ID WITH CS
        DO
          SET DETACH_DONE=0;
        END FOR;
      END WHILE;
上面逻辑就是循环访问SYSCAT.DATAPARTITIONS 目录视图,当发现目标分区不存在后退出,说明异步分区工作完成。该代码也有使用风险,由于是不停的循环,会对CPU的使用瞬间上升。该逻辑为临时处理方法,不是最佳方案。

分区表的DETACH工作流程可参见
http://www.ibm.com/developerworks/cn/data/library/techarticle/dm-1110tablepartinfosphwhs/?cmp=dwnpr&cpb=dw&ct=dwcon&cr=cn_CSDN_dl&ccy=cn

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26345550/viewspace-759490/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2013-04-17

  • 博文量
    1
  • 访问量
    6464