Oracle 导出空表问题解决

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

猜你喜欢

转载自blog.csdn.net/qq_30125555/article/details/86518284