oracle oradebug使用详解

2025-01-23Oracle / RAC

oradebug的前身是在ORACLE 7时的ORADBX,它可以启动用停止跟踪任何会话,dump SGA和其它内存结构,唤醒ORACLE进程,如SMON、PMON进程,也可以通过进程号使进程挂起和恢复等,还有很多功能,实际上这些功能都不常用,但是我们在看别人做问题诊断时,常看到别人在使用oradebug命令,其实我感觉最好用的就是他可以直接通过命令输出生成trace文件的名称(带路径的哦),省去不少麻烦,系统HANG住用它做分析也比较好用,和大家分享一下它最常用的方法!

1> oradebug有哪些可用命令?

以sysdba身份登陆数据库,通过oradebug help可以看到oradebug常用命令

sqlplus / as sysdba

oradebug help

2> 跟踪当前会话信息

oradebug setmypid

oradebug setospid

oradebug setorapid

oradebug unlimit

oradebug tracefile_name

3> 用oradebug做session级10046或10053

oradebug setmypid

oradebug unlimit

oradebug session_event 10046 trace name context forever ,level 4

oradebug event 10046 trace name context off

oradebug tracefile_name

4> 用oradebug做oracle process级10046

oradebug setorapid

oradebug unlimit

oradebug event 10046 trace name context forever ,level 4

oradebug event 10046 trace name context off

oradebug tracefile_name

5> oradebug系统hang住原因分析

如果系统HANG住,只要sys用户可以登陆,那么用oradebug做原因分析是非常有用的

oradebug setmypid

oradebug unlimit

oradebug setinst all

oradebug hanganalyze 3

oradebug -g def dump systemstate 10

oradebug tracefile_name

6> 获取某进程的状态信息

oradebug setospid 22180

oradebug dump processstate 10

oradebug tracefile_name

7> 获取进程错误信息状态

oradebug setospid 22180

oradebug dump errorstack 3

8> 追踪造成错误信息的原因,如ORA-04031

这些是常用到的一些命令,更多信息参考DAVE博客,他介绍的比较详解

[http://blog.csdn.net/tianlesoftware/article/details/6525628](http://blog.csdn.net/tianlesoftware/article/details/6525628)