作者:王海永于 2017年12月18日 发布在分类 / 开发技术 / DB 下,并于 2017年12月18日 编辑
    Oracle11g EXP-00056: 遇到 ORACLE 错误 1455

       299

       0


    数据库Oracle11g下,EXP逻辑导出时,遇到如下错误:
    EXP-00056: 遇到 ORACLE 错误 1455
    ORA-01455: 转换列溢出整数数据类型
    EXP-00000: 导出终止失败

    据现象观察,出现此错误之前,大多数记录数为0的正式表(不是临时表)没有被导出.
    查阅资料,得到原因是Oracle11g增加了参数deferred_segment_creation,参数默认值是TRUE,这样,新建的表无记录时,是滞后分配段的,甚至连DDL定义也无法获取,所以EXP无法导出空表.
    解决方法:用本用户登录,下面三个语句查看,结果是不是0行记录(通常第一个肯定不是0条)
    (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';
    按照第一个语句构造出来的语句(一组alter table TAB_XX allocate extent;语句)执行,之后再查看,三个语句结果都是0行记录了.
    之后,进行EXP正常.
    注:上述Oracle参数如果设置为FALSE(alter system set deferred_segment_creation=FALSE;),则之后新建的空表会自动分配段,之前建的空表(未经过曾经有数据的环节)仍是没有分配段的,仍然需要上述方法处理一下.

    GRANT CREATE ANY TABLE TO YCJYPT2;
    GRANT SELECT ANY TABLE TO YCJYPT2;
    GRANT COMMENT ANY TABLE TO YCJYPT2;
    GRANT LOCK ANY TABLE TO YCJYPT2;
    GRANT SELECT ANY DICTIONARY TO YCJYPT2;

    grant create any view to YCJYPT2;
    访问权限

    创建人 王海永
    文档编辑权限 创建者私有
    文档阅读权限 来自分类
    分类阅读权限 所有人
    分类编辑权限 所有人
    分类审核权限
    标签

    EXP-00056
    历史版本

    修改日期 修改人 备注
    2017-12-18 15:13:59[当前版本] 王海永 CREAT
    同类知识
    相关知识

    睿恒知识库-V3.2.0