日期:2014-05-16  浏览次数:20423 次

DBA手记:DBA诊断利器 - Event 10046和 10053

一次某优化工具厂商的朋友,发来一个案例请求协助诊断,朋友的优化工具在客户的环境中执行某个 SQL 查询时,需要 10 分钟时间才能出结果,这是无法接受的,而同样的查询在其他环境上都可以快速的获得输出结果,数据库环境是 9.2.0.8

首先我获得了一个 10046 跟踪文件,通过 tkprof 格式化之后,这个 SQL 的输出结果展现出来。

首先该 SQL 代码如下:

dbanb209.png

该段 SQL Elapsed 时间超过了 600 秒, Query 模式逻辑读也非常高,对于一个优化工具来说显然是不可接受的。

接下来的跟踪文件中显示了 SQL 的执行计划:

Rows???? Row Source Operation

-------? ---------------------------------------------------

????? 0? NESTED LOOPS OUTER

????? 0?? NESTED LOOPS OUTER

????? 0??? NESTED LOOPS OUTER

????? 0???? NESTED LOOPS OUTER

????? 0????? NESTED LOOPS OUTER

????? 0?????? NESTED LOOPS?

????? 0??????? NESTED LOOPS OUTER

????? 0???????? NESTED LOOPS?

????? 0????? ???? NESTED LOOPS OUTER