v$locked_object视图记录锁表相关的内容。这个视图的结果需要有锁表的情况才会出现。
它自身倒也罢了,主要可以通过它session_id来关联其他表。
模拟锁表并查看字段
for update模拟锁表(完事记得提交啊,可别坑人):
select * from T_USER t where id='1' for update
查询 v$locked_object
视图:
select * from v$locked_object ;
结果如下:
XIDUSN | XIDSLOT | XIDSQN | OBJECT_ID | SESSION_ID | ORACLE_USERNAME | OS_USER_NAME | PROCESS | LOCKED_MODE |
---|---|---|---|---|---|---|---|---|
1 | 6 | 1104 | 74992 | 18 | ROOT | chushiyun | 14968:9868 | 3 |
主要字段:
session_id 关联session视图
object_id 关联dba_objects表
oracle_username 数据库用户
locked_mode 锁模式(3表示排他锁)
os_user_name 操作系统的用户名(pc机的名字)
有的时候一个for update并造不成阻塞的效果,可以先来个for update,再来一个,就阻塞了。
xid*** 是事务相关的字段。
字段列表
列表如下:
COLUMN_NAME | DATA_TYPE |
---|---|
LOCKED_MODE | NUMBER |
PROCESS | VARCHAR2 |
OS_USER_NAME | VARCHAR2 |
ORACLE_USERNAME | VARCHAR2 |
SESSION_ID | NUMBER |
OBJECT_ID | NUMBER |
XIDSQN | NUMBER |
XIDSLOT | NUMBER |
XIDUSN | NUMBER |