Oracle 11g使用exp命令导出数据行rows为零的空表
使用Oracle 11g的exp命令导出用户数据库表的时候,有的rows为0的空表不能导出,原因是Oracle 11g新增了一个特性,deferred_segment_creation,其含义是段延迟创建,默认参数为true。
当新建数据表且参数为true时,没有向其中插入数据,那么这个表不会立即分配segment,也就是不占数据空间,即表不分配segment以节省空间,所以这些表也没能导出来。
在系统表user_tables中也可以看到segment_treated的字段里是“NO”或者“YES”说明了该表是否分配了segment。
解决办法:
1、select 'alter table ' ||table_name ||' allocate extent;' from user_tables where segment_created='NO';
2、执行生成的sql语句,例如:
alter table table_name allocate extent;
这样就可以给每一张已经存在的表来分配 segment,然后就可以利用exp 导出。