使用以下语句,可以删除所有的锁表人。
Declare
Cursor c_Session Is
Select /*+ RULE NO_MERGE(L) NO_MERGE(O) NO_MERGE(S)*/
s.Sid Session_Id, s.Serial# Serial#, l.Type, l.Inst_Id
From Dba_Objects o, Gv$lock l, Gv$session s
Where s.Status <> 'KILLED' And s.Sid <> Userenv('SID') And s.Type = 'USER' And s.Sid = l.Sid And l.Type <> 'AE' And
l.Id1 = o.Object_Id And l.Inst_Id = s.Inst_Id
Group By s.Sid, s.Serial#, l.Type, l.Inst_Id
Order By 1;
Begin
For Get_Session In c_Session Loop
Begin
Execsql('ALTER SYSTEM KILL SESSION ''' || Get_Session.Session_Id || ',' || Get_Session.Serial# || ''' IMMEDIATE');
Exception
When Others Then
Null;
End;
End Loop;
End;