oradebug的前身是在ORACLE7時的ORADBX,它可以啓動用停止跟蹤任何會話,dumpSGA和其它內存結構,喚醒ORACLE進程,如SMON、PMON進程,也可以通過進程號使進程掛起和恢復等,還有很多功能,實際上這些功能都不常用,但是我們在看別人做問題診斷時,常看到別人在使用oradebug命令,其實我感覺最好用的就是他可以直接通過命令輸出生成trace文件的名稱(帶路徑的哦),省去不少麻煩,系統HANG住用它做分析也比較好用,和大家分享一下它最常用的方法!
1> oradebug有哪些可用命令?
以sysdba身份登陸數據庫,通過oradebughelp可以看到oradebug常用命令
sqlplus / as sysdba
oradebug help
2> 跟蹤當前會話信息
oradebugsetmypid --跟蹤當前會話
oradebugsetospid --跟蹤系統進程
oradebugsetorapid --跟蹤ORACLE進程
oradebugunlimit --取消trace文件大小限制
oradebugtracefile_name --查看trace文件名及位置
3> 用oradebug做session級10046或10053
oradebug setmypid
oradebugunlimit
oradebug session_event10046 trace name context forever ,level 4 --啓用會話級10046
oradebug event 10046 tracename context off --關閉10046事件
oradebugtracefile_name --查看tracefile文件位置及文件名
4> 用oradebug做oracle process級10046
oradebug setorapid
oradebug unlimit
oradebug event 10046 tracename context forever ,level 4
oradebug event 10046 tracename context off
oradebug tracefile_name
5> oradebug系統hang住原因分析
如果系統HANG住,只要sys用戶可以登陸,那麼用oradebug做原因分析是非常有用的
oradebug setmypid
oradebug unlimit
oradebug setinstall --RAC環境
oradebughanganalyze 3 -- 級別一般指定爲3足夠了
oradebug -g def dumpsystemstate 10 --RAC環境
oradebug tracefile_name
6> 獲取某進程的狀態信息
oradebug setospid 22180
oradebugdump processstate 10
oradebug tracefile_name
7> 獲取進程錯誤信息狀態
oradebug setospid 22180
oradebug dump errorstack3
8> 追蹤造成錯誤信息的原因,如ORA-04031
oradebugevent 4031 trace name errorstack level3
原文網址:http://blog.sina.com.cn/s/blog_61cd89f60102ee3j.html