创建表:
create table t3 as select * from all_objects
where rownum<30;
SQL> select * from t3;
OWNER OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE
------------------------------ ------------------------------ ------------------------------ ---------- -------------- ----------------
SYS ICOL$ 20 2 TABLE
SYS I_USER1 44 44 INDEX
SYS CON$ 28 28 TABLE
SYS UNDO$ 15 15 TABLE
SYS C_COBJ# 29 29 CLUSTER
SYS I_OBJ# 3 3 INDEX
SYS PROXY_ROLE_DATA$ 25 25 TABLE
SYS I_IND1 39 39 INDEX
SYS I_CDEF2 51 51 INDEX
SYS I_PROXY_ROLE_DATA$_1 26 26 INDEX
SYS FILE$ 17 17 TABLE
OWNER OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE
------------------------------ ------------------------------ ------------------------------ ---------- -------------- ----------------
SYS UET$ 13 8 TABLE
SYS I_FILE#_BLOCK# 9 9 INDEX
SYS I_FILE1 41 41 INDEX
SYS I_CON1 48 48 INDEX
SYS I_OBJ3 38 38 INDEX
SYS I_TS# 7 7 INDEX
SYS I_CDEF4 53 53 INDEX
SYS IND$ 19 2 TABLE
SYS SEG$ 14 8 TABLE
SYS C_TS# 6 6 CLUSTER
SYS I_FILE2 42 42 INDEX
OWNER OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE
------------------------------ ------------------------------ ------------------------------ ---------- -------------- ----------------
SYS COL$ 21 2 TABLE
SYS I_TS1 43 43 INDEX
SYS I_UNDO2 35 35 INDEX
SYS CLU$ 5 2 TABLE
SYS PROXY_DATA$ 23 23 TABLE
SYS I_PROXY_DATA$ 24 24 INDEX
SYS I_OBJ1 36 36 INDEX
建位图索引:
SQL> create bitmap index ind_b_t3 on t3(object_type);
Index created.
SQL> analyze table t3 compute statistics;
Table analyzed.
SQL> analyze index ind_b_t3 compute statistics;
Index analyzed.
session 1更新操作:
SQL> update t3 set OBJECT_TYPE='YYYY'
2 where OBJECT_ID=21;
1 row updated.
session 2更新操作:
update t3 set OBJECT_TYPE='YYYY'
2 where OBJECT_ID=23;
此时会话挂起,正是以上那段话所说的。
SQL> select sid,event from v$session_wait;
SID EVENT
---------- ----------------------------------------------------------------
145 jobq slave wait
146 SQL*Net message from client
147 enq: TX - row lock contention
150 Streams AQ: qmn slave idle wait
152 Streams AQ: waiting for time management or cleanup tasks
154 Streams AQ: qmn coordinator idle wait
158 SQL*Net message from client
160 rdbms ipc message
161 rdbms ipc message
162 rdbms ipc message
163 rdbms ipc message
SID EVENT
---------- ----------------------------------------------------------------
164 smon timer
165 rdbms ipc message
166 rdbms ipc message
167 rdbms ipc message
168 rdbms ipc message
169 rdbms ipc message
170 pmon timer
18 rows selected.
1 select sid, chr(bitand(p1, -16777216)/16777215) || chr(bitand(p1,16711680)/65535) "Name",
2* (bitand(p1, 65535)) "Mode" from v$session_wait where event like 'enq%'
SQL> /
SID Name Mode
---------- ---- ----------
147 TX 4
进一步分析:
SQL> select * from v$lock
2 where request>0;
ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
-------- -------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------
1EC344AC 1EC344C0 147 TX 131074 563 0 4 78 0
SQL> SELECT DECODE(request,0,'Holder: ','Waiter: ') ||
2 sid sess, id1, id2, lmode, request, type
3 FROM V$LOCK
4 WHERE (id1, id2, type) IN (SELECT id1, id2, type FROM V$LOCK WHERE request > 0)
5 ORDER BY id1, request;
SESS ID1 ID2 LMODE REQUEST TY
------------------------------------------------ ---------- ---------- ---------- ---------- --
Holder: 158 131074 563 6 0 TX
Waiter: 147 131074 563 0 4 TX
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9599/viewspace-472967/ ,如需转载,请注明出处,否则将追究法律责任。