使用oradebug捕获SQL语句
1. oradebug介绍
oradebug是Oracle提供的一个内部工具,可用于:
- debug Oracle错误
- trace Oracle错误
- 跟踪SQL 语句并使用tkprof工具格式化分析
- 分析Oracle Hang和Crash
- SQL性能优化
2. 进入oradebug
使用该命令需要dba权限,一般使用sys用户
sqlplus / as sysdba
SQL> oradebug help
可以看出他又很多选项,这节将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 实例相关的信息
第二部分为执行的命令
第三部分为等待信息和执行计划
如果语句出错 会输出PARSE ERROR
5.2 格式化后文件
这个基本上很容易理解,内容和上面相同,只是更易于阅读
更多信息请参考下面的参考资料
6.参考资料
http://www.dba-oracle.com/t_oradebug_tips.htm
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法