历史信息查看请查看个人网页www.zhaibibei.cn 这是一个坚持Oracle,Python原创内容的公众号,欢迎关注


这节讲oradebug的一个用途

1. oradebug介绍

oradebug是Oracle提供的一个内部工具,可用于:

  • debug Oracle错误
  • trace Oracle错误
  • 跟踪SQL 语句并使用tkprof工具格式化分析
  • 分析Oracle Hang和Crash
  • SQL性能优化

2. 进入oradebug

使用该命令需要dba权限,一般使用sys用户

sqlplus / as sysdba
SQL> oradebug help
1.png

可以看出他又很多选项,这节将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 实例相关的信息

2.png

第二部分为执行的命令

3.png

第三部分为等待信息和执行计划

如果语句出错 会输出PARSE ERROR

4.png

5.2 格式化后文件

这个基本上很容易理解,内容和上面相同,只是更易于阅读

5.png
6.png

更多信息请参考下面的参考资料


6.参考资料

http://www.dba-oracle.com/t_oradebug_tips.htm

SQL跟踪方法介绍 & TKPROF 语句分析工具

Tkprof工具详解

Oracle oradebug 命令 使用说明