当前位置: 首页 > Oracle, oracle 10g, oracle 11g > 正文

修改分区表关键字字段

耗时将近2周的时间,终于将25TB的图片利用SQLLDR全部加载到数据库,如何利用SQLLDR加载图片或二进制文件参考我之前的文章:http://www.dbdream.com.cn/2011/09/15/%E5%88%A9%E7%94%A8sql-load%E5%8A%A0%E8%BD%BDtxt%EF%BC%8Ccsv%E5%8F%8A%E5%9B%BE%E7%89%87%E5%88%B0%E6%95%B0%E6%8D%AE%E5%BA%93/
在修改分区表关键字字段的时候,遇到ORA-14402错误:

SQL> update images set identifier=substr(identifier,1,16) where identifier like '%0000';
update images set identifier=substr(identifier,1,16) where identifier like '%0000'
       *
ERROR at line 1:
ORA-14402: updating partition key column would cause a partition change

本案例是64位OEL5.7操作系统,ORACLE11 gR2,图片以11G的新特性SECUREFILE模式存储,有一张25TB的分区表,hash档号字段分区,目前8个分区,由于客户在提供数据的时候,档号字段有些错误的数据,需要改正,而修改分区关键字字段,可能会导致各分区的数据产生移动,这就需要打开表的行移动,由于行的迁移过程可能会消耗大量的时间和资源,ORACLE默认没有打开行移动,就不能直接修改分区关键字字段,所以抛出ORA-14402错误,这个问题的解决方法也很简单,打开表的行移动就可以了。

SQL> alter table images enable row movement;

Table altered.
SQL> set timing on
SQL> update images set identifier=substr(identifier,1,16) where identifier like '%0000';

7616 rows updated.
Elapsed: 00:04:45.30
SQL> commit;

Commit complete.

正常情况下,这个UPDATE过程应该很快的,由于发生了行的迁移,所以花费了将近5分钟的时间。

本文固定链接: http://www.dbdream.com.cn/2012/06/%e4%bf%ae%e6%94%b9%e5%88%86%e5%8c%ba%e8%a1%a8%e5%85%b3%e9%94%ae%e5%ad%97%e5%ad%97%e6%ae%b5/ | 信春哥,系统稳,闭眼上线不回滚!

该日志由 dbdream 于2012年06月12日发表在 Oracle, oracle 10g, oracle 11g 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 修改分区表关键字字段 | 信春哥,系统稳,闭眼上线不回滚!
关键字: , ,

修改分区表关键字字段:等您坐沙发呢!

发表评论

快捷键:Ctrl+Enter