awr报告中,可以通过(DB CPU + background cpu time)/((BUSY_TIME + IDLE_TIME)/100) 来得到实例占用OS cpu时间的百分比,有没有办法从9i的statspack报告中得到相应的数据?找了一圈没找到,如下的公式计算实例前台进程占用OS cpu时间的百分比是否正确:(CPU used by this session/100)/(elapsed time*60*CPUs)
查了9i与11g的reference,对于CPU used by this session这个统计是一致的,看了几份这两个版本的statpack与awr报告,该统计与9i的 cpu time以及11g的DB CPU的值都相同,我想上面的公式(CPU used by this session/100)/(elapsed time*60*CPUs)是正确的。这几天也一直在想下面这些问题,再请教下,而这些问题与oracle 10g引入的时间模型相关,其简单关系如下:
1) background elapsed time
2) background cpu time
3) RMAN cpu time (backup/restore)
1) DB time
2) DB CPU
2) connection management call elapsed time
2) sequence load elapsed time
2) sql execute elapsed time
2) parse time elapsed
3) hard parse elapsed time
4) hard parse (sharing criteria) elapsed time
5) hard parse (bind mismatch) elapsed time
3) failed parse elapsed time
4) failed parse (out of shared memory) elapsed time
2) PL/SQL execution elapsed time
2) inbound PL/SQL rpc elapsed time
2) PL/SQL compilation elapsed time
2) Java execution elapsed time
2) repeated bind elapsed time
在这个时间模型中,db time是包含非空闲等待事件的,为什么文档里的时间模型并没有指明这个部分?DB CPU是否包含SQL的逻辑读占用的CPU时间?若是包含,下面的“sql execute elapsed time”又是由那些部分构成的呢?在我以往的认识中,大部分的CPU时间应该是耗费于逻辑读上的,除非parse time cpu与recursive cpu usage很高,这样的认识是否存在问题?是不是时间模型中的第二级模型之间有较多的交集?