時計の鍵をかけた人を見つける
会社がOracleロック・テーブルの問題を解決する際に調べた資料:
このセクションでは、ロックされたすべてのセッションとテーブルを調べることができ、ロックされたテーブルの最初のsql操作をもたらすセッションを含む.最も重要なのは、誰が鍵をかけたのかを見つけることができます.PKを探したり、sessionを殺したりすることができます.
1つ以上のSQLがブロックされている場合は、このSQLを使用して、ブロックされているSQLが何であるかを特定し、どのレコードがロックされているかを特定できます.
この部分は上の部分と同じですが、表示されている情報は多少違います.うちの会社の大牛たちが提供しています.
select a.object_name,
l.session_id,
l.oracle_username,
l.os_user_name,
s.machine,
s.sid,
s.sql_address,
s.sql_hash_value,
s.sql_id,
s.sql_child_number
from v$session s, v$locked_object l, all_objects a
where l.process = s.process
and a.object_id = l.object_id
このセクションでは、ロックされたすべてのセッションとテーブルを調べることができ、ロックされたテーブルの最初のsql操作をもたらすセッションを含む.最も重要なのは、誰が鍵をかけたのかを見つけることができます.PKを探したり、sessionを殺したりすることができます.
select c.object_name,
l.session_id,
l.oracle_username,
s.machine,
l.os_user_name,
s.sid,
s.program,
st.sql_text
from v$session s,
v$locked_object l,
all_objects c,
v$sqltext_with_newlines st
where s.process = l.process
and c.object_id = l.object_id
and st.address = s.sql_address
order by s.sid, st.piece
1つ以上のSQLがブロックされている場合は、このSQLを使用して、ブロックされているSQLが何であるかを特定し、どのレコードがロックされているかを特定できます.
select s.username user_name,
o.owner || '.' || o.object_name object_name,
s.sid || ',' || s.serial# sid_serial#,
s.program,
sq.sql_text
from dba_objects o, v$session s, v$lock v, v$sqltext_with_newlines sq
where v.id1 = o.object_id
and v.sid = s.sid
and (v.type = 'tm' or v.type = 'hw')
and s.sql_address = sq.address
order by program, object_name, s.sid, sq.piece;
この部分は上の部分と同じですが、表示されている情報は多少違います.うちの会社の大牛たちが提供しています.