oracle11g修改导出空表,Oracle11g exp不能导出空表

最近做Oracle 11g数据库迁移时发现,使用exp导出dmp文件时有些没有数据的空表没有被导出,查了一下才发现Oracle 11g有一个新特性,默认新建表时没有分配 segment (段),插入数据才会自动分配,据说是为了节省空间,这里解决方案有两种:

1、修改默认的segment分配参数deferred_segment_creation(延迟段创建),默认为TRUE(延迟创建),需要注意的是修改之后只能对后面新建的表起作用,已经建好的空表参考方案2,

查看默认deferred_segment_creation(延迟段创建)参数,

show parameter deferred_segment_creation,

e8f7d23eb0080f58d529a19cb61859f8.png

修改deferred_segment_creation为false(不延迟段创建),

alter system set deferred_segment_creation=false,

这里修改之后需要重启oracle才能生效,记住重启之后才能生效;

2、上面的解决方案只能针对后面新建的表,已经建好的空表要导出需要按照下面的方法处理

查询没有分配segment的空表,

select t.table_name,t.segment_created from user_tables t where t.segment_created='NO';

6b615b7a4865a7aacc1bc2d845a0bb06.png

生成给空表分配分区语句,

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

9b078b0d0d97c0ad8f54698bbc1506a2.png

执行语句

alter table T_NULL allocate extent;

重新exp的时候就可以导出空表了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值