我是靠谱客的博主 快乐期待,这篇文章主要介绍基于dba_hist_sqlstat查看sql语句的性能历史,现在分享给大家,希望可以做个参考。

在生产环境中,如果系统已经稳定,调优的空间就会越来越小,但是不代表没有调优的余地,可能工作的重心就会更加求稳,sql调优就是一项不间断的工作,很多工作还是需要前瞻的,如果等到问题严重的时候再紧急处理,提前的分析这些潜在问题就会让你不会总是心跳加快,两手冒汗。
dba_hist_sqlstat是一个宝库,很多的sql执行统计信息都会在其中,可以基于这个数据字典分析很多的特性,比如查看某条sql语句的性能历史,分析执行计划是否稳定等等,这些功能在分析sql语句的时候是相当实用的,毕竟一个awr报告中的sql问题可能只是一个表象,如果结合历史来看就会分析出更多的因素来。
这个脚本在<>中提到,而且可以通过网站找到相关的脚本内容,如果明白了思路,大家想自己定制一下也不错。
大多数的脚本可以通过链接找到http://kerryosborne.oracle-guy.com/2009/06/oracle-11g-adaptive-cursor-sharing-acs/
分析某一条sql语句的性能历史脚本
set lines 155
col execs for 999,999,999
col avg_etime for 999,999.999
col avg_lio for 999,999,999.9
col begin_interval_time for a30
col node for 99999
break on plan_hash_value on startup_time skip 1
select ss.snap_id, ss.instance_number node, begin_interval_time, sql_id, plan_hash_value,
nvl(executions_delta,0) execs,
(elapsed_time_delta/decode(nvl(executions_delta,0),0,1,executions_delta))/1000000 avg_etime,
(buffer_gets_delta/decode(nvl(buffer_gets_delta,0),0,1,executions_delta)) avg_lio
from DBA_HIST_SQLSTAT S, DBA_HIST_SNAPSHOT SS
where sql_id = nvl(‘&sql_id’,’4dqs2k5tynk61’)
and ss.snap_id = S.snap_id
and ss.instance_number = S.instance_number
and executions_delta > 0
order by 1, 2, 3
/

脚本运行情况如下:
SNAP_ID NODE BEGIN_INTERVAL_TIME SQL_ID PLAN_HASH_VALUE EXECS AVG_ETIME AVG_LIO


复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
38878 1 31-MAR-15 05.20.06.216 PM 0xtpfz5pj4prb 1880269335 104 5.702 327,280.7 38879 1 31-MAR-15 05.30.06.754 PM 0xtpfz5pj4prb 119 4.926 326,385.0 38880 1 31-MAR-15 05.40.07.622 PM 0xtpfz5pj4prb 125 4.713 328,324.9 38881 1 31-MAR-15 05.50.08.418 PM 0xtpfz5pj4prb 6 6.461 361,164.7 38884 1 31-MAR-15 06.20.09.984 PM 0xtpfz5pj4prb 21 5.324 321,935.6 38885 1 31-MAR-15 06.30.10.720 PM 0xtpfz5pj4prb 107 5.539 325,886.4 38886 1 31-MAR-15 06.40.11.283 PM 0xtpfz5pj4prb 64 5.432 329,591.9 38887 1 31-MAR-15 06.50.11.900 PM 0xtpfz5pj4prb 110 5.397 326,757.1 38888 1 31-MAR-15 07.00.12.457 PM 0xtpfz5pj4prb 103 5.792 329,023.0 38889 1 31-MAR-15 07.10.13.355 PM 0xtpfz5pj4prb 126 4.682 328,220.6 38890 1 31-MAR-15 07.20.13.848 PM 0xtpfz5pj4prb 128 4.601 326,872.7 38891 1 31-MAR-15 07.30.14.326 PM 0xtpfz5pj4prb 1880269355 131 4.508 328,507.7 38892 1 31-MAR-15 07.40.14.905 PM 0xtpfz5pj4prb 129 4.571 326,210.3 38893 1 31-MAR-15 07.50.15.372 PM 0xtpfz5pj4prb 132 4.468 327,796.7 38894 1 31-MAR-15 08.00.15.889 PM 0xtpfz5pj4prb 113 5.176 328,226.4 38895 1 31-MAR-15 08.10.16.442 PM 0xtpfz5pj4prb 63 5.194 332,234.3 38897 1 31-MAR-15 08.30.17.385 PM 0xtpfz5pj4prb 37 6.175 326,039.1 38898 1 31-MAR-15 08.40.17.922 PM 0xtpfz5pj4prb 76 7.755 327,436.6 38899 1 31-MAR-15 08.50.18.469 PM 0xtpfz5pj4prb 113 5.245 327,478.5 38900 1 31-MAR-15 09.00.18.950 PM 0xtpfz5pj4prb 127 4.614 326,215.6 38901 1 31-MAR-15 09.10.19.458 PM 0xtpfz5pj4prb 74 4.316 332,214.9

如果某些指标突然发生了重大的变化,可以通过性能历史很清晰的看到,对于plan_hash_value做了断句处理,如果发生了执行计划的改变,就会很清楚什么时间点有了变动,哪些方面的变化等等。

最后

以上就是快乐期待最近收集整理的关于基于dba_hist_sqlstat查看sql语句的性能历史的全部内容,更多相关基于dba_hist_sqlstat查看sql语句内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部