今天需要搭一个CRM的测试环境,导出正式库的时候,报错 ORA-01455 如下:
.正在导出触发器
.EXP-00056: 遇到 ORACLE 错误 1455
.ORA-01455: 转换列溢出整数数据类型
.EXP-00000: 导出终止失败
翻了下资料,说是由于物化视图编译不通过引起的,检查后发现均为普通视图,此类被排除.
继续查到,有人说10g客户端导出11g数据时有遇到该问题
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;),则之后新建的空表会自动分配段,之前建的空表(未经过曾经有数据的环节)仍是没有分配段的,仍然需要上述方法处理一下.
------------------------------------------
以上为摘录于 http://blog.itpub.net/29512902/viewspace-1260233/
但是问题仍然未解决!
发现服务器上安装了多个数据库和多个客户端,环境变量一塌糊涂,通过绝对路径导出也报错,无奈之下准备通过expdp来备份.