레코드가 잠겨있을 때 어떤 레코드가 잠겨 있는지 알 수 있습니까?
레코드 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
@a_horse_with_no_name-v $ lock은 거래에서 보유한 잠금을 보여줍니다
—
Chris Saxon
@ChrisSaxon : 맞습니다. 어떤 행 이 잠겨 있는지 알 수 없다는 사실을 언급하고 있었습니다. 더 명확해야합니다.
—
a_horse_with_no_name
다른 데이터베이스와 달리 Oracle에는 잠금에 대한 공유 구조가 없습니다. 이렇게하면 데이터베이스를 확장 할 수 있지만 반면에 모든 잠금을 볼 수는 없습니다. 잠금은 데이터베이스 블록에 직접 저장됩니다. 누군가가 막히는 순간 "홀더 웨이터"구조가 만들어집니다. 그러면이 쌍이에 표시
—
ibre5041
V$LOCK
됩니다.