1.通过explain plan for获取oracle sql语句执行计划。

2.通过autotrace获取oracle sql语句执行计划。

  set autotrace on

  set autotrace traceonly

  set autotrace on explain 

  set autotrace on statistics

3.通过sql_trace来获取oracle sql语句执行计划。

4.通过10046事件来获取oracle sql语句执行计划。

5.通过awr报告来获取oracle sql语句执行计划。

注意:第一种方法适合开发人员获取sql 执行计划来判断sql语句性能,即可以通过开发工具(plsql developer、toad等)轻松获取。但获取来的执行计划并不是完全正确。因为它没有正真执行以及它没有考虑绑定变量问题。

第二种相当于是第一种的升级,它可以轻松设置只要执行计划或者要执行计划以及统计信息。其实它的后台也是通过explain plan for来获取执行计划的。不过它只能在sqlplus下面执行获取。

第三种是对sql语句的追踪,追踪的信息转储到udump目录下的trace文件。可通过tkprof来格式化trace文件。

第四种是第三种的一个升级,10046事件追踪可以获得绑定变量信息以及等待事件信息(sql_trace则不能),为我们分析sql语句性能提供更详细参考信息。也可通过tkprof格式化trace文件。(10053事件则不可以用tkprof来格式化trace文件)。

第五种是全局考虑sql性能问题,可以通过awr报告中的sql_id来查相关sql的执行计划。