今天升级的时候实施跟我说 他加了一张表 可是用oracle 的exp的时候 显示该表不存在。 排查了下 原来是那张表没有数据。 oracle11g 有显示 不容许导出空表。 因而便有了下面的资料,谷歌别人也遇到过问题 得出结论。 oracle11g的新特性,数据条数是0时不分配segment,因此就不能被导出。 解决方法: 1、 insert一行,再rollback就产生segment了。oracle
该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。 2、 设置deferred_segment_creation参数io
该参数值默认是TRUE,当改成FALSE时,不管是空表仍是非空表,都分配segment。修改SQL语句:table
alter system set deferred_segment_creation=false scope=both;select
需注意的是:该值设置后对之前导入的空表不产生做用,仍不能导出,只能对后面新增的表产生做用。如需导出以前的空表,只能用第一种方法。 3、 用如下这句查找空表方法
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;数据
把查询结果导出,执行导出的语句,强行修改segment值,而后再导出便可导出空表,查询
可是我只用了方法1 比较简单就解决了问题~scope