`

Oracle oradebug 命令 使用说明

 
阅读更多

当数据库出现一些挂起状态时,如果sqlplus仍然可以连接,可能视图查询没有相应,但是可以通过oradebug工具来进行进程及系统状态信息的转储,从而可以进行Hang分析。

DUMP进程状态可以使用:

  alter sessions set events 'immediate trace name processstate level <level>';
或者使用:
  oradebug setmypid
  oradebug ulimit
  oradebug dump processstate<level>

当诊断数据库挂起条件时可以DUMP系统状态:
  alter sessions set events 'immediate trace name systemstate level <level>';
  或:
  oradebug setmypid
  oradebug ulimit
  oradebug dump systemstate <level> 

如果为了获取全面一点的信息,可以使用Level 10。
SQL> oradebug setmypid
SQL> oradebug unlimit
SQL> oradebug dump systemstate 10

SQL>oradebug TRACEFILE_NAME

SQL>oradebug close_trace

。可以通过awk脚本对trc进分析。(简单,直接。源文件太大,分析起来费劲)

awk-f ass109.awk/u01/oracle/diag/rdbms/ora11g/ora11g/trace/ora11g_ora_9976.trc

Starting Systemstate 1
..................................
Ass.Awk Version 1.0.9 - Processing /u01/oracle/diag/rdbms/ora11g/ora11g/trace/ora11g_ora_9976.trc
 
System State 1
~~~~~~~~~~~~~~~~
1:                                     
2:  0: waiting for 'pmon timer'        
3:  0: waiting for 'rdbms ipc message' 
4:  0: waiting for 'VKTM Logical Idle Wait'
5:  0: waiting for 'rdbms ipc message' 
6:  0: waiting for 'DIAG idle wait'    
7:  0: waiting for 'rdbms ipc message' 
8:  0: waiting for 'DIAG idle wait'    
9:  0: waiting for 'rdbms ipc message' 
10: 0: waiting for 'rdbms ipc message' 
11: 0: waiting for 'rdbms ipc message' 
12: 0: waiting for 'rdbms ipc message' 
13: 0: waiting for 'smon timer'        
14: 0: waiting for 'rdbms ipc message' 
15: 0: waiting for 'rdbms ipc message' 
16: 0: waiting for 'rdbms ipc message' 
17:                                    
18:                                    
19: 0: waiting for 'Space Manager: slave idle wait'
20: 0: waiting for 'SQL*Net message from client'
21: 0: waiting for 'enq: TX - row lock contention'[Enqueue TX-000A0020-0000024F]
     Cmd: Delete
22: 0: waiting for 'rdbms ipc message' 
23: 0: waiting for 'rdbms ipc message' 
24: 0: waiting for 'rdbms ipc message' 
25: 0: waiting for 'rdbms ipc message' 
26: 0: waiting for 'Streams AQ: qmn coordinator idle wait'
27:                                    
28:                                    
30: 0: waiting for 'Streams AQ: qmn slave idle wait'
31: 0: waiting for 'rdbms ipc message' 
33: 1: waited for 'Streams AQ: waiting for time management or cleanup tasks'
35: 0: waiting for 'rdbms ipc message' 
41:                                    
44:                                    
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-000A0020-0000024F    20: 0: waiting for 'SQL*Net message from client'
 
Object Names
~~~~~~~~~~~~
Enqueue TX-000A0020-0000024F                                                                
 
30586 Lines Processed.
--从这里马上就可以知道pid 21 请求Enqueue TX被pid 20阻塞

 

分享到:
评论
1 楼 andyniu 2013-11-07  
   内容是网上粘贴的,但我按照步骤拿生产环境做试验了。初学者,看不懂trc文件。不过用awk工具转化后,就知道结果了。不过。。

相关推荐

    Oracle错误代码大全

    Oracle错误代码大全是一个庞大的知识库,囊括了各种Oracle错误代码的解释说明。下面是 Oracle 错误代码大全中的部分知识点: 会话错误 * ORA-00001: 违反唯一约束条件(.) * ORA-00021: 会话附属于其它某些进程;...

    浅谈Oracle常见错误处理

    设置完毕后,可以通过oraDEBUG命令启动跟踪并记录特定的会话信息,或打开和关闭数据库跟踪。这些操作要求用户对Oracle数据库有深入了解,并且具备一定的操作权限。 文档还介绍了Oracle数据库中的基本概念和名词解释...

    oracle错误码大全

    ### Oracle 11g 错误码大全解析 #### ORA-00001: 违反唯一约束条件 **描述**: 当尝试插入或更新一个已经存在的唯一键值时触发此错误。确保数据符合唯一性约束。 **解决方法**: - 检查并修改数据,确保不会重复...

    张浩Oracle11gRAC数据库巡检手册

    - **DIAG:** 数据库诊断进程,维护诊断转储文件,执行oradebug命令。 - **DIA0:** 另一个数据库诊断进程,检测Oracle数据库中的挂起和死锁问题。 - **PSP0:** 进程生成器,用于产生Oracle进程。 - **SMCO:** 空间...

    oracle常见报错

    如果在ORADEBUG命令中使用了无效的例程号,会抛出此错误。确保例程号正确。 #### ORA-00090: 未能将内存分配给群集数据库ORADEBUG命令 如果无法为群集数据库的ORADEBUG命令分配内存,会触发此错误。检查内存分配...

    oracle报错的详细列表

    当在ORADEBUG命令中使用的例程号无效时触发。 #### ORA-00090: 未能将内存分配给群集数据库ORADEBUG命令 当未能为群集数据库分配内存时触发。 #### ORA-00091: LARGE_POOL_SIZE至少必须为 当 `LARGE_POOL_SIZE` 的...

    oracle数据库-错误编码大全

    在执行ORADEBUG命令操作时,若不能为群集数据库分配内存,则会遇到该错误,可能需要检查集群环境配置或内存资源状况。 - ORA-00096: 值对参数无效,它必须来自之间。该错误表明某个参数的值不在预定的有效范围内。...

    oracle错误一览表

    **ORA-00090: 未能将内存分配给群集数据库ORADEBUG命令** - **描述**: 无法为ORADEBUG命令分配内存。 - **解决方法**: 确保有足够的内存资源。 **ORA-00091: LARGE_POOL_SIZE至少必须为...** - **描述**: LARGE_...

    oracle诊断事件及深入解析10053事件

    ##### 4、使用`Oradebug`设置 示例: - 首先查找会话的spid ``` SQL&gt; SELECT ADDR, PID, SPID FROM V$PROCESS WHERE ADDR = C000000084435AD8'; ``` #### 深入解析10053事件 10053事件是Oracle用于跟踪硬解析...

    Oracle 错误一览表.docx

    ##### orA-00090: 未能将内存分配给群集数据库orADEBUG命令 - **描述**:未能为orADEBUG命令分配内存。 - **解决方法**:确保有足够的可用内存。 ##### orA-00091: LARGE_POOL_SIZE至少必须为... - **描述**:LARGE...

    Oracle错误代码

    #### ORA-00090: 未能将内存分配给群集数据库ORADEBUG命令 在尝试为群集数据库分配内存以执行ORADEBUG命令时失败。 #### ORA-00091: LARGE_POOL_SIZE至少必须为 `LARGE_POOL_SIZE`参数的值低于系统要求的最小值,...

    Oracle所有错误

    在使用ORADEBUG命令时,如果提供的例程号无效,则会触发此错误。确认例程号的正确性。 #### ORA-00090:未能将内存分配给群集数据库ORADEBUG命令 当ORADEBUG命令试图在群集数据库环境中分配内存,但因资源限制失败...

    对于oracle对session进行跟踪的分析

    - 事件10046是一个常用的跟踪事件,可以收集详细的执行计划和调用堆栈信息,使用`ORADEBUG EVENT 10046 TRACE NAME CONTEXT FOREVER,LEVEL 12`命令开启。 3. **收集性能数据**: - SQL Trace工具能够收集SQL语句...

Global site tag (gtag.js) - Google Analytics