imp导出空表的方法

      在oracle11g的imp和exp的使用过程中,发现有些从来没有被插入数据的表总是导不出来,今天在导

 

      表的时候借机研究一下,分享给大家,希望对有此困扰的同学提供帮助。

         

           oracle11g的初始化参数deferred_segment_creation,这个参数我自己理解是延迟段的空间分配,意

 

     思是说段建立以后,如果没有数据插入的时候,暂时不为段分配磁盘空间,这样节约了磁盘空间。这

      个参数的默认值为true,及开启这个参数。

         SQL> show parameter deferred_segment_creation;
 
                           NAME                                 TYPE        VALUE
                   ------------------------------------ ----------- ------------------------------
                   deferred_segment_creation            boolean     TRUE

 

      为了解决这个问题,可以通过以下两种方式:

 

      1、修改初始化参数deferred_segment_creation;

  

       SQL> alter system set deferred_segment_creation=false;
 
                 System altered      

       这样无论有没有插入数据的表都会分配extent,这样我们可以使用exp将其导出,但是在修改这个参数

       之前的空表这个办法是解决不了的,这个很好理解,所以我们介绍第二种方法;

 

         2、手动为空表分配extent;

         SQL> alter table t_oa_staff allocate extent;
 
                    Table altered

         这样我们就可以讲没有插入过数据的表使用exp导出了,为了批量做这件事情,我采用

 

        

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

                 2  /

                25 rows selected
 
          SQL>

 

          将查询的数据导出后批量执行下,问题解决了;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值