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

简介:
     有时我们需要对执行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秒,这个时间也是可以接受的


目录
相关文章
|
6月前
|
SQL Oracle 关系型数据库
WARNING: Too Many Parse Errors With error=911 When Running a JDBC Application Connected to an Oracle 19c database
WARNING: Too Many Parse Errors With error=911 When Running a JDBC Application Connected to an Oracle 19c database (
91 2
|
6月前
|
Oracle Java 关系型数据库
【服务器】python通过JDBC连接到位于Linux远程服务器上的Oracle数据库
【服务器】python通过JDBC连接到位于Linux远程服务器上的Oracle数据库
78 6
|
6月前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之使用JDBC方式读取Oracle的number类型时,通过什么方式进行映射
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
158 0
实时计算 Flink版产品使用合集之使用JDBC方式读取Oracle的number类型时,通过什么方式进行映射
|
Oracle 关系型数据库 Java
分享一个 Oracle RAC 模式下客户端建立JDBC初始连接时因ONS造成应用启动时卡顿30秒问题的排查分析案例
分享一个 Oracle RAC 模式下客户端建立JDBC初始连接时因ONS造成应用启动时卡顿30秒问题的排查分析案例
|
Oracle 前端开发 关系型数据库
在Oracle的ADR中设置自动删除trace文件的策略
姚远在一个有两万个客户的公司做数据库支持,什么稀奇古怪的事情都能遇到,有个客户的数据库不停地产生大量的trace,经常把硬盘撑爆,看看姚远怎么解决这个问题的。
115 0
|
Oracle 前端开发 关系型数据库
在Oracle的ADR中设置自动删除trace文件的策略
姚远老师在一个有两万个客户的公司做数据库支持,什么稀奇古怪的事情都能遇到,有个客户的数据库不停地产生大量的trace,经常把硬盘撑爆,看看姚远怎么解决这个问题的。
125 0
|
Oracle Java 关系型数据库
maven中安装oracle jdbc包到仓库以及引入
maven中安装oracle jdbc包到仓库以及引入
|
SQL Oracle Java
Java java jdbc thin远程连接并操作Oracle数据库
Java java jdbc thin远程连接并操作Oracle数据库
146 0
|
Oracle 关系型数据库
Oracle trace文件的清理
Oracle trace文件的清理
576 0
Oracle trace文件的清理
|
SQL Oracle Java
Jdbc连接Oracle数据库详细案例,占位符的使用
Jdbc连接Oracle数据库详细案例,占位符的使用
337 0
Jdbc连接Oracle数据库详细案例,占位符的使用