ITPub博客

首页 > 数据库 > Oracle > Oracle11g新特性影响EXP导出,ORA-01455的处理

Oracle11g新特性影响EXP导出,ORA-01455的处理

原创 Oracle 作者:qdrzq 时间:2014-08-29 16:13:39 0 删除 编辑
数据库Oracle11g下,EXP逻辑导出时,遇到如下错误:
EXP-00056: 遇到 ORACLE 错误 1455
ORA-01455: 转换列溢出整数数据类型
EXP-00000: 导出终止失败

据现象观察,出现此错误之前,大多数记录数为0的正式表(不是临时表)没有被导出.
查阅资料,得到原因是Oracle11g增加了参数deferred_segment_creation,参数默认值是TRUE,这样,新建的表无记录时,是滞后分配段的,甚至连DDL定义也无法获取,所以EXP无法导出空表.
解决方法:用本用户登录,下面三个语句查看,结果是不是0行记录(通常第一个肯定不是0条)
(1)select 'alter table '||table_name||' allocate extent;'
from user_tables WHERE SEGMENT_CREATED='NO';
(2)select * from user_indexes WHERE SEGMENT_CREATED='NO';
(3)select * from user_lobs where segment_created='NO';
按照第一个语句构造出来的语句(一组alter table TAB_XX allocate extent;语句)执行,之后再查看,三个语句结果都是0行记录了.
之后,进行EXP正常.
注:上述Oracle参数如果设置为FALSE(alter system set deferred_segment_creation=FALSE;),则之后新建的空表会自动分配段,之前建的空表(未经过曾经有数据的环节)仍是没有分配段的,仍然需要上述方法处理一下.

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

请登录后发表评论 登录
全部评论

注册时间:2014-03-01

  • 博文量
    38
  • 访问量
    362739