正常情况下,oracle11g的 exp命令无法导出空表,弥补这个缺陷的方法是
在空表创建之前,更改系统设置:
show parameter deferred_segment_creation 查看,结果是
SQL> show parameter deferred_segment_creation
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation boolean TRUE
将其默认值改为false
SQL>alter system set deferred_segment_creation=false;
该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。
需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。
对已有空表的处理:
创建为空表分配空间的执行语句:
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
将生成的语句执行,就能导出这些空表了。