Oracle使用exp无法导出空表的解决方法

Oracle使用exp无法导出空表的解决方法

原因:11G中有个新特性,当表无数据时,不分配segment,以节省空间

解决方法:设置deferred_segment_creation

    1.使用命令  show parameter deferred_segment_creation;   查看deferred_segment_creation当前状态
    2.使用命令  alter system set deferred_segment_creation=false;  修改值为false

     该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。

     需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。

如果你想导出之前的空表,请往下看

   1.使用命令  select 'analyze table '||table_name||' compute statistics;' from user_tables;  分析一下当前用户下的所有表,然后把输出的结果执行,如果不分析在查询空表的时候可能查不出结果。
   2.使用命令  select * from user_tables where num_rows=0;  查询当前用户下的所有空表。
   3.使用命令  select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0; 生成语句,然后把输出的结果执行

   经过如上三部操作,exp就可以导出空表了。
posted @ 2018-06-27 15:32  一王小可一  阅读(613)  评论(0编辑  收藏  举报