先来说一下时间单位和简写:
1, centi-代表”百分之一”, 所以cs表示百分之一秒2, milli-代表”千分之一”, 所以ms表示千分之一秒3, micro-代表”百万分之一”, 所以us表示百万分之一秒
我一直搞不清楚V$SYSSTAT中的CPU used by this session和V$SQL中的CPU_TIME一列的时间单位是什么,
今天就写一下来帮助自已记得更清楚一些, 查阅Oracle 9i的数据库参考手册后, 终于搞明白了:
1, V$SYSSTAT或V$SESSTAT中的CPU used by this session的单位是百分之一秒(cs)2, V$SQL中的CPU_TIME一列中用的是百万分之一秒(us)
从我的工具的运行状况来看, V$SQL的CPU_TIME采用百万分之一秒(us)的单位实在是太小了,
导至这个列的值经常溢出, 也就是后一个时间点的值减前一个时间点的值后居然是负值(在这儿我用的是2分钟的采样频率),
如果是15分钟或以上间隔的STATSPACK的信息, 我相信这个列的数据是不准确的, 或许应当采用大一些的计量单位.
查了一下10g(R2)的数据库参考手册, 和上面说的一样, 没有变动.
常用的 sql 如下 :
1.
select * 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);
2.
select * from sys.v_$sysmetric_history where metric_name = ‘Database CPU Time Ratio’ order by 1
3. 响应时间
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)
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’)
ORDER BY 1;
4.解析比例
SELECT ‘Soft Parses ‘ “Ratio”,
ROUND(((SELECT SUM(value)
FROM V$SYSSTAT
WHERE name = ‘parse count (total)’) –
(SELECT SUM(value)
FROM V$SYSSTAT
WHERE name = ‘parse count (hard)’)) /
(SELECT SUM(value) FROM V$SYSSTAT WHERE name = ‘execute count’) * 100,
2) || ‘%’ “Percentage”
FROM DUAL
UNION
SELECT ‘Hard Parses ‘ “Ratio”,
ROUND((SELECT SUM(value)
FROM V$SYSSTAT
WHERE name = ‘parse count (hard)’) /
(SELECT SUM(value) FROM V$SYSSTAT WHERE name = ‘execute count’) * 100,
2) || ‘%’ “Percentage”
FROM DUAL
UNION
SELECT ‘Parse Failures ‘ “Ratio”,
ROUND((SELECT SUM(value)
FROM V$SYSSTAT
WHERE name = ‘parse count (failures)’) /
(SELECT SUM(value)
FROM V$SYSSTAT
WHERE name = ‘parse count (total)’) * 100,
5) || ‘%’ “Percentage”
FROM DUAL;
今天的文章
db_time_bid的时间分别是几点分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/61126.html