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;

  • 相关阅读:
    Best Time to Buy and Sell Stock
    Remove Nth Node From End of List
    Unique Paths
    Swap Nodes in Pairs
    Convert Sorted Array to Binary Search Tree
    Populating Next Right Pointers in Each Node
    Maximum Subarray
    Climbing Stairs
    Unique Binary Search Trees
    Remove Duplicates from Sorted Array
  • 原文地址:https://www.cnblogs.com/yingsong/p/5952868.html
Copyright © 2011-2022 走看看