oracle 响应时间分析 (一)

响应时间作为一种数据库性能的度量单位,在以前的版本中很难从数据库角度提取出来,但是从10g之后这样的度量单位变得更为简单。

在过去DBA做性能分析主要依据的指标是响应时间度量和用户活动情况,分析人员所面临的问题就是如果确定应用系统的哪一部分消耗了大部分时间,以及客观的反应用户对系统的使用体验。

OWI的出现犹如横空出世的利器,帮助DBA诊断瓶颈,发现瓶颈。但是OWI还是不能更直观的告诉用户关于活动会话或事物交易能力评估。很幸运的时候10g之后数据库中有关于会话和系统层面的响应时间相关的度量出现了。比如ADDM中有很多FINDING就已经给出官员响应时间的指标。10g提供的历史回溯功能可以更有效的帮助dba对系统过去时刻出现的性能问题做出基于响应时间的趋势分析。

系统级别分析

从全局角度考虑3个问题

  1. 一般情况我们的数据库运行效率如何,是如何定义效率的呢?
  2. 我们的用户遭遇了什么样的平均响应时间?
  3. 系统中那些活动最影响系统的相应时间?

以上的疑问可以在10g中很高的通过METREC来回答。

--查看整体情况

select METRIC_NAME, VALUE
  from SYS.V_$SYSMETRIC
 where METRIC_NAME IN
       ('Database CPU Time Ratio', 'Database Wait Time Ratio')
   AND INTSIZE_CSEC = (select max(INTSIZE_CSEC) from SYS.V_$SYSMETRIC);
 

--查看最近一小时的

select to_char(end_time,'hh24:mi:ss'), value
  from sys.v_$sysmetric_history
 where metric_name = 'Database CPU Time Ratio'
 order by 1;

--总体上 最大,最小,平均
select CASE METRIC_NAME
         WHEN 'SQL Service Response Time' then
          'SQL Service Response Time (secs)'
         WHEN 'Response Time Per Txn' then
          'Response Time Per Txn (secs)'
         ELSE
          METRIC_NAME
       END METRIC_NAME,
       CASE METRIC_NAME
         WHEN 'SQL Service Response Time' then
          ROUND((MINVAL / 100), 2)
         WHEN 'Response Time Per Txn' then
          ROUND((MINVAL / 100), 2)
         ELSE
          MINVAL
       END MININUM,
       CASE METRIC_NAME
         WHEN 'SQL Service Response Time' then
          ROUND((MAXVAL / 100), 2)
         WHEN 'Response Time Per Txn' then
          ROUND((MAXVAL / 100), 2)
         ELSE
          MAXVAL
       END MAXIMUM,
       CASE METRIC_NAME
         WHEN 'SQL Service Response Time' then
          ROUND((AVERAGE / 100), 2)
         WHEN 'Response Time Per Txn' then
          ROUND((AVERAGE / 100), 2)
         ELSE
          AVERAGE
       END AVERAGE
  from SYS.V_$SYSMETRIC_SUMMARY
 where METRIC_NAME in
       ('CPU Usage Per Sec', 'CPU Usage Per Txn', 'Database CPU Time Ratio',
        'Database Wait Time Ratio', 'Executions Per Sec',
        'Executions Per Txn', 'Response Time Per Txn',
        'SQL Service Response Time', 'User Transaction Per Sec');

--可以从时间模型角度分析
select case db_stat_name
         when 'parse time elapsed' then
          'soft parse time'
         else
          db_stat_name
       end db_stat_name,
       case db_stat_name
         when 'sql execute elapsed time' then
          time_secs - plsql_time
         when 'parse time elapsed' then
          time_secs - hard_parse_time
         else
          time_secs
       end time_secs,
       case db_stat_name
         when 'sql execute elapsed time' then
          round(100 * (time_secs - plsql_time) / db_time, 2)
         when 'parse time elapsed' then
          round(100 * (time_secs - hard_parse_time) / db_time, 2)
         else
          round(100 * time_secs / db_time, 2)
       end pct_time
  from (select stat_name db_stat_name, round((value / 1000000), 3) time_secs
          from sys.v_$sys_time_model
         where stat_name not in ('DB time', 'background elapsed time',
                'background cpu time', 'DB CPU')),
       (select round((value / 1000000), 3) db_time
          from sys.v_$sys_time_model
         where stat_name = 'DB time'),
       (select round((value / 1000000), 3) plsql_time
          from sys.v_$sys_time_model
         where stat_name = 'PL/SQL execution elapsed time'),
       (select round((value / 1000000), 3) hard_parse_time
          from sys.v_$sys_time_model
         where stat_name = 'hard parse elapsed time')
 order by 2 desc;

--从event class角度了解系统
select to_char(a.end_time, 'DD-MON-YYYY HH:MI:SS') end_time,
       b.wait_class,
       round((a.time_waited / 100), 2) time_waited
  from sys.v_$waitclassmetric_history a, sys.v_$system_wait_class b
 where a.wait_class# = b.wait_class#
   and b.wait_class != 'Idle'
 order by 1, 2

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值