如何查看DB_TIME

关于DB_TIME

近日在与Oracle原厂人员的沟通中了解到,DB_TIME可以作为监控数据库性能的重要参数

在AWR报告开头我们可以看到如下信息
在这里插入图片描述先说一下三个重要的参数

  1. Cores(CPU核心数)
  2. Elapsed(消耗的时间,根据AWR报告的生成时间,一般未半小时或者一小时)
  3. DB Time(DB Time(请求时间)= DB Wait Time(DB等待时间)+ DB CPU Time(DB CPU服务时间))

简单透过上述三个参数即可判断数据库是否处于繁忙/异常状态
即DB TIME/ ELAPSED 所得结果与Core比较,当大于CPU核心数,则代表数据库比较繁忙,Loading较高
当小于CPU核心数,则代表数据库负荷正常

与DB相关的参数存于dba_hist_sys_time_model表中

select * from dba_hist_sys_time_model;

查询结果如下
在这里插入图片描述其中snap_ID为时间点对应的ID,需要从dba_hist_snapshot该表中获取

根据上述信息,可以查询过去一段时间数据库的DB_TIME & CPU使用情况
对应的SQL如下

select to_char(end_interval_time,'yyyy-mm-dd hh24:mi') v_date,a.instance_number inst_id,round((b.value-a.value)/1000000/60/4,2) v_dbtime,
round((b.value-a.value)/1000000/60/4/(64*15/100),2)||'%' db_cpu_pct
from dba_hist_sys_time_model a,dba_hist_sys_time_model b ,dba_hist_snapshot c
where a.stat_name='DB time' and b.stat_name='DB time' 
      and a.dbid=b.dbid and a.dbid=(select dbid from v$database)
      and a.instance_number= b.instance_number and c.instance_number=b.instance_number
      and a.snap_id=c.snap_id
      and b.snap_id=c.snap_id+1 
      and C.END_INTERVAL_TIME>=sysdate-7
      and a.instance_number=&inst_id
      --上述的inst_id需要从数据中单独确认
      order by v_dbtime desc; 

在运行该段sql是会弹出如下信息,需要输入:INST_ID(从sql中可以看出INST_ID即对应dba_hist_sys_time_model 表中的instance_number)
在这里插入图片描述获取对应的Instance_number

select distinct instance_number from dba_hist_sys_time_model;

SQL结果如下
在这里插入图片描述存在两个INSTANCE_NUMBER的原因为我测试用的DB为RAC环境,实际会对应两个Instance

查询到对应的结果后,在之前的SQL中数据捞取的数据:1或者2
则可以获取对应的Instance的DB_TIME & CPU使用情况

针对非RAC环境,可以将instance_number对应的语句mark掉
即(在相应环境中测试也是能够正常运行的)

select to_char(end_interval_time,'yyyy-mm-dd hh24:mi') v_date,a.instance_number inst_id,round((b.value-a.value)/1000000/60/4,2) v_dbtime,
round((b.value-a.value)/1000000/60/4/(64*15/100),2)||'%' db_cpu_pct
from dba_hist_sys_time_model a,dba_hist_sys_time_model b ,dba_hist_snapshot c
where a.stat_name='DB time' and b.stat_name='DB time' 
      and a.dbid=b.dbid and a.dbid=(select dbid from v$database)
      and a.instance_number= b.instance_number and c.instance_number=b.instance_number
      and a.snap_id=c.snap_id
      and b.snap_id=c.snap_id+1 
      and C.END_INTERVAL_TIME>=sysdate-7
      --and a.instance_number=&inst_id
      order by v_dbtime desc; 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值