开启3个session: SQL> select sid from v$mystat where rownum=1; SID ---------- 29 SQL> SQL> select sid from v$mystat where rownum=1; SID ---------- 35 SQL> SQL> select sid from v$mystat where rownum=1; SID ---------- 38 SQL> 使用sessionID为29进行更新t表操作 SQL> update t set name='qq' where id = 2; 1 row updated. SQL> 查询事务: select xidusn,xidslot,xidsqn,status from v$transaction; 5 30 1099 ACTIVE 说明当前存在一个活动的事务 下面是查询sessionID为29的连接所产生的事务信息: select sid,type,id1,id2, decode(lmode,0,'None',1,'Null',2,'Row share',3,'Row Exclusive',4,'Share',5,'Share Row Exclusive',6,'Exclusive') lock_mode, decode(request,0,'None',1,'Null',2,'Row share',3,'Row Exclusive',4,'Share',5,'Share Row Exclusive',6,'Exclusive') request_mode,block from v$lock where sid=29; SID, TYPE, ID1, ID2, LOCK_MODE, REQUEST_MODE, BLOCK 29 AE 100 0 Share None 0 29 TM 74585 0 Row Exclusive None 0//表级锁 29 TX 327710 1099 Exclusive None 0//行级锁 SID表示sessionID,TYPE表示锁的类型,ID2表示事务槽被覆盖的次数,ID1中的信息包含两种信息:1.事务表 2.事务表中行 通过: 将ID1拆解 select trunc(327710/power(2,16)) as undo_blk#,bitand(327710,to_number('ffff','xxxx')) + 0 as slot# from dual; UNDO_BLK#, SLOT# 5 30//显示的是该事务的信息,这也说明了ID1表示了两种信息的说法。 LOCK_MODE表示锁的模式,REQUEST_MODE是否请求锁,BLOCK表示锁住哪个事务 select OWNER,OBJECT_NAME,OBJECT_ID,OBJECT_TYPE,CREATED,LAST_DDL_TIME,STATUS,NAMESPACE from dba_objects where object_id=74585;//被锁的对象 OWNER, OBJECT_NAME, OBJECT_ID, OBJEC |