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>