zoukankan      html  css  js  c++  java
  • Oracle 性能分析与诊断|跟踪诊断&优化SQL 语句

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

     

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

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

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

    如果不用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 所示。

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

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

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

  • 相关阅读:
    笔试题总结
    ubuntu 14.04 vim install youcompleteme
    c语言位域
    strcmp函数的使用
    Spring多数据源的配置和使用
    根据出生日期计算年龄的sql各种数据库写法
    BZOJ3165 : [Heoi2013]Segment
    BZOJ2725 : [Violet 6]故乡的梦
    BZOJ2851 : 极限满月
    BZOJ2837 : 小强的形状
  • 原文地址:https://www.cnblogs.com/yaoyangding/p/14205091.html
Copyright © 2011-2022 走看看