oracle11空表参数,oracle11g无法导出空表问题原理方案

oracle 11g 新增了一个参数:deferred_segment_creation,含义是段延迟创建,默认是true。

解释如下:

如果这个参数设置为true,你新建了一个表T1,并且没有向其中插入数据,那么这个表不会立即分配extent,也就是不占数据空间,只有当你insert数据后才分配空间。这样可以节省少量的空间。所以需要设置

deferred_segment_creation 参数为FALSE后,无论是空表还是非空表,都分配segment。

具体操作为在sqlplus中,执行如下命令:

SQL>alter system set deferred_segment_creation=false;

即可设置deferred_segment_creation值为false

执行以下语句可查看其状态:

SQL>show parameter deferred_segment_creation;

注 : 以上命令只对之后新增的表有效,对现有空表没有任何影响,因此还需要进一步对现有空表进行处理,

即执行如下操作:

首先执行以下sql语句,手工为空表分配Extent,构建针对空表分配空间的命令语句

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

然后生成类似与如下格式的命令语句

alter DOM_PHOTO1 allocate extent

alter DOM_PHOTO2 allocate extent

alter DOM_PHOTO3 allocate extent

alter DOM_PHOTO4 allocate extent

alter DOM_PHOTO5 allocate extent

alter DOM_PHOTO6 allocate extent

alter DOM_PHOTO7 allocate extent

然后复制这些语句到sql窗口执行一下即可(注:生成的每条sql结尾并没有分号结尾,所以需要自己手动格式化一下sql再执行)

执行完上面生成的sql,再重新导出数据库,这样空表和有数据的表可以一并导出来了

ps:上面的方法大都是参照网上的解决方案进行的整理,本人只是按照自己的思路做了一下整理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值