--------------------systemstate 状态转储文件学习
dump systemstate的语法为:
ALTER SESSION SET EVENTS 'immediate trace name systemstate level 8';
也可以使用ORADEBUG实现这个功能
ORADEBUG DUMP SYSTEMSTATE level 8
文件的第一部分列出了v$sysstat的信息。
接着一个process一个部分,导出所有process的信息
1 导出的信息按每个process 一部分,下面以后 process 17为例
PROCESS 17:
----------------------第一节
SO: 356761DC, type: 2, owner: 00000000, flag: INIT/-/-/0x00
(process) Oracle pid=17, calls cur/top: 35788760/35788760, flag: (0) -
int error: 0, call error: 0, sess error: 0, txn error 0
(post info) last post received: 0 0 112
last post received-location: kcbzww
last process to post me: 356773ac 2 0
last post sent: 0 0 0
last post sent-location: No post
last process posted by me: none
(latch info) wait_event=0 bits=0
Process Group: DEFAULT, pseudo proc: 356A8358
O/S info: user: SYSTEM, term: TEST, ospid: 3420
OSD pid info: Windows thread id: 3420, image: ORACLE.EXE (SHAD)
Dump of memory from 0x35663358 to 0x356634DC
35663350 00000006 34919130 [....0..4]
35663360 00000010 0003139D 35788760 00000003 [........`.x5....]
35663370 0003139D 34CF048C 0000000B 0003139D [.......4........]
35663380 357649BC 00000004 00031291 34193920 [.Iv5........ 9.4]
35663390 00000006 0003139D 340C25A0 00000007 [.........%.4....]
356633A0 0003139D 00000000 00000000 00000000 [................]
356633B0 00000000 00000000 00000000 00000000 [................]
Repeat 17 times
356634D0 00000000 00000000 00000000 [............]
(FOB) flags=2 fib=34190EA0 incno=0 pending i/o cnt=0
fname=C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
fno=1 lblksz=4 fsiz=52172380
----------------------------------------
说明:
so 代表v$session.paddr
ospid: 3420
user: SYSTEM, term: TEST
-----------------第二节
SO: 357649BC, type: 4, owner: 356761DC, flag: INIT/-/-/0x00
(session) sid: 156 trans: 00000000, creator: 356761DC, flag: (41) USR/- BSY/-/-/-/-/-
DID: 0001-0011-00000006, short-term DID: 0000-0000-00000000
txn branch: 00000000
oct: 47, prv: 0, sql: 253324A4, psql: 253324A4, user: 0/SYS
O/S info: user: TEST\Administrator, term: TEST, ospid: 5376:5600, machine: WORKGROUP\TEST
program: PlSqlDev.exe
application name: PL/SQL Developer, hash value=1190136663
action name: Main session, hash value=1773317990
waiting for 'library cache lock' blocking sess=0x00000000 seq=106 wait_time=0 seconds since wait started=199
handle address=25349954, lock address=32d9da50, 100*mode+namespace=c9
Dumping Session Wait History
for 'library cache lock' count=1 wait_time=2999931
handle address=25349954, lock address=32d9da50, 100*mode+namespace=c9
说明:
SO: 357649BC:v$session.addr
sid: 156
program: PlSqlDev.exe
waiting for:等待事件
---------下面的部分会列出这个会话,对每个涉及到的 library cache object 的 需求锁定、获得锁定情况
---------下面列出的是 分析library cache lock/latch 的时候3个会话的摘录信息
-----------执行desc ping 的会话
SO: 32D9DA50, type: 53, owner: 357649BC, flag: INIT/-/-/0x00
LIBRARY OBJECT LOCK: lock=32d9da50 handle=25349954 request=S
需要对handle=25349954 加 s 的 LIBRARY OBJECT LOCK
------------执行 execute calling 的会话 (这个是下面的会话摘录过来的信息)
SO: 32DA4934, type: 53, owner: 3575A0B4, flag: INIT/-/-/0x00
LIBRARY OBJECT LOCK: lock=32da4934 handle=25349954 mode=N
对handle=25349954 加 N 的 LIBRARY OBJECT LOCK
---
LIBRARY OBJECT PIN: pin=32da37f4 handle=25349954 mode=S lock=32da4934
对handle=25349954 加 s的LIBRARY OBJECT PIN
------------执行 drop procedure pinding 的会话(这个是下面的会话摘录过来的信息)
SO: 32DA363C, type: 54, owner: 3429DF6C, flag: INIT/-/-/0x00
LIBRARY OBJECT PIN: pin=32da363c handle=25349954 request=X lock=0
需要对handle=25349954 加 x 的LIBRARY OBJECT PIN
-----------
SO: 32D9D4A0, type: 53, owner: 3429DF6C, flag: INIT/-/-/0x00
LIBRARY OBJECT LOCK: lock=32d9d4a0 handle=25349954 mode=X
对handle=25349954 加 x 的LIBRARY OBJECT LOCK
------------通过转储文件可以知道哪些会话在等哪些对象,哪些会话持有对这些对象的锁定
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69265/viewspace-442911/ ,如需转载,请注明出处,否则将追究法律责任。