产生原因:oracle11g为了节约空间,对空表不分配segment
解决方法:
方法1.
用如下语句设置空表可导出:
alter system set deferred_segment_creation=false
注意:该值设置后需重新启动数据库,让参数生效。并且该值只对后面新增的表产生作用,对之前建立的空表不起作用,仍不能导出。
方法2.
对需要导出的表插入一条数据再删除,此时该表就产生segment,再导出时就可以成功导出。
方法3.
执行sql语句
alter table 表名 allocate extent;
执行后此表可成功导出。
若需要将数据库中的所有空表都导出,可先执行以下语句
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null;
将上面语句查询出的结果进行复制并执行后 这些空表即可成功导出。
版权声明:本文为weixin_43567883原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。