Oracle systemstate、gdb、dbx介绍

当数据库出现严重的性能问题或者hang了的时候, 可能最常用的办法就是重启数据库,简单有效解决问题;但是重启后如何追踪问题的根本原因成了难题,很多信息随着重启也消失不见了,让追查问题变的十分棘手,这时就需要oracle systemstate dump来帮忙,可以很短的时间内收集到数据库的各种信息,可以在收集后再重启,既可以及时的解决问题,又相当于快照了数据库的瞬时状态,方便追踪数据库hang死的根本原因,本文将介绍oracle systemsate dump ,gdb,dbx 数据库的dump工具的用法和示例

1.  oracle systemstate dump

这里一般可以分为两类一种是hang分析 一种是系统dump

  • Hanganalyze  用于分析系统否真的卡死还是只是慢,并做一个一致性的快照
  • Systemstate dump  会记录下当前所有的数据库进程在做什么
    systemstate会比hanganalyze记录更多,trace文件也会更大,一般耗时也会更久

Hanganalyze levels:

  • Level 3: In 11g onwards, level 3 also collects a short stack for relevant processes in hang chain --最常用

  • Level 4: Collects everything from level 3 and dumps leaf nodes (blockers) in wait chains

  • Level 5: Collects everything from level 4 and dumps all processes involved in wait chains

Systemstate levels:

1. level2:dump(不包括lock element)

2. level10:dump

3. level11:dump+global cache of rac   --会产生大量的trc,并耗时较久,不建议使用

4. level256:short stack(函数堆栈)

5. _level258:level256+_level2       --可以快速dump 但是会丢失部分锁信息

6. _level266:level256+_level10     --较为常用  速度较快根据系统负载一般20-60s,收集的信息也足够分析用

7. _level267:level256+_level11   --和level11类似耗时久 trc大

如果sqlplus / as sysdba也卡死无法登陆 可以使用sqlplus -prelim "/as sysdba"

hanganalyze 步骤如下

[oracle@YCSMLTEST01 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Mon Feb 5 10:20:02 2024 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 SQL> oradebug hanganalyze 3 ##这里相当于直接分析当前pid Hang Analysis in /u01/app/oracle/diag/rdbms/ycsmtestdb/ycsmtestdb/trace/ycsmtestdb_ora_30625.trc SQL>