確定enqueue鎖型別

liglewang發表於2011-10-15

SQL>select sid,p1,p1raw,p2,p2raw,p3,p3raw,event from v$session_wait where event='enqueue';

SID

P1

P1RAW

P2

P2RAW

P3

P3RAW

EVENT

31

1415053318

0000000054580006

19922977

0000000001300021

786911

00000000000C01DF

enqueue

198

1415053318

0000000054580006

19595310

00000000012B002E

760405

00000000000B9A55

enqueue

249

1415053318

0000000054580006

21626889

00000000014A0009

323583

000000000004EFFF

enqueue

304

1415053318

0000000054580006

24707106

0000000001790022

80259

0000000000013983

enqueue

619

1415053318

0000000054580006

19595310

00000000012B002E

760405

00000000000B9A55

enqueue

提示:

如果P1=1415053318,那麼鎖的mode就是4;如果P1=1415053318,那麼鎖的mode就是6,至於為何如此判斷呢?如:

SQL> select mod(1415053318,16) from dual;
MOD(1415053318,16)
------------------
                 6

SQL> select mod(1415053316,16) from dual;
MOD(1415053316,16)
------------------
                 4

具體的Mode有:

#   Type     Name
---  ------    --------
1    NULL    NULL
2    SS       Sub share
3    SX       Sub exclusive
4    S         Share
5    SSX     Share/sub exclusive
6    X         Exclusive

Oracle9i中,透過P1RAW就可以直接判斷出enqueue鎖的typemode

若從v$session_wait中查詢得到的P1RAW0000000054580006,在這個值中,前四位表示lock type,後四位表示lock mode

HEX      ASCII
54        T
58        X

00006就是6,即mode6,所以判斷該enqueue lockTX 6

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25834554/viewspace-709182/,如需轉載,請註明出處,否則將追究法律責任。

相關文章