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

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

  • 相关阅读:
    scala 数据结构(七 ):集 Set
    scala 数据结构(六):映射 Map
    scala 数据结构(五):队列 Queue
    scala 数据结构(四):列表 List
    scala 数据结构(三):元组Tuple
    scala 数据结构(二):数组
    scala 数据结构(一):数据结构简介
    Scala 面向对象(十三):隐式转换和隐式参数
    vba报表制作
    Apache与Nginx
  • 原文地址:https://www.cnblogs.com/panie2015/p/6761124.html
Copyright © 2011-2022 走看看