从10g开始,我们采用awr报告来分析数据库的性能,我们发现增加了很多dba_hist相关的视图,其中基于时间相关的字段delta开始出现,对于我们计算语句的时间消耗很有帮助! 其实Delta 表示第四个希腊字母,大写为Δ,小写为δ,其在数学和科学,表示变量的变化 在Oracle中的Delta number其实是指在采样间隔内,指标的增加值,也就是2个采样间的差值
有Delta相关字段的表为dba_hist_active_sess_history、DBA_HIST_SEG_STAT、DBA_HIST_SQLSTAT Delta可以省略以前只能用分析函数来计算两个快照间差值办法,可以直接查询 如果部分快照没有捕获对象统计信息,那么用分析函数也无法得到该期间的数值,但是如果有delta字段,可以直接查询
SQL> SELECT * FROM ( 2 SELECT SNAP_ID, 3 LOGICAL_READS_TOTAL, 4 LOGICAL_READS_TOTAL - 5 (LAG(LOGICAL_READS_TOTAL) OVER(ORDER BY SNAP_ID)) LOGICAL_READS, 6 LOGICAL_READS_DELTA 7 FROM DBA_HIST_SEG_STAT 8 WHERE OBJ# = 3278293 9 AND INSTANCE_NUMBER=1 10 ORDER BY 1) 11 WHERE ROWNUM<=10;
SNAP_ID LOGICAL_READS_TOTAL LOGICAL_READS LOGICAL_READS_DELTA ---------- ------------------- ------------- ------------------- 12315 43227600 45168 12316 43275936 48336 48336 12321 43415056 139120 29056 <= 没有12320快照 12323 43532160 117104 69536 <= 没有12322快照 12325 43710256 178096 103760 <= 没有12324快照 12326 43771904 61648 61648 12327 43815680 43776 43776 12328 43871648 55968 55968 12332 44220256 348608 90016 <= 没有12332快照 12333 44296544 76288 76288
在11g中,又为ASH增加了delta字段(V$ACTIVE_SESSION_HISTORY & DBA_HIST_ACTIVE_SESS_HISTORY) 有2组: 1.时间模型统计 TM_DELTA_TIME 一次统计间隔 TM_DELTA_CPU_TIME 在这个间隔内,CPU时间 TM_DELTA_DB_TIME 在这个间隔内,DB时间 因为ASH采样的粒度是1秒,但是进程并不是在1s内都ACTIVE的。该统计的粒度是微秒(百万分之一秒) TM_DELTA_TIME - TM_DELTA_DB_TIME = INACTIVE TIME TM_DELTA_DB_TIME - TM_DELTA_CPU_TIME = WAIT TIME
2.IO&网络统计 DELTA_TIME DELTA_READ_IO_REQUESTS DELTA_WRITE_IO_REQUESTS DELTA_READ_IO_BYTES DELTA_WRITE_IO_BYTES DELTA_INTERCONNECT_IO_BYTES 统计时间内,物理读/写/心跳流量高的SQL
SELECT SQL_ID, SUM(DELTA_READ_IO_REQUESTS), SUM(DELTA_WRITE_IO_REQUESTS), SUM(DELTA_READ_IO_BYTES), SUM(DELTA_WRITE_IO_BYTES), SUM(DELTA_INTERCONNECT_IO_BYTES) FROM V$ACTIVE_SESSION_HISTORY GROUP BY SQL_ID ORDER BY 2 DESC
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26736162/viewspace-1685877/,如需转载,请注明出处,否则将追究法律责任。