oracle11g的deferred_segment_creation参数影响空表段创建导致报错一例 ORA-01455

作者:袖梨 2022-06-29

用10g的EXP连接到11g进行数据导出时,遇到如下错误:

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

原因是Oracle11g增加了参数deferred_segment_creation,参数默认值是TRUE,这样,新建的表无记录时,会导致段创建延迟的,连DDL定义也无法获取,所以报错.

解决方法:执行以下步骤

 select 'alter table '||table_name||' allocate extent;' from dba_tables WHERE SEGMENT_CREATED='NO';

获取结果后,执行结果的alter table table_name allocate extent;语句

2. 分别执行以下的语句可以查看相关的空行段是否还存在。

select * from user_indexes WHERE SEGMENT_CREATED='NO';
select * from user_lobs where segment_created='NO';

一般这样处理后,oracle会生成。临时设置deferred_segment_creation为FALSE只会对后面创建的表有效,已经创建的表需要执行alter table TAB_XX allocate extent;才能处理exp。

相关文章

精彩推荐