【问题】 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;),则之后新建的空表会自动分配段,之前建的空仍是没有分配段的,仍需要处理一下.