分享

Oracle 性能分析与诊断|跟踪诊断&优化SQL 语句

 东西二王 2019-05-23

Oracle 性能分析与诊断|跟踪诊断&优化SQL 语句

SQL 语句的执行效率对于数据库性能的影响非常重大,在性能测试过程中,需要查找和定位可能存在性能瓶颈的SQL 语句。

PL/SQL Developer 是一个Oracle 的PL/SQL 开发工具,同时具备Oracle 的一些管理功能,可利用它来跟踪客户端向Oracle 服务器提交的所有SQL 语句,方法是选择Session→SQL Trace命令,如图8.19 所示。

Oracle 性能分析与诊断|跟踪诊断&优化SQL 语句

也可以指定跟踪某个Session 的SQL 语句,如图8.20 所示。

Oracle 性能分析与诊断|跟踪诊断&优化SQL 语句

如果不用PL/SQL Developer 这类工具,也可以通过修改Oracle 全局参数sql_trace,来产生Trace 文件,之后再分析Trace 文件来分析提交到Oracle 的SQL 语句。如果想针对某个Session进行SQL 语句的跟踪,则可以采用以下办法(以下操作需要在SYS 用户下进行)。

(1)首先使用以下语句从Oracle 的v$session 表查出所有跟Oracle 连接的客户端程序的进程:

select SID, SERIAL#, USERNAME,OSUSER,MACHINE,TERMINAL,PROGRAM from v$session

(2)然后利用DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION 包来跟踪特定的进程向Oracle 提交的SQL 语句。

例如,下面语句为SID 为13,SERIAL#为96 的进程执行SQL 语句的跟踪功能:

execute dbms_system.set_sql_trace_in_session(13,96,TRUE);

(3)如果要停止跟踪,则提交以下语句:

execute dbms_system.set_sql_trace_in_session(13,96,FALSE);

然后在利用Oracle 的tkprof 工具对记录下来的SQL 跟踪文件进行分析,如图8.21 所示。

Oracle 性能分析与诊断|跟踪诊断&优化SQL 语句

另外,也可以利用前面讲过的Spotlight 这个工具进行SQL 跟踪,在Spotlight 中跟踪指定Session 的SQL 语句,并查看执行计划,如图8.22 所示。

Oracle 性能分析与诊断|跟踪诊断&优化SQL 语句

还可以利用SQL Tuning 的调优建议功能对SQL 语句进行分析,SQL Tunning 将自动查找更优的可替代SQL 语句,如图8.23 所示。

Oracle 性能分析与诊断|跟踪诊断&优化SQL 语句

图8.23 中,SQL Tunning 把原来使用Having 进行条件过滤的SQL 语句改写为使用Where进行条件过滤,这样的SQL 语句执行效率更高。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多