Systemstate Dumps:简称SSD
适用场景:
当Oracle数据库出现严重性能问题时,甚至sysdba无法登陆,可以通过Systemstate Dumps收集相关诊断日志。
Systemstate levels:
level 2:dump(包括lock element)level 10:dumplevel 11:dump+global cache of rac --会产生大量的trc,并耗时较久,不建议使用level 256:short stack(函数堆栈)level 258:level256+level2 —可以快速dump 但是会丢失部分锁信息level 266:level56+level10 —较为常用 速度较快根据系统负载一般20-60s,收集的信息也足够level 267:level256+level11 —和level11类似耗时久 trc大
sqlplus -prelim是什么:
使用SQL*Plus,使用以下命令连接为SYSDBA:
sqlplus '/ as sysdba'
如果进行此连接时出现问题,无法正常登陆,那么在10gR2及以上版本中,可以使用sqlplus "preliminary connection":
sqlplus -prelim '/ as sysdba'
有两种方式进行prelim连接
方式一:
[oracle@cjc-db-01 ~]$ sqlplus -prelim / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Sun Mar 3 12:57:28 2024Copyright (c) 1982, 2013, Oracle. All rights reserved.SQL>
方式二:
[oracle@cjc-db-01 ~]$ sqlplus nologSQL> set _prelim onSQL> connect as sysdbaPrelim connection established
模拟锁阻塞:
conn cjc/***create table t1(id int,age int);create table t2(id int,age int);insert into t1 values(1,1);insert into t1 values(2,2);insert into t1 values(3,3);insert into t2 values(10,10);insert into t2 values(20,20);insert into t2 values(30,30);commit;
---SID=39
select distinct sid from v$mystat;update t1 set age=100 where id=1;
---SID=41
select distinct sid from v$mystat;update t2 set age=1000 where id=10;
---SID=39
update t2 set age=100 where id=10;
---SID=41
update t1 set age=1000 where id=1;
---SID=33
update t1 set age=10000 where id=1;
查询锁阻塞
SQL> set line 300SQL> select * from dba_waiters;WAITING_SESSION HOLDING_SESSION LOCK_TYPE MODE_HELD MODE_REQUESTED LOCK_ID1 LOCK_ID2--------------- --------------- -------------------------- ---------------------------------------- ---------------------------------------- ---------- ----------41 39 Transaction Exclusive Exclusive 589824 94533 39 Transaction Exclusive Exclusive 589824 94541 41 Transaction None Exclusive 589824 94533 41 Transaction None Exclusive 589824 945
如果无法正常登陆数据库,如何分析相关阻塞信息?
收集SSD
[oracle@cjc-db-01 ~]$ sqlplus -prelim "/as sysdba"SQL*Plus: Release 11.2.0.4.0 Production on Sun Mar 3 13:07:48 2024Copyright (c) 1982, 2013, Oracle. All rights reserved.SQL> oradebug setmypidStatement processed.SQL> oradebug unlimitStatement processed.SQL> oradebug dump systemstate 266Statement processed.SQL> oradebug dump systemstate 266Statement processed.SQL> oradebug tracefile_name/oracle/app/oracle/diag/rdbms/cjc/cjc/trace/cjc_ora_3673.trc
分析日志:
搜索关键字 waiting for 'enq: TX - row lock contention'
可以看到sid=39阻塞了41和33,阻塞源头是39;
PROCESS 22:----------------------------------------SO: 0x9dcbb6c8, type: 2, owner: (nil), flag: INIT/-/-/0x00 if: 0x3 c: 0x3proc=0x9dcbb6c8, name=process, file=ksu.h LINE:12721, pg=0(process) Oracle pid:22, ser:4, calls cur/top: (nil)/0x9d8cba98flags : (0x0) -flags2: (0x0), flags3: (0x10)intr error: 0, call error: 0, sess error: 0, txn error 0intr queue: emptyksudlp FALSE at location: 0......There are 2 sessions blocked by this session.Dumping one waiter:inst: 1, sid: 41, ser: 37wait event: 'enq: TX - row lock contention'p1: 'name|mode'=0x54580006p2: 'usn<<16 | slot'=0x90000p3: 'sequence'=0x3b1row_wait_obj#: 88662, block#: 157, row#: 0, file# 6min_blocked_time: 305 secs, waiter_cache_ver: 289Wait State:fixed_waits=0 flags=0x22 boundary=(nil)/-1......Current Wait Stack:0: waiting for 'enq: TX - row lock contention'name|mode=0x54580006, usn<<16 | slot=0x90000, sequence=0x3b1wait_id=28 seq_num=29 snap_id=1wait times: snap=5 min 8 sec, exc=5 min 8 sec, total=5 min 8 secwait times: max=infinite, heur=5 min 8 secwait counts: calls=104 os=104in_wait=1 iflags=0x15a0There is at least one session blocking this session.Dumping 1 direct blocker(s):inst: 1, sid: 39, ser: 9Dumping final blocker:inst: 1, sid: 39, ser: 9There are 0 sessions blocked by this session.Dumping one waiter:inst: 1, sid: 33, ser: 27wait event: 'enq: TX - row lock contention'p1: 'name|mode'=0x54580006p2: 'usn<<16 | slot'=0x90000p3: 'sequence'=0x3b1row_wait_obj#: 88662, block#: 157, row#: 0, file# 6min_blocked_time: 284 secs, waiter_cache_ver: 289Wait State:fixed_waits=0 flags=0x22 boundary=(nil)/-1
参考链接:
How To Connect Using A Sqlplus Preliminary Connection (Doc ID 986640.1)《Oracle systemstate、gdb、dbx介绍》https://blog.csdn.net/xiaofan23z/article/details/136040441
###chenjuchao 20240303###
文章转载自IT小Chen,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




