JEE Study|JAVA EE|企业级开发学习网
标题:
Oracle 11g export 导出的表数量不全 deferred_segment_creation的用法
[打印本页]
作者:
柠萌小姐
时间:
2016-7-28 15:26
标题:
Oracle 11g export 导出的表数量不全 deferred_segment_creation的用法
导出表的时候,发现导出的表数量不对,有的表根本没有导出。仔细观察可以发现,未导出的表都是没有数据的。
这时可以检查下参数:
deferred_segment_creation
该参数意思是当创建对象(如表),在没有插入数据时,是否立即分配空间。
参数值默认为true,即不分配空间。
所以导致没有分配空间的表,不会被导出。
在命令窗口输入:
show parameter deferred_segment_creation;
可以看到VALUE 是TRUE。
11.jpg
(30.37 KB, 下载次数: 306)
下载附件
2016-7-28 15:09 上传
需要把deferred_segment_creation的值改为FALSE。
alter system set deferred_segment_creation=false;
22.jpg
(36.78 KB, 下载次数: 331)
下载附件
2016-7-28 15:09 上传
此时,虽然把参数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.在普通用户下,创建一个没有数据的表时,不会分配空间。
作者:
angel
时间:
2016-7-28 18:35
标题:
RE: Oracle 11g export 导出的表数量不全 deferred_segment_creation的...
真的不错,可以解决
Oracle
不能导出空表的问题,网站感觉不错,内容好全啊,希望能有更好的内容,由站长亲自维护,学习了!
欢迎光临 JEE Study|JAVA EE|企业级开发学习网 (http://jeestudy.com/)
Powered by Discuz! X3.2