如何使用gdb工具对Oracle系统状态(systemstate)做trace
2009-09-07 21:54
363 查看
当Oracle系统hang住 ,无法使用一切方法登录时 (包括 sqlplus -prelim / as sysdba),我们可以使用gdb调试工具来对 Oracle做系统 dump ,通过 系统 dump信息 判断 具体hang的原因 。 若直接 将 进程 kill 掉,则将失去现场 无法帮助今后避免 这样的hang情况。
要使用gdb 外部工具, 就需要知道目前实例中后台进程的进程号。
我们一般通过 以下命令列出 Oracle 进程:ps -ef|grep <SID>
[oracle@rh2 ~]$ ps -ef|grep oraclewebmoney
oracle 16996 16995 0 21:55 ? 00:00:00 oraclewebmoney (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
然后启动gdb ,指定Oracle软件中二进制文件 oracle的位置和 进程id
[oracle@rh2 udump]$ gdb $ORACLE_HOME/bin/oracle 16996
GNU gdb Red Hat Linux (6.3.0.0-1.159.el4rh)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu"...
(no debugging symbols found)
Using host libthread_db library "/lib64/tls/libthread_db.so.1".
Attaching to program: /u01/oracle/product/10.2.0/db_1/bin/oracle, process 14594
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libskgxp10.so...(no debugging symbols found)...done.
Loaded symbols for /u01/oracle/product/10.2.0/db_1/lib/libskgxp10.so
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libhasgen10.so...done.
Loaded symbols for /u01/oracle/product/10.2.0/db_1/lib/libhasgen10.so
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libskgxn2.so...done.
Loaded symbols for /u01/oracle/product/10.2.0/db_1/lib/libskgxn2.so
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libocr10.so...done.
Loaded symbols for /u01/oracle/product/10.2.0/db_1/lib/libocr10.so
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libocrb10.so...done.
Loaded symbols for /u01/oracle/product/10.2.0/db_1/lib/libocrb10.so
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libocrutl10.so...done.
Loaded symbols for /u01/oracle/product/10.2.0/db_1/lib/libocrutl10.so
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libjox10.so...
在gdb 提示行中 输入 print ksudss(10),即
(gdb) print ksudss(10)
之后将在udump目录中产生相关<SID>_ora_<pid>的trace文件,我们通过分析trace可以发现hang的主要原因。
trace文件示例如下:
System name: Linux
Node name: rh2
Release: 2.6.9-78.ELsmp
Version: #1 SMP Wed Jul 9 15:46:26 EDT 2008
Machine: x86_64
Instance name: webmoney
Redo thread mounted by this instance: 1
Oracle process number: 15
Unix process pid: 16996, image: oracle@rh2 (TNS V1-V3)
*** 2009-09-07 21:57:14.100
*** SERVICE NAME:(SYS$USERS) 2009-09-07 21:57:14.100
*** SESSION ID:(528.2041) 2009-09-07 21:57:14.100
===================================================
SYSTEM STATE
------------
System global information:
processes: base 0x91637c30, size 500, cleanup 0x9167a2e0
allocation: free sessions 0x91779840, free calls (nil)
control alloc errors: 0 (process), 0 (session), 0 (call)
PMON latch cleanup depth: 0
seconds since PMON's last scan for dead processes: 45
system statistics:
[gview file="http://youyus.com/wp-content/uploads/resource/gdb.pdf"]
要使用gdb 外部工具, 就需要知道目前实例中后台进程的进程号。
我们一般通过 以下命令列出 Oracle 进程:ps -ef|grep <SID>
[oracle@rh2 ~]$ ps -ef|grep oraclewebmoney
oracle 16996 16995 0 21:55 ? 00:00:00 oraclewebmoney (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
然后启动gdb ,指定Oracle软件中二进制文件 oracle的位置和 进程id
[oracle@rh2 udump]$ gdb $ORACLE_HOME/bin/oracle 16996
GNU gdb Red Hat Linux (6.3.0.0-1.159.el4rh)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu"...
(no debugging symbols found)
Using host libthread_db library "/lib64/tls/libthread_db.so.1".
Attaching to program: /u01/oracle/product/10.2.0/db_1/bin/oracle, process 14594
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libskgxp10.so...(no debugging symbols found)...done.
Loaded symbols for /u01/oracle/product/10.2.0/db_1/lib/libskgxp10.so
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libhasgen10.so...done.
Loaded symbols for /u01/oracle/product/10.2.0/db_1/lib/libhasgen10.so
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libskgxn2.so...done.
Loaded symbols for /u01/oracle/product/10.2.0/db_1/lib/libskgxn2.so
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libocr10.so...done.
Loaded symbols for /u01/oracle/product/10.2.0/db_1/lib/libocr10.so
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libocrb10.so...done.
Loaded symbols for /u01/oracle/product/10.2.0/db_1/lib/libocrb10.so
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libocrutl10.so...done.
Loaded symbols for /u01/oracle/product/10.2.0/db_1/lib/libocrutl10.so
Reading symbols from /u01/oracle/product/10.2.0/db_1/lib/libjox10.so...
在gdb 提示行中 输入 print ksudss(10),即
(gdb) print ksudss(10)
之后将在udump目录中产生相关<SID>_ora_<pid>的trace文件,我们通过分析trace可以发现hang的主要原因。
trace文件示例如下:
System name: Linux
Node name: rh2
Release: 2.6.9-78.ELsmp
Version: #1 SMP Wed Jul 9 15:46:26 EDT 2008
Machine: x86_64
Instance name: webmoney
Redo thread mounted by this instance: 1
Oracle process number: 15
Unix process pid: 16996, image: oracle@rh2 (TNS V1-V3)
*** 2009-09-07 21:57:14.100
*** SERVICE NAME:(SYS$USERS) 2009-09-07 21:57:14.100
*** SESSION ID:(528.2041) 2009-09-07 21:57:14.100
===================================================
SYSTEM STATE
------------
System global information:
processes: base 0x91637c30, size 500, cleanup 0x9167a2e0
allocation: free sessions 0x91779840, free calls (nil)
control alloc errors: 0 (process), 0 (session), 0 (call)
PMON latch cleanup depth: 0
seconds since PMON's last scan for dead processes: 45
system statistics:
[gview file="http://youyus.com/wp-content/uploads/resource/gdb.pdf"]
相关文章推荐
- 如何使用gdb工具对Oracle系统状态(systemstate)做trace
- 怎样用调试工具gdb Dump Oracle系统状态
- 如何在Android平台上使用IO分析工具(blktrace)
- GDB工具如何使用断点信息
- [导入]如何使用 ASP.NET 实用工具加密凭据和会话状态连接字符串
- 如何使用 ASP.NET 实用工具加密凭据和会话状态连接字符串
- 如何禁止特定用户使用sqlplus或PL/SQL Developer等工具登陆?
- redis状态监控可视化工具RedisLive使用
- 如何使用SMTPDiag 工具
- Linux下多线程查看工具(pstree、ps、pstack),linux命令之-pstree使用说明, linux 查看线程状态。 不指定
- c#如何使用 Debug 和 Trace 类
- 如何使用工具链搭建企业级CICD流水线 - 运维
- 查找资料, 学习如何使用命令安装gcc/g++, gdb, vim
- 如何使用在线ps的污点修复画笔工具编辑图片
- 如何使用gdbclient gdbserver调试C/C++ native文件
- 如何使用batch-import工具向neo4j中导入海量数据
- 使用 Strace 和 GDB 调试工具的乐趣
- CentOS7下使用rmcli配置IP地址详解及网络连接状态查看工具和进程管理工具的使用
- 如何将excel表格数据使用图形化工具workbench导入mysql数据库中
- 使用log4j的时候如何输出printStackTrace()的堆栈信息