不会吧,用NUM_ROWS获取的值是不对的??

解决方案 »

  1.   

    dba_tables 中的数据是在你分析表之后才更新的,没有分析过的表就没有数据。就算是分析过的表,之后表的数据量变了,但是没有再次分析的话,dba_tables 里的数据也是不准确的。这里的数据是提供给CBO优化器判断sql的cost用的。
      

  2.   

    NinGoo说得对。没有分析过的表就没有数据。
    看来只能拼sql语句了。
      

  3.   

    e...  
    这个好象比较难~~而且一个table可以存放在多个tablespace中的, 
    一个tablespace又可以放多个table,  
    这这这, 怎么查~
      

  4.   

    写储存过程:
    cursor cc1 is select table_name from dba_tables .......
    fetch cc1 into v_tablename;
        sqlstr := 'select count(*) from ' || v_tablename;
        execute immediate sqlstr into tnr
    .......
      

  5.   

    现对要统计的实例(或者数据库)做一个性能收集(用stats_gather包),然后查询相关的dba_tables 视图,对NUM_ROWS 做sum
      

  6.   

    嗯,可以考虑mu_gua的建议。不过我没怎么用过stats_gather包。
    谢谢!
      

  7.   

    更正:stats_gather==>dbms_stats
    这个包的下面四个存储过程分别收集index、table、schema、database的统计信息,搂住的情况用schema或者database
    gather_index_stats
    gather_table_stats
    gather_schema_stats
    gather_database_stats