请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站 JeeStudy企业开发官网①

JEE Study|JAVA EE|企业级开发学习网

 找回密码
 立即加入

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 1101|回复: 1

Oracle 11g export 导出的表数量不全 deferred_segment_creation的用法

  [复制链接]

2

主题

2

帖子

12

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2016-7-28 15:26:51 | 显示全部楼层 |阅读模式
导出表的时候,发现导出的表数量不对,有的表根本没有导出。仔细观察可以发现,未导出的表都是没有数据的。

这时可以检查下参数:deferred_segment_creation
该参数意思是当创建对象(如表),在没有插入数据时,是否立即分配空间。
参数值默认为true,即不分配空间。
所以导致没有分配空间的表,不会被导出。

在命令窗口输入:show parameter deferred_segment_creation;  可以看到VALUE 是TRUE。

11.jpg


需要把deferred_segment_creation的值改为FALSE。

alter system set deferred_segment_creation=false;

22.jpg


此时,虽然把参数deferred_segment_creation的值改为FALSE,但只是针对此后新建的表生效,新表会立即分配空间。但之前的空表,依然没有为分配。
可以通过手工为空表分配的方式解决。

执行语句:
select 'alter table '||table_name||' allocate extent;' from user_tables WHERE SEGMENT_CREATED='NO';

查询结果:
alter table table1 allocate extent;
alter table table2 allocate extent;
alter table table3 allocate extent;
alter table table4 allocate extent;

复制查询结果并执行。


至此,导出问题就完美解决啦!


需要注意的是,deferred_segment_creation=ture,只针对普通用户,不针对sys用户。
1.在sys用户下,创建一个没有数据的表时,同时自动分配空间;
2.在普通用户下,创建一个没有数据的表时,不会分配空间。



回复

使用道具 举报

0

主题

7

帖子

37

积分

新手上路

Rank: 1

积分
37
发表于 2016-7-28 18:35:56 | 显示全部楼层

RE: Oracle 11g export 导出的表数量不全 deferred_segment_creation的...

真的不错,可以解决 Oracle 不能导出空表的问题,网站感觉不错,内容好全啊,希望能有更好的内容,由站长亲自维护,学习了!
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

QQ|Archiver|手机版|小黑屋|JEE Study ( 京ICP备16036936   JeeStudy企业开发官网①

GMT+8, 2019-12-6 21:47 , Processed in 0.160317 second(s), 30 queries .

Powered by JeeStudy!

© 2016 JEE Study 企业级开发学习网

快速回复 返回顶部 返回列表