oracle11g延迟段问题

很多数据库都有存在空表的情况,较多的空表会占用大量的磁盘空间,ORACLE 在11gR2版本推出延迟段创建新特性,所谓延迟段创建,
顾名思义就是在创建一张新空表的时候,ORACLE默认不会为这张空表分配段(SEGMENTS),也就是不会为这张空表分配空间,这样就避免了空表占用空间的情况
可以在创建表时候追加SEGMENT CREATION IMMEDIATE|DEFERRED来定义是否立即分配segment,如果是deferred时候只有手动分配或者插入数据时候才分配segment
问题:EXP只能导出已经分配段的表,要导出未分配段的空表EXP就无能为力了,要导出未分配段的空表就需要使用数据泵(EXPDP),使用EXPDP可以导出未分配段的空表

解决:
1,手动分配段空间
SELECT 'ALTER TABLE ' || T.TABLE_NAME || ' ALLOCATE EXTENT;'
      FROM ALL_TABLES T  
     WHERE T.NUM_ROWS = 0  
       AND T.OWNER = 'U1'  
       AND T.PARTITIONED = 'NO'  
    UNION ALL  
    SELECT 'ALTER TABLE ' || T1.TABLE_NAME || ' MODIFY PARTITION ' ||  
           T2.PARTITION_NAME || ' ALLOCATE EXTENT;'  
      FROM ALL_PART_TABLES T1, ALL_TAB_PARTITIONS T2  
     WHERE T1.TABLE_NAME = T2.TABLE_NAME  
       AND T1.OWNER = T2.TABLE_OWNER  
       AND T1.OWNER = 'U1';  

2,一开始设置deferred_segment_creation参数为false
alter system set deferred_segment_creation=false;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝闻道-夕死可矣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值