当记录被锁定时,我们可以知道哪个被锁定了吗?
如何获取记录的rowid或其他信息?
我可以通过此sql获取一些信息
SELECT c.ROW_WAIT_OBJ#,c.ROW_WAIT_FILE#,c.ROW_WAIT_BLOCK#,c.ROW_WAIT_ROW#
FROM v$locked_object a, dba_objects b, v$session c
WHERE a.object_id = b.object_id
AND a.SESSION_ID = c.sid(+)
我在网上找到了一种通过使用函数来获取rowid的方法 DBMS_ROWID.ROWID_CREATE()
但这似乎不起作用。
2
您只能看到某些进程正在等待的锁,而不是事务持有的锁。
—
a_horse_with_no_name 2013年
@a_horse_with_no_name-v $ lock向您显示交易持有的锁
—
Chris Saxon
@ChrisSaxon:你是对的。我指的是您看不到哪些行已被锁定的事实-我应该更加清楚。
—
a_horse_with_no_name
Oracle(与其他数据库相反)没有任何锁共享结构。这使数据库具有可伸缩性,但另一方面,您看不到所有锁。锁直接存储在数据库块中。在有人被阻塞的那一刻,创建了一个“持有者-等待者”结构。然后您会在中看到这对
—
ibre5041 2015年
V$LOCK
。