【Oracle】ORA-01455: 转换列溢出整数数据类型

【问题】 Oracle11g 导出数据时出现

. . 正在导出表                     ACCEPTORDER导出了           0 行
. . 正在导出表                         CASHPAY导出了           0 行
. . 正在导出表                     CMS_CHANNEL导出了          11 行
. . 正在导出表                     CMS_COMMENT导出了           3 行
. . 正在导出表                     CMS_CONTENT导出了       12372 行
. . 正在导出表                CMS_CONTENTGROUP导出了          10 行
. . 正在导出表                  CMS_GATHERRULE导出了           1 行

EXP-00008: 遇到 ORACLE 错误 1455
ORA-01455: 转换列溢出整数数据类型
EXP-00000: 导出终止失败

【分析】  出现此错误之前,是记录数为0的表没有被导出

查阅资料,得到原因是Oracle11g增加了参数deferred_segment_creation,参数默认值是TRUE, 新建的表无记录时滞后分配段的,所以EXP无法导出空表

【解决】:用本用户登录,下面三个语句查看,结果是不是0行记录(通常第一个肯定不是0条)
select 'alter table '||table_name||' allocate extent;'from user_tables WHERE SEGMENT_CREATED='NO';
select * from user_indexes WHERE SEGMENT_CREATED='NO';
select * from user_lobs where segment_created='NO';
按照第一个语句构造出来的语句执行,之后再查看,三个语句结果都是0行记录了.之后,进行EXP正常.
或者调整Oracle参数 alter system set deferred_segment_creation=FALSE;),则之后新建的空表会自动分配段,之前建的空仍是没有分配段的,仍需要处理一下.


你可能感兴趣的:(ORACLE管理)