select pc.value*100/decode(ec.value,0,1,ec.value) 
from v$sysstat ec,  v$sysstat pc
where ec.name='execute count'
  and pc.name='parse count (total)';
其中“execute count”和“parse count (total)”分别代表什么,“pc.value*100/decode(ec.value,0,1,ec.value) ”又代表什么。、
希望详细一点,哪怕告诉我那本书里有也可以,谢谢。
再次感谢。

解决方案 »

  1.   

    这些代码好像是从STATEPACK发出来的,建议你看看关于StatPack方面的书。
    GOOD LUCKY!
      

  2.   

    execute count---       sql累计执行次数
    parse count (total)--- 分析次数pc.value*100/decode(ec.value,0,1,ec.value)---分析次数与执行次数的百分比每条sql第一次执行,都必须进行语法分析,形成执行路径,然后缓存在shared pool中,如果下次“同样”的sql再次被执行,则不需要做语法分析。问题是oracle如何认为是“同样“的sql。
    如果sql使用常量,oracle认为是不相同的,例如:
    select col1 from tab1 where a.name='333' 和 
    select col1 from tab1 where a.name='444' 是不同的sql
    如果sql空格不一样,大小写不一样,oracle也认为是不同的,例如
    select  col1 from tab1 where a.name='333' 和 
    select col1 from tab1 where a.name='444' 是不同的sql
    select Col1 from tab1 where a.name='333' 和 
    select col1 from tab1 where a.name='444' 是不同的sql
    通用的规则是:使用绑定变量而不使用常量,同一个sql在不同的程序中书写要保持一致。这个比率说明两个问题:
    1.shared pool size是否恰当(要有足够的mem来缓存大量不同的sql)
    2.sql的问题(本来可以成为同样的sql变成了不同的sql)
      

  3.   

    v$sysstat
    http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96536/ch3215.htm#1127407
      

  4.   

    我发现drabit(square)是真正的高手!
      

  5.   

    是否这就意味着:用参数绑定的执行效率会比较高
    如select * from tablename where field1=:field1与select * from tablename where field1='AA'
    前者的执行效率会较高吗?
      

  6.   

    他的意思是说有很多sql,如select * from tablename where field1='AA'
    select * from tablename where field1='BA'
    他们如果不有参数的话,要分析两次。
    但是用参数的话,只要分析一次。减少了分析的次数