Oracle慢查询日志
大家晚上好,昨天聊了慢查询,今天这个附文还是打算做个事件给大家看看慢查询日志,以Oracle19C做示范。
首先是先明确目的,学习如何查看慢查询日志与主要关注要看日志的哪几个指标才是你需要关注的。
以下是一幅Oracle寻求慢查询日志的全过程逻辑图。
我们将会选择比较容易记住且易用的方法去做这个实践~一个是在开启慢查询日志的时候,主动去获取当前会话的追踪日志,可以用下列日志获取用户进程追踪和后台进程追踪:
用户:
SELECT value FROM v$parameter WHERE name = 'user_dump_dest';
后台:
SELECT value FROM v$parameter WHERE name = 'background_dump_dest';
查询当前会话追踪日志:
SELECT value FROM v$diag_info WHERE name = 'Default Trace File';
上述SQL我们获取到的都是路径,然后直接打开最后一条SQL显示的路径,会发现当前会话的各种追踪属性。由于这个会话没写什么SQL,所以追踪日志也没什么需要注意的内容。如果写了很多,可以查出很多东西。
下面我们再专业一点,用Oracle自带的性能工具AWR工具来看慢查询日志并介绍指标。
AWR必须要懂啊~AWR(Automatic Workload Repository,自动工作负载仓库)是Oracle数据库中的一个核心性能诊断工具。它用于收集、存储和管理数据库的性能数据,帮助数据库管理员(DBA)分析和优化数据库性能。
不说废话,开干~先登录,然后执行内部AWR的SQL ,填写报告各种属性,如报告种类,页数,快照iD(起始)等,最终获得一份追踪文件,存储在你名下的本地。这里为什么会有快照的概念,很正常,因为你要找的是过去的记录,数据库内部才会帮你keep住。有兴趣一定要实践。
后面我们从文件系统看到刚刚生成的日志文件~找不到就直接搜!!
然后你就得到这个美丽的文件!!
接下来请你关注以下指标~
重点关注以下部分:
SQL ordered by Elapsed Time:
按总执行时间排序的SQL。
重点关注执行时间最长的SQL。
SQL ordered by CPU Time:
按CPU消耗时间排序的SQL。
重点关注CPU消耗最多的SQL。
SQL ordered by Gets:
按逻辑读(Buffer Gets)排序的SQL。
重点关注逻辑读最多的SQL。
SQL ordered by Reads:
按物理读(Disk Reads)排序的SQL。
重点关注物理读最多的SQL。
SQL ordered by Executions:
按执行次数排序的SQL。
重点关注执行次数过多的SQL。
比如:
跑了138秒,请你去数据库看看到底咋回事~~
OK ,聊完啦!希望对你有所帮助。
还想看啥实践,欢迎大家热切留言哦~~