1. 环境: oracle 10.2.0.4
2. 测试场景: 通过weblogic提供的数据源连接数据库
1)weblogic中建立数据源时,初始设定一个连接,以方便确认执行过程中,所产生的trace文件。
2)确认trace文件生成的路径:
SQL> show parameter user_dump_dest NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ user_dump_dest string /oracle/admin/jf/udump SQL> show parameter background_dump_dest NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ background_dump_dest string /oracle/admin/jf/bdump |
3)确认用户id
Toad中执行: SELECT SID, SERIAL#, USER#, USERNAME, STATUS FROM V$SESSION T WHERE MACHINE LIKE '本机机器名%'; 目前:本机连接数据库有toad连接和Weblogic建立的数据源连接,故返回两条记录,其中Weblogic建立的数据源连接显示status为INACTIVE。 记录该笔资料的SID和SERIAL#值 |
4)使用sys用户开启Trace
execdbms_monitor.session_trace_enable(93,18096,true,true);;【sid:93;serial: 18096】 PL/SQL procedure successfully completed. |
5)进入trace文件的存放路径,此时并未发现今日生成的.trc文件
ls –lrt * |
6)当通过应用程序发生了数据库操作后,查看/oracle/admin/jf/udump目录下生成了jf_ora_8182.trc文件【通过文件生成的时间判断】
7)通过tkprof命令转化trace文件为txt格式
[200.14]/oracle/admin/jf/udump>tkprof jf_ora_8182.trc/home/bea/app/lihailong/8023_new_03.txt explain=userName/pwdaggregate=no sys=no waits=no; |
8)关闭trace跟踪
SQL> exec dbms_monitor.session_trace_disable(93,18096); |
9)应用程序再发生了数据库操作后,jf_ora_8182.trc文件将不再发生变化。
10)生成8023_new_03.txt的部分内容:
SELECT BYDATE,OPERATE_ID,SUM(OPERATE_POINT) OPERATE_POINT FROM (SELECT SUBSTR(A.CREATE_TIME,0,6) BYDATE,A.OPERATE_ID OPERATE_ID, TO_NUMBER(A.OPERATE_POINT) OPERATE_POINT FROM BE_POINT_DETAIL A ,be_purse B WHERE A.PURSE_ID=B.PURSE_ID AND ( a.customer_id = :1 or a.customer_id = :2 )AND A.CREATE_TIME >= :3 AND B.PURSE_TYPE_ID != '3' AND B.PURSE_PROCESS_TYPE = '1' ) GROUP BY BYDATE,OPERATE_ID ORDER BY BYDATE DESC
call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.00 0.00 0 0 0 0 Execute 1 0.00 0.00 0 0 0 0 Fetch 4 0.01 0.00 0 546 0 30 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 6 0.01 0.01 0 546 0 30
Misses in library cache during parse: 1 Misses in library cache during execute: 1 Optimizer mode: ALL_ROWS Parsing user id: 31 (JF_ISU)
Rows Execution Plan ------- --------------------------------------------------- 0 SELECT STATEMENT MODE: ALL_ROWS 0 SORT (GROUP BY) 0 NESTED LOOPS 0 INLIST ITERATOR 0 TABLE ACCESS MODE: ANALYZED (BY INDEX ROWID) OF 'BE_POINT_DETAIL' (TABLE) 0 INDEX MODE: ANALYZED (RANGE SCAN) OF 'IDX_BE_POINT_DETAIL' (INDEX) 0 TABLE ACCESS MODE: ANALYZED (BY INDEX ROWID) OF 'BE_PURSE' (TABLE) 0 INDEX MODE: ANALYZED (UNIQUE SCAN) OF 'PK_BE_PURSE' (INDEX (UNIQUE))
Elapsed times include waiting on following events: Event waited on Times Max. Wait Total Waited ---------------------------------------- Waited ---------- ------------ SQL*Net message to client 5 0.00 0.00 SQL*Net message from client 5 0.01 0.04 |
3.测试场景: 开发过程中,通过Toad工具连接数据库后,测试某SQL语句的执行情况
1) 在toad的SQL窗口中,执行如下语句:
开启Trace跟踪: ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';
关闭Trace 跟踪:ALTER SESSION SET EVENTS '10046 trace name context off';
2) 开启Trace后,在/oracle/admin/jf/udump目录下存在jf_ora_13297.trc文件
3) 通过toad执行【同场景1中step10的SQL】
SELECT bydate, operate_id, SUM (operate_point) operate_point FROM (SELECT SUBSTR (a.create_time, 0, 6) bydate, a.operate_id operate_id, TO_NUMBER (a.operate_point) operate_point FROM be_point_detail a, be_purse b WHERE a.purse_id = b.purse_id AND (a.customer_id = :1 OR a.customer_id = :2) AND a.create_time >= :3 AND b.purse_type_id != '3' AND b.purse_process_type = '1') GROUP BY bydate, operate_id ORDER BY bydate DESC |
4) 多次执行SQL后,通过tkprof产生如下内容:
SELECT bydate, operate_id, SUM (operate_point) operate_point FROM (SELECT SUBSTR (a.create_time, 0, 6) bydate, a.operate_id operate_id, TO_NUMBER (a.operate_point) operate_point FROM be_point_detail a, be_purse b WHERE a.purse_id = b.purse_id AND (a.customer_id = :1 OR a.customer_id = :2) AND a.create_time >= :3 AND b.purse_type_id != '3' AND b.purse_process_type = '1') GROUP BY bydate, operate_id ORDER BY bydate DESC
call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.00 0.00 0 0 0 0 Execute 1 0.00 0.00 0 0 0 0 Fetch 1 0.61 72.67 6742 12092 0 8 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 3 0.61 72.67 6742 12092 0 8
Misses in library cache during parse: 0 Optimizer mode: ALL_ROWS Parsing user id: 31
Rows Row Source Operation ------- --------------------------------------------------- 8 SORT GROUP BY (cr=12092 pr=6742 pw=0 time=72671905 us) 7989 HASH JOIN (cr=12092 pr=6742 pw=0 time=14807759 us) 85 TABLE ACCESS FULL BE_PURSE (cr=7 pr=0 pw=0 time=180 us) 7989 INLIST ITERATOR (cr=12085 pr=6742 pw=0 time=14790792 us) 7989 TABLE ACCESS BY INDEX ROWID BE_POINT_DETAIL (cr=12085 pr=6742 pw=0 time=14789762 us) 42231 INDEX RANGE SCAN IDX_BE_POINT_DETAIL (cr=269 pr=152 pw=0 time=49272 us)(object id 26977)
Elapsed times include waiting on following events: Event waited on Times Max. Wait Total Waited ---------------------------------------- Waited ---------- ------------ SQL*Net message to client 2 0.00 0.00 SQL*Net message from client 2 17.44 17.44 db file sequential read 6742 0.12 72.20 |
SELECT bydate, operate_id, SUM (operate_point) operate_point FROM (SELECT SUBSTR (a.create_time, 0, 6) bydate, a.operate_id operate_id, TO_NUMBER (a.operate_point) operate_point FROM be_point_detail a, be_purse b WHERE a.purse_id = b.purse_id AND (a.customer_id = :1 OR a.customer_id = :2) AND a.create_time >= :3 AND b.purse_type_id != '3' AND b.purse_process_type = '1') GROUP BY bydate, operate_id ORDER BY bydate DESC
call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.00 0.00 0 0 0 0 Execute 1 0.00 0.00 0 0 0 0 Fetch 1 0.15 0.15 0 12092 0 8 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 3 0.15 0.15 0 12092 0 8
Misses in library cache during parse: 0 Optimizer mode: ALL_ROWS Parsing user id: 31
Rows Row Source Operation ------- --------------------------------------------------- 8 SORT GROUP BY (cr=12092 pr=0 pw=0 time=151202 us) 7989 HASH JOIN (cr=12092 pr=0 pw=0 time=86769 us) 85 TABLE ACCESS FULL BE_PURSE (cr=7 pr=0 pw=0 time=187 us) 7989 INLIST ITERATOR (cr=12085 pr=0 pw=0 time=69778 us) 7989 TABLE ACCESS BY INDEX ROWID BE_POINT_DETAIL (cr=12085 pr=0 pw=0 time=69809 us) 42231 INDEX RANGE SCAN IDX_BE_POINT_DETAIL (cr=269 pr=0 pw=0 time=104 us)(object id 26977)
Elapsed times include waiting on following events: Event waited on Times Max. Wait Total Waited ---------------------------------------- Waited ---------- ------------ SQL*Net message to client 2 0.00 0.00 SQL*Net message from client 2 2.31 2.31 |
相关推荐
启用SQL_TRACE的方式很简单,只需在会话中设置SQL_TRACE参数为TRUE即可: ```sql ALTER SESSION SET SQL_TRACE = TRUE; ``` ##### 4.2 10046事件 10046事件是一种更强大的追踪方法,它不仅可以记录SQL语句的执行...
Oracle的10046事件跟踪是数据库性能分析的关键工具,尤其在解决应用程序性能瓶颈时。这个功能允许数据库管理员深入观察SQL语句的执行过程,获取详细的执行信息,包括解析次数、执行次数、CPU使用时间等,从而进行...
Oracle数据库在进行性能调优时,经常会涉及到对跟踪文件(Trace Files)的分析。这些跟踪文件包含了数据库执行的详细信息,如SQL语句、执行计划、等待事件等,但原始的跟踪文件数据往往混乱且不易读。这时,我们就...
oracle系统状态trace文件分析器 当系统hang住时,或者进程间有阻塞时,你可以产生下面两种跟踪文件,一种是进程状态跟踪文件,一种是系统状态跟踪文件: process state dumps ==> 一个进程的所有对象状态,...
ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 8'; ``` 其中,“LEVEL 8”表示收集的信息级别,不同的级别会收集不同详细程度的信息。 3. **执行待追踪的 SQL 语句**:在设置完事件后,...
包含了oracle诊断 oracle 诊断事件列表trace文件 ORA报错信息
【10046事件与SQL_TRACE】是Oracle数据库中用于诊断和优化SQL语句执行性能的重要工具。当面临SQL语句执行效率低下时,我们可以启用SQL_TRACE来追踪其执行流程,获取详细的执行信息,从而找出性能瓶颈。 一、启用SQL...
10046 Trace是一种高级的SQL追踪技术,主要用于深入分析Oracle数据库中的SQL语句执行情况,包括但不限于SQL语句的执行计划、绑定变量、等待事件等。对于性能调优而言,10046 Trace是一项非常重要的工具。本文档将...
Oracle数据库是世界上最...总结来说,"oracle 数据库 scott.sql 范例表"提供了一个学习和测试Oracle SQL的实用环境。通过导入"scott.sql"并使用SCOTT用户,初学者能够熟悉数据库管理和SQL语言,进一步提升数据库技能。
oracle 11g的监听日志和警告日志都是在/u01/oracle/diag/tnslsnr/oracle/listener目录和/u01/oracle/diag/rdbms/db1/db1目录下都有以下分别简称listener目录和db1目录。这两目录下都有如下目录:alert cdump hm ...
Oracle Form 11g 是 Oracle 公司为企业级应用开发提供的一个组件,它主要用于构建基于数据库的图形用户界面(GUI)应用,特别是那些与Oracle数据库紧密集成的业务系统。Oracle Forms Builder 是其开发工具,提供了...
适用安卓手机掌阅查看,第一章 oracle数据库基础、第二章 sql plus命令行工具的使用、第三章表及表空间的基本操作、第四章PL/SQL流程控制、第五章基础查询,第七章高级查询,第八章索引与视图、第九章存储过程与事务...
oracle数据库开发范例
Oracle 10g简易客户端是Oracle数据库公司推出的一款轻量级数据库访问工具,它为开发者和DBA提供了连接和管理Oracle数据库的便捷途径。这款客户端主要用于执行SQL查询、数据操作、数据库管理以及进行简单的数据库开发...
Oracle 12c 32位简易客户端是一个轻量级的数据库连接工具,适用于那些只需要基本数据库访问功能的用户。这个客户端包含了SQL*Plus、ODBC驱动程序以及其他基础组件,可以满足开发人员、系统管理员以及对Oracle数据库...
Oracle简单客户端配置64位教程 Oracle数据库是一个广泛使用的数据库管理系统,尤其在企业级应用中占据重要地位。在某些情况下,我们可能并不需要完整的Oracle数据库服务器环境,而是只需要一个能够连接到远程Oracle...
SQL语法范例大全SQL和Oracle通解
本文实例讲述了Python操作Oracle数据库的简单方法和封装类。分享给大家供大家参考,具体如下: 最近工作有接触到Oracle,发现很多地方用Python脚本去做的话,应该会方便很多,所以就想先学习下Python操作Oracle的...