原文链接http://blog.csdn.net/tianlesoftware/article/details/7237729

如果Oracle数据库hang住了,对Oracle做system dump,或做 hang analyze,是研究和解决问题的有效办法。如果能够连接数据库,并能够进行操作,那么用oradebug是简单快捷的办法。

SYS@anqing1(rac1)> oradebug setmypid

Statement processed.

SYS@anqing1(rac1)>oradebug dump systemstate 10

Statement processed.

SYS@anqing1(rac1)>oradebug tracefile_name

/u01/app/oracle/admin/anqing/udump/anqing1_ora_8725.trc

SYS@anqing1(rac1)>oradebug close_trace

Statement processed.

在系统hung的时候,systemstate基本等同于hanganalyze,可以用于诊断system hung。但是如果直接来查看这个trace file,比较麻烦,这时候可以使用ass.awk 脚本来帮助我们查看trace file。

Ass.Awk 脚本在LTOM的ltom431\ltom\tom_base\tom\src目录下,其名称是:ass109.awk。这个是目前的最新版本,ass.awk 脚本可以帮助我们分析和格式化system state dump。

LTOM的MOS说明:

LTOM - TheOn-Board Monitor User Guide [ID 352363.1]

LTOM 的下载地址:

在看AWK, awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。

关于AWK的更多内容参考:

我们这里使用的是AWR命令的 -fscripfile 参数,即从脚本文件中读取awk命令。这个脚本就是我们LTOM中的ass109.awk。

示例:

[oracle@rac1 src]$awk -f ass109.awk /u01/app/oracle/admin/anqing/udump/anqing1_ora_8725.trc

Starting Systemstate 1

...................................

Ass.Awk Version 1.0.9 - Processing/u01/app/oracle/admin/anqing/udump/anqing1_ora_8725.trc

System State 1

~~~~~~~~~~~~~~~~

1:

2: waiting for 'pmon timer'           wait

3: waiting for 'DIAG idle wait'       wait

4: waiting for 'rdbms ipc message'    wait

5: waiting for 'rdbms ipc message'    wait

6: waiting for 'ges remote message'   wait

7: waiting for 'gcs remote message'   wait

8: waiting for 'rdbms ipc message'    wait

9: waiting for 'rdbms ipc message'    wait

10: waiting for 'rdbms ipc message'     wait

11: waiting for 'rdbms ipc message'     wait

12: waiting for 'buffer busy waits'(2,89,21) wait

13: waiting for 'rdbms ipc message'     wait

14: waiting for 'enq: JS - queue lock'[Enqueue JS-00000000-00000001] wait

15: waiting for 'buffer busy waits'(2,89,21) wait

16: waiting for 'rdbms ipc message'     wait

17:

18:

19: waiting for 'rdbms ipc message'     wait

20: waiting for 'log file switch (archivingneeded)' wait

21: waiting for 'ASM background timer'  wait

22: waiting for 'rdbms ipc message'     wait

23: waiting for 'log file switch (archivingneeded)' wait

24: last wait for 'SQL*Net message fromclient'

25: for 'Streams AQ: waiting for messagesin the queue' wait

26: waiting for 'Streams AQ: qmn slave idlewait' wait

27: waiting for 'rdbms ipc message'     wait

28: waiting for 'rdbms ipc message'     wait

29: waiting for 'class slave wait'      wait

30:

31: waiting for 'Streams AQ: qmncoordinator idle wait' wait

32: waiting for 'SQL*Net message fromclient' wait

34: waiting for 'SQL*Net message fromclient' wait

36: waiting for 'jobq slave wait'       wait

37: for 'Streams AQ: waiting for timemanagement or cleanup tasks' wait

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 JS-00000000-00000001    23: waiting for 'log file switch (archivingneeded)'

Object Names

~~~~~~~~~~~~

Enqueue JS-00000000-00000001

48768 Lines Processed.

[oracle@rac1 src]$

这个使用ass.awk 处理之后的结果就直接查看trace 直观很多:

[oracle@rac1 src]$head -100/u01/app/oracle/admin/anqing/udump/anqing1_ora_8725.trc

/u01/app/oracle/admin/anqing/udump/anqing1_ora_8725.trc

Oracle Database 10g Enterprise EditionRelease 10.2.0.4.0 - Production

With the Partitioning, Real ApplicationClusters, OLAP, Data Mining

and Real Application Testing options

ORACLE_HOME =/u01/app/oracle/product/10.2.0/db_1

System name:    Linux

Node name:      rac1

Release:        2.6.18-194.el5

Version:        #1 SMP Tue Mar 16 21:52:43 EDT 2010

Machine:       i686

Instance name: anqing1

Redo thread mounted by this instance: 1

Oracle process number: 24

Unix process pid: 8725, image: oracle@rac1(TNS V1-V3)

*** 2012-02-06 20:32:20.758

*** ACTION NAME:() 2012-02-06 20:32:20.755

*** MODULE NAME:(sqlplus@rac1 (TNS V1-V3))2012-02-06 20:32:20.755

*** SERVICE NAME:(SYS$USERS) 2012-02-0620:32:20.755

*** SESSION ID:(118.34295) 2012-02-0620:32:20.755

===================================================

SYSTEM STATE

------------

System global information:

processes: base 0x30e0ec78, size 150, cleanup 0x30e1dff8

allocation: free sessions 0x30e5a6c4, 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: 64

system statistics:

313621 logons cumulative

30 logons current

14842838 opened cursors cumulative

….

oracle 获取awk报告,Oracle 使用 ass.awk 工具查看 system state dump 说明相关推荐

  1. oracle如何自动分析报告,ORACLE 性能分析报告的获取

    ORACLE 性能分析报告的获取: 我们都知道,在oracle数据库当中有性能分析报告的设计,如ASH,AWR,ADDM,AWRDD,AWRSQRPT,这些报告就像我们去医院的检查报告一样,我们在这个 ...

  2. oracle空间数据库实验报告,Oracle数据库实验报告六 PL/SQL基础

    Oracle数据库实验报告六 PL/SQL基础 -by QQC from BTBU [实验目的] PL/SQL的安装网上有很多教程这里就不做赘述了,如果后序需求大的话我再考虑做一期PL/SQL安装使用 ...

  3. 获取oracle数据库war报告,Oracle 数据库开发及SQL基础实战

    Oracle 数据库开发及SQL基础实战 一.数据库基础 主键(Primary Key): 1.某一列或某些列的组合,构成一个主键,在这张二维表里,主键必须不重复.用于在这些行之间进行唯一的区别. 2 ...

  4. oracle实验总结报告,oracle实验报告总结.doc

    oracle实验报告总结 实验三 数据库的启动和关闭 实验目的 (1)掌握使用DBCA创建数据库的方法 (2)掌握启动和关闭数据库的命令实验内容 使用DBCA创建数据库test,并通过SQLPLUS登 ...

  5. oracle获取登录名,oracle如何获取当前登录的用户名

    Microsoft Windows [版本 5.2.3790] (C) 版权所有 1985-2003 Microsoft Corp. C:/>sqlplus SQL*Plus: Release ...

  6. oracle 获取执行时间间隔,Oracle获取某一段时间间隔之后的日期

    我们当然可以通过sysdate转换进行加减来操作,除了常规的方式之外,Oracle还提供了一种函数,这些函数可用于表示一段时间的间隔, 现在有如下几个需求: 1)显示距离现在1.5天之后的时间. 2) ...

  7. oracle获取sysdba权限,Oracle 学习笔记: SYSDBA登陆权限问题

    本文环境配置:Oracle10gR2,Windows XP Oracle的用户信息一般来说是保存在数据字典里的,所以常规用户在Oracle数据库没有启动的时候是无法登陆的.但有两类用户例外,这就是具有 ...

  8. oracle 获取第三行,Oracle 11g 第三章知识点总结——单行函数

    Oracle 11g 第三章知识点总结--单行函数 知识点预览 单行函数 单行函数 1. SQL 函数 2.两种 SQL 函数 3.单行函数 a) 操作数句对象 b)接受函数返回一个结果 c)只对一行 ...

  9. oracle打印awr报告,oracle导出AWR报告步骤

    1.进入数据库 sqlplus / as sysdba ps:如果出现用户密码错误, 计算机管理 > 组 > ora_dba组里的用户登陆操作系统,就可以无需输入用户和口令,直接以sysd ...

  10. oracle获取 表名,Oracle获取当前数据库的所有表名字段名和注释

    获取所有的表名和标注释 SELECT a.TABLE_NAME,b.COMMENTS FROM all_tables a left join user_tab_comments b on a.TABL ...

最新文章

  1. IntelliJ IDEA导入JDK出现The selected directory is not a valid home for JDK问题的解决方法
  2. 逆推继承看原型 函数的角色 函数声明和函数表达式的区别 函数中this指向的问题
  3. Linux的10个最危险的命令
  4. IE 7 Standard 模式问题总结
  5. win11设置打开闪退怎么办,解决win11系统闪退的问题
  6. Python Flask Web 第七课 —— 使用 flask-moment 本地化日期和时间
  7. Java设计模式之接口型模式总结
  8. 天地图矢量数据下载_关于离线地图数据的下载、更新以及删除的方法
  9. linux cat用法退出,Linux常用命令 - cat命令用法详解
  10. 阿里云ECS安骑士离线修复步骤
  11. 高中英语语法(003)-句子的要素及种类
  12. 46-Java-RabbitMQ
  13. Unity的读表,存档,读档
  14. css less 不要作用到子对象_CSS的亲儿子,居然不是Less??
  15. form表单提交数据到服务器
  16. IIS6.0功能及应用详解
  17. Python学习-操作列表
  18. Linux下的Hall sensor驱动
  19. AUTOCAD——怎么画轴测图
  20. Python语言被广泛用在哪些领域了?

热门文章

  1. 【路径规划】基于matlab模糊控制机器人路径规划【含Matlab源码 1643期】
  2. 【图像处理】基于matlab GUI图像直方图+滤波处理【含Matlab源码 839期】
  3. 递归神经网络/_递归神经网络
  4. numpy中的对应元素相乘,可以使用广播
  5. linux dprintk 日志,linux內核調試中的printk()函數詳解
  6. 感受野,以及为什么神经网络可以分清猫是猫,狗是狗的直观理解
  7. java udp传输文件6_文件传输udpjava数据
  8. java 运行 依赖_java – 运行时中的依赖项确定
  9. eclipse 安装gradle并成功创建一个项目
  10. Dagger2 知识梳理(3) 使用 dependencies 和 @SubComponent 完成依赖注入