看懂oracle trc文件,oracle 的 debug 工具 和 分析 trc 文件工具 ass.awk
oracle的dump工具和分析trc文件工具ass.awk
之前介绍了oracle的一个hang住时的一个分析工具hanganalyze,这里再引入另外的一个工具,分析系统进程和单个进程的工具
1、在能登录数据库时,可以使用如下语句:
跟踪进程对象的debug的方法:
可以使用下面方法产生系统状态跟踪文件:
process state dumps ==>一个进程的所有对象状态,如果确认哪个进程有问题,就用该方法
process state dumps:
1.ALTER SESSION SET EVENTS 'IMMEDIATE TRACE NAME PROCESSSTATE LEVEL 10'或者event = '604 trace name processstate,level 10'(INIT.ORA entry);
2.oradebug setospid进程ID
3.oradebug dump processstate 10;
实验:
Sid 300:UPDATEtxt_test aSETa.FLOWNO='b'WHEREa.FLOWNO='a';
Sid 244:UPDATEtxt_test aSETa.FLOWNO='b'WHEREa.FLOWNO='a';
这样,sid 300 update后不commit,那么,sid 244就会卡在那边,这时,我去debug sid 244那个进程id 17541
但是,当我使用ass.awk去跟踪文件的时候,却发现,没有内容出来:
----------------------------------------------------------------------------
[oracle@local ass]$ awk -f ass.awk$ORACLE_HOME/zxin/udump/zxin_ora_17541.trc
Ass.Awk Version 1.0.9 - Processing $ORACLE_HOME/zxin/udump/zxin_ora_17541.trc
2451 Lines Processed.
------------------------------------------------------------------------------
system state dumps ==>整个系统的所有进程中的所有对象状态
system state dumps:
1.ALTER SESSION SET EVENTS 'IMMEDIATE TRACE NAME SYSTEMSTATE LEVEL 10'或者event = '604 trace name systemstate,level 10'(INIT.ORA entry)
2、当系统hang住后,如果连sqlplus也不能登录数据库,那么可以使用如下工具
在LINUX下用gdb,在AIX下用dbx,那么在HP-UX下呢,可以用HP的wdb(可以到HP WDB查看HP WDB的详细信息和下载最新的版本。在solaris上,也会有dbx或gdb(各个平台有多种不同的debugger,其他还有adb,mdb等等)。
这里继续上马的例子,当我在linux上使用sid 300的pid的时候,就可以使用ass.awk了
[oracle@localhost ass]$gdb $ORACLE_HOME/bin/oracle
GNU gdb 6.6
Copyright (C) 2006 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 "--host=i686-pc-linux-gnu --target=i686-pc-linux"...
Using host libthread_db library "/lib/libthread_db.so.1".
Attaching to program: /home/oracle/oracle92/bin/oracle, process 22655
Readingsymbols from /etc/libcwait.so...done.
Loaded symbols for /etc/libcwait.so
Readingsymbols from /home/oracle/oracle92/lib/libodm9.so...done.
Loaded symbols for /home/oracle/oracle92/lib/libodm9.so
Readingsymbols from /home/oracle/oracle92/lib/libskgxp9.so...done.
Loaded symbols for /home/oracle/oracle92/lib/libskgxp9.so
Readingsymbols from /home/oracle/oracle92/lib/libskgxn9.so...done.
Loaded symbols for /home/oracle/oracle92/lib/libskgxn9.so
Readingsymbols from /home/oracle/oracle92/lib/libjox9.so...done.
Loaded symbols for /home/oracle/oracle92/lib/libjox9.so
Readingsymbols from /lib/libdl.so.2...done.
Loaded symbols for /lib/libdl.so.2
Readingsymbols from /lib/libm.so.6...done.
Loaded symbols for /lib/libm.so.6
Readingsymbols from /lib/libpthread.so.0...done.
Loaded symbols for /lib/libpthread.so.0
Readingsymbols from /lib/libnsl.so.1...done.
Loaded symbols for /lib/libnsl.so.1
Readingsymbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6
Readingsymbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Readingsymbols from /lib/libnss_files.so.2...done.
Loaded symbols for /lib/libnss_files.so.2
0xffffe410 in __kernel_vsyscall ()
(gdb)print ksudss(10)
$1 = 181834684
(gdb)detach
Detaching from program: /home/oracle/oracle92/bin/oracle, process 22655
(gdb)quit
这时,使用ass.awk来跟踪这个trc文件
[oracle@localhost ass]$ awk -f ass109.awk/home/oracle/zxindbf/admin/zxin/udump/zxin_ora_22655.trc
Starting Systemstate 1
..............................................................................
...............................................................................
...............................................................................
...........
Ass.Awk Version 1.0.9 - Processing /home/oracle/zxindbf/admin/zxin/udump/zxin_ora_22655.trc
SystemState1
~~~~~~~~~~~~~~~~
1:
2:waiting for 'pmon timer'seq=43334
3:waiting for 'rdbms ipc message'seq=20506
4:waiting for 'rdbms ipc message'seq=56103
5:waiting for 'rdbms ipc message'seq=51900
6:waiting for 'rdbms ipc message'seq=37622
7:waiting for 'rdbms ipc message'seq=37381
8:waiting for 'rdbms ipc message'seq=26290
9:waiting for 'rdbms ipc message'seq=26699
10: waiting for 'rdbms ipc message'seq=6453
11: waiting for 'rdbms ipc message'seq=17840
12: waiting for 'rdbms ipc message'seq=43737
13: waiting for 'smon timer'seq=10561
14: waiting for 'rdbms ipc message'seq=726
15: waiting for 'rdbms ipc message'seq=55882
16: waiting for 'wakeup time manager'seq=15573
17: waiting for 'SQL*Net message from client' seq=272
18: waiting for 'jobq slave wait'seq=2
19: waiting for 'jobq slave wait'seq=2
20: waiting for 'jobq slave wait'seq=2
21: waiting for 'SQL*Net message from client' seq=282
22: waiting for 'SQL*Net message from client' seq=2456
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
225:waiting for 'enqueue'[Enqueue TX-00020016-000FA083] seq=49
Cmd: Update
226:waiting for 'SQL*Net message from client' seq=117
Blockers
~~~~~~~~
Above is a list of all the processes. If they are waiting for a resource
then it will be given in square brackets. Below is a summary of the
waited upon resources, together with the holder of that resource.
Notes:
~~~~~
o A process id of '???' implies that the holder was not found in the
systemstate.
Resource Holder State
Enqueue TX-00020016-000FA083224: waiting for 'SQL*Net message from client'
Object Names
~~~~~~~~~~~~
Enqueue TX-00020016-000FA083
137909 Lines Processed.
这里,可以很清楚地看到,这个进程,是由于什么原因卡在那边。
3、ass.awk的用法
先上传下ass.awk的shell脚本
用的时候,在当前目录下生成那个shell脚本(ass.awk),然后,使用如下命令,就会生成了
(n)awk -f ass.awk$ORACLE_BASE/zxin/udump/zxin_ora_22655.trc
参考网址:
看懂oracle trc文件,oracle 的 debug 工具 和 分析 trc 文件工具 ass.awk相关推荐
- 带你看懂基于Citespace的文献计量学及可视化分析
带你看懂基于Citespace的文献计量学及可视化分析 编辑切换为居中 添加图片注释,不超过 140 字(可选) 你知道文献计量学分析吗? 听过,据说可以用citespace等特殊软件完成,做出很 ...
- 明尼苏达量表结果分析_如何看懂「明尼苏达多相个性调查表」的结果分析报告 ?...
感谢邀请.因你的问题涉及以下几个问题,我分别论述: 第一,这两个测验(MMPI-1和SCL-90)的信度和效度问题. 从你给的信息判断,你先生的MMPI测试结果是MMPI-1版本,这个版本在大陆医院使 ...
- oracle张大鹏,Oracle数据库性能优化
目录 第一篇 优化工具篇 第 1 章 DBA 优化之路 1.1 学习的建议 1.2 工具推荐 1.3 关于操作系统方面的建议 1.4 关于Oracle初始化参数的调整 1.5 关于Statspack的 ...
- 一文看懂LR寄存器及 BX LR 指令的两种用途
一文看懂LR寄存器 不知你在DEBUG程序,又或者阅读操作系统源码时候有没细心观察,从一个普通子函数返回与异常(中断)返回的汇编指令都是BX LR,但是这两者的意义是一样的吗?这篇文章就来揭开LR寄 ...
- 如何看懂设计师给到的设计图?
在我的第一段实习经历中,由于业务需求特性我做得最多的工作就是,根据UI设计师的设计图还原编码.这项工作的难点不在于编码难度,而在于看懂设计图本身.元素位置.元素色相.资源文件,都需要花费很大地精力和设 ...
- 鸟哥的Linux私房菜(基础篇)- 第十九章、认识与分析登录文件
第十九章.认识与分析登录文件 最近升级日期:2009/09/14 当你的 Linux 系统出现不明原因的问题时,很多人都告诉你,你要查阅一下登录文件才能够知道系统出了什么问题了,所以说,了解登录文件是 ...
- 【Android 性能优化】应用启动优化 ( Trace 文件分析 | 结合代码分析 Trace 文件 )
文章目录 一. Trace 文件查看 二. 结合代码分析 Trace 文件 一. Trace 文件查看 上一篇博客 [Android 性能优化]应用启动优化 ( 方法追踪代码模板 | 示例项目 | S ...
- Note For Linux By Jes(13)-认识与分析日志文件
什么是登录文件: Linux 常见的登录文件档名 /var/log/dmesg: 记录系统在启动的时候核心侦测过程所产生的各项资讯.由於CentOS 默认将启动时核心的硬件侦测过程取消显示,因此额外将 ...
- 数据压缩作业二——分析tga文件
数据压缩作业二--分析tga文件 文章目录 数据压缩作业二--分析tga文件 一.TGA格式文件概述 二.使用二进制编辑软件分析tga文件 1.TGA文件头(TGA FILE HEADER) 2. 图 ...
最新文章
- STM32 串行通信原理
- 20周年献礼:Visual Studio 2017正式版3月7日发布
- AI岗位秋招纪实:算法原理扎实才是王道,而不是调参
- 爬虫小工具合集|不会编程也能爬数据
- Android app应用多语言切换功能实现
- 重磅︱R+NLP:text2vec包——New 文本分析生态系统 No.1(一,简介)
- Guava学习笔记(二):Optional优雅的使用null
- 特征选择算法(机器学习)
- Log4j有哪几种日志级别呢?
- 【javase基础】第六篇:方法的重载与递归
- PAT 7-14 电话聊天狂人
- 制作咖啡店的banner
- 用 Androidx + 蓝牙HC05 点灯(2): Handler 掌舵人 和 Thread 线人,逮着蓝牙老大说黑话:此灯为我开,101011...
- 软件工程的10个知识领域
- 通达OA使用手册(一)
- 第五章第三题(将千克转换成磅)(Conversion from kilogram to pound)
- 赠与今年的大学毕业生,胡适
- how2j:JAVA学习笔记——DAY 9
- linux下ant编译android,linux(以ubuntu為例)下Android利用ant自動編譯、修改配置文件、批量多渠道,打包生成apk文件...
- Kubernetes 部署策略