ITPub博客

首页 > 数据库 > Oracle > EXP-0008,ORA-01455 错误

EXP-0008,ORA-01455 错误

原创 Oracle 作者:tangxiaodong 时间:2015-03-07 11:05:41 0 删除 编辑

1.说明

   版本:oracle 11g 11.2.0.1.0 ;导出全库时,用的命令: exp system/password@SID file=D:\file.dmp log=D:\file_exp.log full=y

   导出到最后报如下错误:

exp-00008:oracle error 1455 encountered
ora-01455:converting column overflows integer datatype

2.查阅官方针对ora-01455的错误

ORA-01455: converting column overflows integer datatype 。

Cause: The converted form of the specified expression was too large for the specified datatype.
含义: 转换的形式指定的表达式为指定的数据类型太大。
Action: Define a larger datatype or correct the data. Free OTM (G-Log) Support Free OTM / G-Log GC3 Support Forums Learn from OTM Experts!
  含义: 定义一个大的数据类型或正确的数据。免费支持OTM(日志G)


3.在网上也找到其他网友碰到这种问题的处理方法:

(1)版本、位数问题

       有的网友提到服务器数据库版本与客户端EXP的版本不匹配或者是服务器数据库是64位,客户端是32位的;实际情况是我直接服务器口操作EXP命令,不存在这类情况,排除。

(2)EXP时加其它参数

       网友的写的其它文章提到要加”Direct=y  INDEXES=n STATISTICS=none”这三种参数,怎么试还是报错。

(3)Oracle 11g新特性影响EXP导出

       有文章http://blog.itpub.net/29512902/viewspace-1260233/,提到是因为oracle 11g参数 deferred_segment_creation,它默认为true,表中没有记录时,它是滞后分段的;false会自动分配段。’deferred_segment_creation’为true,影响导出。

      参照此文提到的三个语句,

  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';
    1)语句会查出user用户里‘segment_created’为no的表,通过alter table 重置,2)、3)语句来查询并确认是否已经都重置完成。
    通过这种方法重置之后还是报错。

4.怎么解决

(1)笨方法

      用每一个用户一个表空间的导出,这种可以导出;这个问题最终没有解决,只是一个用户一个表空间的导出,绕过去了!
(2)expdp
       用这个命令后来我也试过了,可以导出,不报错!

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8043290/viewspace-1451366/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-07-18

  • 博文量
    11
  • 访问量
    98996