Oracle 11.2.0.1 RAC使用exp遭遇ORA-01455错误解决办法


1.环境描述

OS:Linux RedHat5.5

Oracle version:Oracle RAC 11.2.0.1

2.问题描述

使用exp导出数据库中多个用户数据,语句为exp buffer=4096000 file=exp.dmp wner=user1,user2….

当导出至最后结尾出时报出ORA-1455: converting column overflows integer datatype 错误。

3.解决步骤

遇到这个问题后,经过百度、google、以及metalink查找,共得到以下几种办法,但均为解决(可能情况不同,遇到这个错误的朋友可以尝试一下几种解决办法)

1:在exp命令中加上index=n命令可解决此错误。

2:metalink中 note [ID 1083330.1]中写出的解决办法如下:


Solution

On 11.2, by default deferred segment creation future is turned on. When a table created with locally managed tablespace then its property value is very big. If we insert any row in the table then it's segment gets created and property value updated to 536870912. Supported workarounds for this problem are:

1. If a table is created in this manner it is required to contain data even if the data is then deleted afterwards.

Or:

2. Initially create the table with SEGMENT CREATION IMMEDIATE option, or set the parameter:
<!--[if !supportLineBreakNewLine]-->
 <!--[endif]-->

alter system set deferred_segment_creation=false;


and create the table afterwards in a new session.
 

把一个deferred_segment_creation

默认为TRUE的参数修改为false。

以上两种方式我均尝试过,宣告失败,但是经过其他测试发现有另外两种办法解决,外加一个特定案例,不清楚是否是解决办法

1.经过同事高手指点,由于我的数据库中存在一个物化视图,如果将此物化视图删除,可成功解决,另,非常奇怪的是物化视图还不能是利用pl/sql等工具删除,一定要通过drop命令删除此物化视图才可以解决。我是如此解决,但不清楚是否是通用问题。

 

2.放弃exp/imp,而使用数据泵EXPDP方式导出,亦可解决此问题。

3.大招!可通过升级到Oracle 11.2.0.3版本得到解决。

相关内容