用过oracle 11g导出表的时候,只能导出有数据的表(用过的应该知道吧?)。查了下资料,说用:select table_name from user_tables where NUM_ROWS=0;
然后构建一个语句
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;不过发现有些空记录的表并不在里面,然后看了下 num_rows,发现不是为0。原来这个字段不是当前记录的。然后查了下,说这样的“exec dbms_stats.gather_table_stats(OWNNAME =>'sftlmis_test', TABNAME => 'hwspjc',METHOD_OPT => 'FOR ALL');
 
PL/SQL procedure successfully completed”但是这样只能对一张表做修改啊,我想对所有空记录的表做修改,请问怎么办?

解决方案 »

  1.   

    把下面sql查出的语句都执行一遍就ok了。。select 'alter table ' || table_name || ' allocate extent;'
      from user_tables
     where segment_created = 'NO';
      

  2.   


    我已经解决了,不过不是你这个方法(也不知道你这行不行)。还是谢了!居然没人回答,难道是问题太高深了?这个有什么高深的啊,只不过是11.2.0.1 的一个特性。。后面的版本都没有这个问题了。你那个方法解决的不是很完美,如果我先创建一个表,插入数据 ,再删除所有数据,此时分析表后,num_row 也是0.
    我给你的那个 才是真正的 对付 这个问题的。