EXP 导出出错解决方案

前言:

  今天想要把 当前用户下的数据库 导出来,使用命令

  导出数据库可用语句:

  exp bpmp/[email protected]:5050/bkcyunty file=D:\bak\db_61.dmp log=D:\bak\db_61.log INDEXES=n STATISTICS=none

  exp ppniedb/[email protected] file=/home/oracle/upgrade_bak/ppniedb.dmp log=/home/oracle/upgrade_bak/expppniedb.log direct=y compress=n rows=y

遇到的问题:

1)

用命令:exp ***/***@*** file=****.dmp full=y

执行后,系统提示:

EXP-00008:遇到ORACLE错误1406

ORA-01406:提取的列值被截断

EXP-00000:导出终止失败

导出当前用户所在实例下所有数据对象。

虽然不知道为什么,但是 去掉 full=y 就不报这个错了

2)

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

网上找到的解决方法:

方法一:

exp bpmp/[email protected]:5050/bkcyunty file=D:\bak\db_61.dmp log=D:\bak\db_61.log INDEXES=n STATISTICS=none

导出语句上加上 INDEXES=n STATISTICS=none

注:错误还是存在。一台机器可以导出,而出错的机器还是报错

方法二:

1) alter system set deferred_segment_creation=FALSE;

2) select ‘alter table ‘||table_name||‘ allocate extent;‘ from user_tables WHERE SEGMENT_CREATED=‘NO‘;

3) select count(*) from user_lobs where segment_created=‘NO‘;

4) select count(*) from user_indexes WHERE SEGMENT_CREATED=‘NO‘;

使用 导出用户(bpmp)登录oracle,

执行 3) 4) 看统计结果是否为0,

若是不为0,则执行1),且将2)查询到的结果复制后重新执行一次

再次执行 3) 4) 看统计结果是否为0,为0 后再去执行导出命令即可

注:虽然没有搞清楚,这几句话是什么意思,但是我导出成功了

参考:http://blog.sina.com.cn/s/blog_14d5a51a90102vret.html

3)

EXP-00056: ORACLE error 1455 encountered
ORA-01455: converting column overflows integer datatype
EXP-00000: Export terminated unsuccessfully

导致这个错误原因:
       Export 命令会将表的statistics 值转成成整形。 当这个statistics值超过2^31-1时,就会报这个错误。

解决方法:
1. 通过dba_tables 和 dba_indexes 来查看对应表的值。 即num_rows值,看是否超过了2^31-1。

查询方法:

  select * from all_tables A where A.OWNER=‘BPMP‘ and A.NUM_ROWS > 0;

或者 select * from user_tables A where A.NUM_ROWS > 0;

若是可以查询到结果,则清理一下

1)select ‘ analyze table ‘ || A.TABLE_NAME ||‘ compute statistics;‘ from all_tables A where A.OWNER=‘BPMP‘;

2)select ‘ analyze table ‘ || A.TABLE_NAME | |‘ compute statistics for all indexes;‘ from all_tables A where A.OWNER=‘BPMP‘;

3)select ‘ analyze table ‘ || A.TABLE_NAME || ‘ delete statistics ;‘ from all_tables A where A.OWNER=‘BPMP‘;

执行这三条语句,将 查询产生的结果(这里相当于自动生成sql语句),复制出来,最后一起执行

1)重新对表进行分析统计 2)3)是对表的索引记录重新分析统计和清除。

参考:http://www.hongyanliren.com/2014m12/21735.html

这里还有一种解决方法(我看不懂,不移过来了):http://blog.csdn.net/tianlesoftware/article/details/6251652

4)

修改 Oralce 客户端的字符集

Set nls_lang=simplified Chinese_china.zhs16gbk

Set nls_lang=AMERICAN_AMERICA.ZHS16GBK

注:某篇博客说字符串的编码的原因,实际上不是。这样的设置 只是将提示信息 由英文变成了中文

时间: 2024-08-09 17:56:29

EXP 导出出错解决方案的相关文章

一则Oracle EXP导出报错的解决办法(转载)

前段时间上海某保险客户IT主管打电话过来,说他们的开发人员在开发环境中执行EXP报错,让我过去检查下.本着“客户为本,服务为根”的宗旨,第一时间赶到客户现场. 和客户开发人员沟通下,查看EXP报错的具体信息: 正在导出 pre-schema 过程对象和操作 EXP-00008: 遇到 ORACLE 错误 4063 ORA-04063: package body "DMSYS.DBMS_DM_IMP_INTERNAL" has errors ORA-06508: PL/SQL: coul

exp导出数据时丢表

友军发来消息,说使用exp导出某个schema的数据的时候,发现有些表没有导出来.因为一直没有使用exp的习惯,就使用exp\expdp再次导出一次,分析二者的日志,发现exp的确有些表没有导出. 问题产生的原因:在11gR2之前,oracle实在表被创建时就分配空间:从11gR2(11.2.0.1)中引入了一个新特性:deferred segment creation.11gR2之后,参数deferred_segment_creation默认是true,表示表中插入第一条数据才会分配磁盘空间.

Oracle 11G在用EXP 导出时,空表不能导出解决[转]

转自:http://wanwentao.blog.51cto.com/2406488/545154 11G中有个新特性,当表无数据时,不分配segment,以节省空间 解决方法: 1.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segment.导出时则可导出空表. 2.设置deferred_segment_creation 参数 show parameter deferred_segment_creation NAME         

exp导出出现:ORA-00904: "POLTYP": invalid identifier

相关文章:    <exp导出出现:ORA-00904: : invalid identifier>:http://blog.itpub.net/23135684/viewspace-1336722/ exp导出老是出现ORA-00904: "POLTYP": invalid identifier可能有两个原因:1).服务器和客户端一个是x86bit的,一个是x86_64bit的安装程序.2).客户端和服务器端的版本不兼容. 下面是做的一些测试: >情况1:windo

高版本-&gt;低版本迁移,低版本客户端连接高版本数据库EXP导出报错EXP-00008,ORA-01455,EXP-00000

生产环境: 源数据库:RHEL + Oracle 11.2.0.3 目标数据库:HP-UX + Oracle 10.2.0.4 需求:迁移部分表  11.2.0.3-->10.2.0.4,若迁移范围内的有些表在目标库已经存在,则替换. 本次迁移数据量<1G. 初定方案:低版本的客户端连接到高版本数据库,用低版本导出,低版本导入. 1.采用初定方案,目标数据库所在服务器连接到源数据库,exp导出过程中报错. ZJCRNOPDB 36: sqlplus -version SQL*Plus: Rel

EXP-00091 EXP导出错误问题困惑

今天要求将部分表数据导出 提供的exp导出脚本如下: USERID=x/[email protected] BUFFER=102400 ROWS=Y  LOG=T_DAYLOG_CALLBYSERVICE.log FILE=T_DAYLOG_CALLBYSERVICE.dmp tables=T_DAYLOG_CALLBYSERVICE query="where logdate between to_date('20150810','YYYYMMDD') and  to_date('2015082

[转]解决ORACEL数据库“exp导出老是出现ORA-00904”

1.首先检查是不是字段名或者时表名错误,如果没有那就继续: 2.下面的分析资料来自:http://blog.itpub.net/23135684/viewspace-680615/ exp导出老是出现ORA-00904: "POLTYP": invalid identifier可能有两个原因:1).服务器和客户端一个是x86bit的,一个是x86_64bit的安装程序.2).客户端和服务器端的版本不兼容. 下面是做的一些测试: >情况1:windows x86_64bit 11.

解决Oracle 11g在用EXP导出时,空表不能导出

一.问题原因:     11G中有个新特性,当表无数据时,不分配segment,以节省空间     1.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segment.导出时则可导出空表. 2.设置deferred_segment_creation 参数 show parameter deferred_segment_creation NAME                                 TYPE        VALU

OpenEdx平台安装及出错解决方案

OpenEdx平台安装及出错解决方案 环境: Ubuntu 12.04 64 位服务器版(官方推荐) 内存:2GB  CPU:2.00GHz 硬盘:25GB 安装步骤: 1.进入root权限,新装系统可用 sudo passwd root     #重置root密码 2.更新源: sudo apt-get update -y        #更新更新源 sudo apt-get upgrade -y       #安装更新软件 sudo reboot                   #重启服