col object_name for a30
col machine for a20
select object_name,machine,s.sid,s.serial#
from v$locked_object l,dba_objects o ,v$session s
where l.object_id = o.object_id and l.session_id=s.sid;
2 A test64 138 5717
a.machine,
a.program,
a.sid,
a.serial#,
a.status,
c.piece,
c.sql_text
FROM v$session a,
v$sqltext c
WHERE a.sid = 145
ORDER BY c.piece
USERNAME MACHINE PROGRAM SID SERIAL# STATUS PIECE SQL_TEXT
1 SCOTT test64 sqlplus@test64 (TNS V1-V3) 145 21218 ACTIVE 0
delete from a
USERNAME MACHINE PROGRAM SID SERIAL# STATUS PIECE SQL_TEXT
1 SCOTT test64
sqlplus@test64 (TNS V1-V3) 138 5717 INACTIVE
測試時發現,status爲inactive的正是需要kill掉的進程。因爲他沒有commit或rollback解除鎖。
殺
alter system kill session 'sid,serial#';
alter system kill session '138,5717'; 執行後,138,5717的進程就被kill掉,數據進行了rollback。
===========================================================================
查出自己的sid
查看當前session sid
SELECT sid, serial#
FROM v$session
WHERE audsid = sys_Context('USERENV', 'SESSIONID');
或者
select sys_context('userenv', 'sid') from dual