zoukankan      html  css  js  c++  java
  • EXP 导出出错解决方案

    前言:

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

      导出数据库可用语句:

      exp bpmp/bkc123@127.0.0.1:5050/bkcyunty file=D:akdb_61.dmp log=D:akdb_61.log INDEXES=n STATISTICS=none

      exp ppniedb/ppniedb@wisg file=/home/oracle/upgrade_bak/ppniedb.dmp log=/home/oracle/upgrade_bak/expppniedb.log direct=y compress=n rows=y

    导出成功以后的导入命令:

      imp bpmp/bkc123@127.0.0.1:5050/bkcyunty file=D:akdb_61.dmp log=D:akdb_61.log full=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/bkc123@127.0.0.1:5050/bkcyunty file=D:akdb_61.dmp log=D:akdb_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

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

  • 相关阅读:
    (网页)中的简单的遮罩层
    (后端)shiro:Wildcard string cannot be null or empty. Make sure permission strings are properly formatted.
    (网页)jQuery的时间datetime控件在AngularJs中使用实例
    Maven Myeclipse 搭建项目
    MyBatis 环境搭建 (一)
    java 常用方法
    XML 基础
    JS BOM
    js 事件
    js 的使用原则
  • 原文地址:https://www.cnblogs.com/panie2015/p/6761124.html
Copyright © 2011-2022 走看看