> 历史信息查看请查看个人网页www.zhaibibei.cn > 这是一个坚持Oracle,Python原创内容的公众号,欢迎关注 ------ 这节讲oradebug的一个用途 [TOC] ##1. oradebug介绍 oradebug是Oracle提供的一个内部工具,可用于: - debug Oracle错误 - trace Oracle错误 - 跟踪SQL 语句并使用tkprof工具格式化分析 - 分析Oracle Hang和Crash - SQL性能优化 ---------- ##2. 进入oradebug 使用该命令需要dba权限,一般使用sys用户 ``` sqlplus / as sysdba ``` ``` SQL> oradebug help ``` [image:266 size:orig] 可以看出他又很多选项,这节将SQL Trace相关的内容 ---------- ##3. Oracle 10046 事件 Oradebug 使用events来捕获Oracle的各种事件 对于 SQL trace来说,使用的是10046事件 对于10046事件来说,它提供了不同等级来满足不同的需求 Level 1 - contains the basic level of trace information. For example, this trace level will display the bind variables in PL/SQL and SQL statements. Level 8 - provides the trace details from Level 1 plus the wait events for elapsed times that are more than current CPU timings. Level 12- adds in all the previous trace level information in addition to all wait event information -------- ##4. 使用oradebug ###4.1 使用oradebug 追踪当前会话 ``` SQL> oradebug setmypid Statement processed. SQL> ``` ###4.2 设置tracefile名称 这里为tracefile取一个便于记忆的名称 ``` SQL> alter session set tracefile_identifier='mytrace'; Session altered. ``` ###4.3 查看tracefile存储位置 默认位置在USER_DUMP_DESTINATION 中 ``` SQL> oradebug tracefile_name /u01/app/oracle/diag/rdbms/mesassy/mesassy/trace/mesassy_ora_23993_mytrace.trc SQL> ``` ###4.4 不限制tracefile文件大小 ``` SQL> oradebug unlimit Statement processed. ``` ###4.5 指定10046事件 ``` SQL> oradebug event 10046 trace name context forever, level 12 Statement processed. SQL> ``` ###4.6 执行一些语句 ``` SQL> select * from fwassy.fwcatns_stg_aolot where controllotid='321321'; no rows selected ``` ###4.7 关闭10046事件 ``` SQL> oradebug event 10046 trace name context off Statement processed. ``` ###4.8 tkprof 命令 这时我们可以直接打开文件查看原始数据也可以使用tkprof 命令格式化 explain表示格式化执行计划,如错误则会在文件中保持 sys=no代表不格式化sys用户下的语句 ``` cd /u01/app/oracle/diag/rdbms/mesassy/mesassy/trace/ tkprof mesassy_ora_23993_mytrace.trc trace_sql.txt explain=system/oracle sys=no waits=yes ``` ----------- ##5. 分析trace 文件 ###5.1 原始文件 第一部分为Oracle 实例相关的信息 [image:267 size:orig] 第二部分为执行的命令 [image:268 size:orig] 第三部分为等待信息和执行计划 如果语句出错 会输出**PARSE ERROR** [image:269 size:orig] ###5.2 格式化后文件 这个基本上很容易理解,内容和上面相同,只是更易于阅读 [image:270 size:orig] [image:271 size:orig] 更多信息请参考下面的参考资料 --------- ##6.参考资料 [http://www.dba-oracle.com/t_oradebug_tips.htm](http://www.dba-oracle.com/t_oradebug_tips.htm) [SQL跟踪方法介绍 & TKPROF 语句分析工具](https://my.oschina.net/u/2320648/blog/392068) [Tkprof工具详解](https://www.cnblogs.com/haoxiaoyu/p/3556814.html) [Oracle oradebug 命令 使用说明](https://blog.csdn.net/tianlesoftware/article/details/6525628)