オブジェクトのロック
1.ロックの基本情報取得 2.ロックをかけているユーザ&program 3.ロックをかけているSQL文 4.ロックをしている、されているオブジェクト データを更新すると必ず、TYPE=TM(DMLエンキュー)とTYPE=TX(トランザクショ ンエンキュー)が対で取得される。TMが表ロックに対応し、TXが行ロックに対応 すると思っていいだろう。TYPE=TMのときID1はオブジェクトIDを示すので DBA_OBJECTSからオブジェクト名が取得できる。 DBA_OBJECTSからオブジェクト名を取得 SQL>SELECT OBJECT_ID,OBJECT_NAME FROM DBA_OBJECTS WHERE OBJECT_ID=3378; OBJECT_ID OBJECT_NAME --------- ------------ 3378 A
set lines 1000 col username for a10 col program for a15 col sql_text for a8 col object_name for a20 col status for a8 col sid for 99999 col server for a7 col lmode for 999 col SERIAL# for 9999999 col block for 9999 col SQL_TEXT for a6 SELECT b.status , a.sid , b.serial# , b.server , a.type , b.username , b.program , substr(c.sql_text, 1, 6) as SQL_TEXT , d.object_name , a.id1 , a.lmode , a.request , a.ctime , a.block FROM V$LOCK a , ( SELECT SADDR , SID , SERIAL# , USERNAME , PROGRAM , SQL_ADDRESS , STATUS , SERVER FROM V$SESSION     WHERE SID = ANY(SELECT SID FROM V$LOCK WHERE TYPE IN ('TX','TM')) ) b , v$sqlarea c , dba_objects d WHERE TYPE IN ('TX','TM') AND a.sid = b.sid AND a.id1 = d.object_id(+) AND b.sql_address = c.address(+) ORDER BY a.sid