欢迎投稿

今日深度:

如何利用JDBC启动Oracle 自动追踪(auto trace),j

如何利用JDBC启动Oracle 自动追踪(auto trace),jdbcoracle


     有时我们需要对执行SQL的具体执行过程做一个追踪分析,特别是在应用程序性能优化的时候。Oracle两个工具可以帮助我们做好性能分析,一个是SQL_TRACE,一个是SESSION_EVENT。SQL_TRACE跟踪SQL执行过程,如解析时间、执行时间、查询时间等;SESSION_EVENT跟踪执行过程的等待事件,如等待客户端响应时间,等待本地磁盘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执行过程中的等待事件分析:
  • oracle服务器向客户端发送时等待时间为0,说明服务器端网络传输等没有问题
  • oracle服务器等待客户端响应总时间为5.92秒,说明客户端处理数据及网络传输等需要耗费一定时间
  • oracle服务器磁盘IO时间为48.37秒,说明主要时间耗在Oracle从磁盘中读取数据块上
  • 把数据分批次发送给客户端的时间耗费0.12秒,这个时间也是可以接受的



jdbc编程oracle驱动问题

oracle驱动包的问题,换一个。 或者我给你发一个。把你的邮箱发给我。给我发百度消息 。
包引用没问题,放在lib/ext下会自动添加到ClassPath路径
参考资料:还有其他问题的话,给我发百度消息
 

Java做数据库连接池的时加载oracle的JDBC驱动时总是提示找不到驱动类

我听说过这个问题,我在网上的视频里见过,我记得不太清楚了(好像是BUG吧),反正就是你的自己复制过去,它不会给你自动弄过去,你用Myeclipse就没事了。。
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/2169.html NewsArticle 如何利用JDBC启动Oracle 自动追踪(auto trace),jdbcoracle 有时我们需要对执行SQL的具体执行过程做一个追踪分析,特别是在应用程序性能优化的时候。Oracle两个工具可以帮助我们做好性能...
评论暂时关闭