DB
兄
”
医院
”
历险记
说明:
近期看了梁老师的《收货,不止SQL
优化》,记录下
Oracle
五个报告的用途和关系。案例中所有医学相关信息都是乱写的,只是为了对比说明下
Oracle
五个报告的用途和关系,请勿对号入座。
一:全身检查
话说DB
兄近期经常
996
加班,早上起来感觉浑身不舒服,但具体哪块不舒服又不确定,于是来到医院做个全身体检。体检报告里会有各种指标信息,比如内科、肝功二项、尿常规、血常规、幽门螺旋杆菌抗体等。
AWR
:近期一套
Oracle
数据整体运行缓慢,收集了负载较高时间段的
AWR
报告,检查数据库整体性能,
AWR
报告里有各种指标信息,比如等待事件、
TOP SQL
等。
二:针对全身检查中异常指标进行针对性检查
拿到体检报告,发现幽门螺旋杆菌抗体偏高,但这个指标只是说明胃里有幽门螺杆菌生长,具体已经引发什么疾病还要进一步检查。还需要去胃肠科专门对胃做一次检查,例如胃镜、吹气等,检查结束后会在出具一个胃相关的检查报告。
ASH
:查看到
free buffer waits
和
direct path read
等待时间和平均等待时间较高,可能和
buffer
太小、排序、
hash join
、全表扫描等有关,但是在
AWR
报告中,并没有指出哪条
SQL
导致的
free buffer waits
和
direct path read
,这时可以看下这一时间段的
ASH
报告。
ASH
提供了等待事件和
SQL
直接关联的信息。通过
ASH
报告可以看到引起
free buffer waits
等待事件的
SQL
是
:update t1 set id=100 where id=1;
引起
direct path read
等待事件的
SQL
是
:select id from t1 where id=1;
三:根据报告给出初步建议
出具的报告上仍然是一些指标数字等,外行根本看不懂,需要找到医生对报告进行解读,医生看完报告后会写一个病例说明,例如
最后诊断是
胃溃疡,建议患者饮食规律,精神放松,忌食生、冷、粗、硬和刺激性食物。
ADDM
:通过
AWR
知道了数据库缓慢和
free buffer waits
、
direct path read
等待事件有关,通过
ASH
知道了
free buffer waits
、
direct path read
等待事件和
update t1 set id=100 where id=1; select id from t1 where id=1;
语句有关,根据这些信息可知数据库缓慢和表
t1
有关,此时可以生成
ADDM
报告,查看
Oracle
针对当前情况给出的建议,通过
ADDM
报告可知,
Oracle
评估这几条
SQL
存在性能问题,建议进行
SQL
优化。
四:更深入检查异常部分细节内容
但是胃溃疡到什么程度也不好说,还要做个胃活检才清楚是否发生病变,于是又出具一个报告,最终显示良性,没有病变,还是要注意饮食,注意休息。
对这两条
SQL
进行优化需要知道
SQL
执行计划和统计信息等,可以生成
AWRSQRPT
报告:
查看到执行计划是t1
全表扫描,而
id=1
条件选择性很高,为什么没有使用索引,可能索引失效、无索引、统计信息不准确等,例如
id
列无索引,可以创建
id
列的索引解决这个问题。
五:对比不同时间段报告信息
这时DB
兄告诉医生,其实去年他也体检过,检查结果也是胃溃疡,希望医生对比下去年和今年的检查报告,看看病情是加重了还是减轻了。于是医生拿着两张报告,对比发现患者的胃溃疡较去年有所减轻。
AWRDD
:数据库运行有一段时间了,同时收集下昨天和今天相同时间段的性能报告
AWRDD
,看下性能对比情况。
六:测试数据如下
create
table
t1
(
id
int
);
begin
for
i
in
1
..
100000000
loop
insert
into
t1
values
(
i
);
end
loop
;
commit
;
end
;
/
exec
dbms_workload_repository.create_snapshot
();
select
id
from
t1
where
id
=
1
;
select
id
from
t1
where
id
=
2
;
select
id
from
t1
where
id
=
3
;
update
t1
set
id
=
100
where
id
=
1
;
rollback
;
exec
dbms_workload_repository.create_snapshot
();
报告收集脚本
1 awr
@/
rdbms
/
admin
/
awrrpt.sql
2 ash
@/
rdbms
/
admin
/
ashrpt.sql
3 addm
@/
rdbms
/
admin
/
addmrpt.sql
4 awrsqrpt
@
?
/
rdbms
/
admin
/
awrsqrpt.sql
5 awrdd
@
?
/
rdbms
/
admin
/
awrddrpt.sql
欢迎关注我的微信公众号"IT小Chen",共同学习,共同成长!!!
DB兄”医院”历险记
来源:这里教程网
时间:2026-03-03 15:38:53
作者:
编辑推荐:
- DB兄”医院”历险记03-03
- 如何收集统计信息不影响数据库?03-03
- dba_segments视图03-03
- Oracle 20c 新特性:XGBoost 机器学习算法和 AutoML 的支持03-03
- DBA_TAB_STATISTICS视图03-03
- [20200512]oracle的事务隔离级别.txt03-03
- ORACLE 18C 19C 20C新特性03-03
- session视图中wait_time03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- DB兄”医院”历险记
DB兄”医院”历险记
26-03-03 - Oracle 20c 新特性:XGBoost 机器学习算法和 AutoML 的支持
- Oracle direct path read相关隐含参数
Oracle direct path read相关隐含参数
26-03-03 - golden gate同步的表结构修改检查
golden gate同步的表结构修改检查
26-03-03 - Oracle 20c 新特性:Online SecureFiles Defragmentation 在线的 LOB 碎片整理
- 项目管理工具,选择本地部署还是上云?
项目管理工具,选择本地部署还是上云?
26-03-03 - 外键无索引引发的血案
外键无索引引发的血案
26-03-03 - Oracle RAC实施方案详细说明-GI安装04
Oracle RAC实施方案详细说明-GI安装04
26-03-03 - RHEL6.9 x64安装Oracle 18.3C RAC(GI篇)
RHEL6.9 x64安装Oracle 18.3C RAC(GI篇)
26-03-03 - 官宣:Oracle Database19c率先通过等保2.0 !
官宣:Oracle Database19c率先通过等保2.0 !
26-03-03
