zoukankan      html  css  js  c++  java
  • 怎样利用JDBC启动Oracle 自己主动追踪(auto trace)

         有时我们须要对运行SQL的详细运行过程做一个追踪分析,特别是在应用程序性能优化的时候。Oracle两个工具能够帮助我们做好性能分析,一个是SQL_TRACE,一个是SESSION_EVENT。SQL_TRACE跟踪SQL运行过程。如解析时间、运行时间、查询时间等。SESSION_EVENT跟踪运行过程的等待事件。如等待client响应时间,等待本地磁盘IO事件等等。
         开启Oracle自己主动追踪必须使用DBA权限。

         使用JDBC开启SQL_TRACE的方法:
         conn.prepareStatement("alter SESSION SET SQL_TRACE=TRUE");
     ps.execute();
         使用JDBC开启SESSION_EVENT的方法:
         开启:ps=conn.prepareStatement( "ALTER SESSION SET EVENTS '10046 trace name context forever, level 12'");
      ps.execute();
         关闭:ps=conn.prepareStatement( "ALTER SESSION SET EVENTS '10046 trace name context off'");(在关闭连接前运行关闭追踪)
      ps.execute();

    以下是开启这两个追踪得到的trace文件:


          Oracle运行过程分析:
    • 在对运行sql的过程中,主要运行过程耗费在了Oracle的Fetch阶段
    • Fetch的OCI调用次数为146次 ,耗费时间为50.49秒。查询条数为145259条
           Oracle运行过程中的等待事件分析:
    • oracleserver向client发送时等待时间为0,说明server端网络传输等没有问题
    • oracleserver等待client响应总时间为5.92秒,说明client处理数据及网络传输等须要耗费一定时间
    • oracleserver磁盘IO时间为48.37秒,说明主要时间耗在Oracle从磁盘中读取数据块上
    • 把数据分批次发送给client的时间耗费0.12秒。这个时间也是能够接受的


  • 相关阅读:
    几个比较好的IT站和开发库官网
    Win7下Qt5.2中使用OpenGL的glu函数库无法使用的解决方案
    QT5.2 Assistant-设置应用程序图标
    linux下文件编码格式转换方法(gb18030/utf-8)
    QT-进制转换计算器
    QT-图标设置
    QT-make: *** No rule to make target
    QT的exe文件打开显示,无法定位程序***输入点于动态链接库****
    QT工程文件上传Github仓库
    Eclipse中文乱码
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6757438.html
Copyright © 2011-2022 走看看