zoukankan      html  css  js  c++  java
  • 【Oracle 数据迁移】环境oracle 11gR2,exp无法导出空表的表结构【转载】

    今天做数据迁移,但是发现有些空表无法exp,后来找到问题所在。  【原文】:http://www.cnblogs.com/wenlong/p/3684230.html


    11GR2中有个新特性,当表无数据时,不分配segment,以节省空间,可是在用EXPORT导出时,空表也不能导出,这就导致迁移时候丢失了一些表,存储过程也失效了。本以为EXP能有相应的控制开关,可以切换是否导出空表,看了下帮助,没有太大的改变。有些奇怪,难道11GR2不更新EXP的功能了,还看有的帖子说11GR1作为客户端去卸载11GR2的,都会出现ora-1455d的错误,得换成11GR2的exp才没事了,心中感慨阿,怎么版本间的兼容这么脆弱了!

      解决方法:

    一、 insert一行,再rollback就产生segment了。

      该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。

    二、 设置deferred_segment_creation参数

    该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。修改SQL语句:

    alter system set deferred_segment_creation=false scope=both;

      需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。如需导出之前的空表,只能用第一种方法。

    三、 用以下这句查找空表并分配空间

      select 'alter table '||table_name||' allocate extent;' from user_tables where SEGMENT_CREATED='NO';

      或

      select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0

      把SQL查询的结果导出,然后执行导出的语句,强行为表分配空间修改segment值,然后再导出即可导出空表了。

      alter table T_BILL allocate extent;
      alter table T_CARD allocate extent;

  • 相关阅读:
    Struts2:对Action中方法进行输入校验
    struts2拦截器加自定义注解实现权限控制
    struts2文件上传
    struts2访问或添加几个属性(request/session/application属性)
    Struts2日期类型转换
    struts2接受请求参数
    struts2 动态方法调用
    为应用指定多个struts配置文件
    SpringMVC工作原理
    Struts2相关面试题
  • 原文地址:https://www.cnblogs.com/yingsong/p/5952868.html
Copyright © 2011-2022 走看看