Oracle 11g中有个新特性:新增了一个参数:
‘‘deferred_segment_creation’’:意思是段延迟创建,默认是True。
参数为True的话,你新建张table1表,并且没有插入数据,oracle不会向这个表分配extent,也就是不占用空间,也不分配segment,所以表就没有导出来。
在系统表all_tables中有个字段segment_treated的字段值是 YES 或 NO,来确定表是否分配了segment,说白了就是占用少量的空……
解决方法:
1.设置deferred_segment_creation参数:
在sqlplus中执行如下命令:
SQL>alter system deferred_segment_creation = false;
查看:SQL>Show parameter deferred_segment_creation ;
注意:该值设置后只对以后新增的表起作用,之前建立的空表(已经存在的空表)不起作用,仍不能导出。
2.使用allocate extent可以导出已经存在的空表
select 'alter table'||table_name| allocate extent;| from all_tables where num_rows = 0;
3.执行完2之后,会得到一些语句,然后复制,粘贴到执行sql的窗口,执行命令,再导出就会导出之前的空表。
如有不懂加我联系方式,相互交流,沟通。