在最近微信群中的一个讨论中,有朋友提出一个AWR报告中的问题,CPU Time的调用时间比例超过了100%,达到105%。
很多DBA在 9i 时代积累的经验包括,Top 5中的CPU Time来自于“CPU used by this session”,然而在Oracle 10g开始,这个信息发生了改变,由于Time Model的引入,CPU Time信息来自于v$sys_time_model及其累积而来的DB CPU信息,两者从此开始分别计算。
因为分离进而引起了底层的差异,在MOS文档 1911984.1 中提到:
CPU time 使用 getrusage() 函数来记录时间,而 DB Time 使用 gettimeofday() 函数和系统时钟交互;后者更加精确,而前者的时间记录可能会偏大,超过DB Time,就会出现CPU Time超过DB Time的问题。
简要记录在这里,供大家参考。另外,我们最近在编撰一本和AWR分析相关的书籍,大家有报告问题和建议欢迎提供。