解决Oracle 11g在用EXP导出时,空表不能导出问题

问题原因:11G中有个新特性,当表无数据时,不分配segment,以节省空间,
   设置deferred_segment_creation 参数
  SQL> show parameter deferred_segment_creation;
  SQL> alter system set deferred_segment_creation=false;

    该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。 并且要重新启动数据库,让参数生效。 

需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。此时针对以前导入的空表,可以使用下面方法操作:

解决方法:

   (1)导出的库有空表的时候,可能会忽略而不导出,则执行:
   select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 
  (2) 然后把查询的结果复制出来执行一遍.。
   (3)然后再导出数据库:
           导出:exp charge_qddy/charge@ORCL  file=d:/charge.dmp
           导入:imp charge_qddy/charge@ORCL file=d:/charge.dmp full=y

猜你喜欢

转载自blog.csdn.net/ptsx0607/article/details/80078322