Oracle 空表无法导出的原因
ORACLE 11G在用EXPORT导出时,空表不能导出,原因是oracle 11g 增加了一个新特性,就是表中没有数据的时候,此时是不给表分配segment 以节省空间,
oracle 在11g 之后增加了一个参数deferred_segment_creation ,默认为true; 当修改为false 的时候就能解决问题了
alter system/session set deferred_segment_creation=true/false;
解决办法:
解决办法1:
把每一个空表都插入一条数据,然后导出就可以了,这样方法有点笨,但可以实现
解决办法2:
在sqlplus中,执行如下命令:
SQL>alter system set deferred_segment_creation=false;
查看:
SQL>show parameter deferred_segment_creation;
注意事项:
该值设置后只对后面新增的表产生作用,对之前建立的空表不起作用。 注意并且要重新启动数据库,让参数生效
对已经存在的空表进行一下操作
>select table_name from user_tables where NUM_ROWS=0;
彩蛋。。。。。
查询已经分配segment的表,为'NO' 就是没有分配表空间的表
select * from user_tables where segment_created = 'YES'
最后大神的文章链接:http://blog.sina.com.cn/s/blog_5f0e9ca50101it7n.html