oracle 中locked,关于v$locked_object中的locked_mode?

有更具体点的说明吗?

刚用delphi写了个解锁的小程序,替代用SQLPlus敲命令杀死锁表的会话进程。不知这样是否真的可以解除oracle当前的锁表现象,我欢迎各位大虾不吝赐教。有时间写完整些再把exe贴上来。

procedure TForm1.Button1Click(Sender: TObject);

var

Sid, Serial: Integer;

begin

with ADOQuery1 do

begin

Close;

SQL.Clear;

SQL.Add(' Select * From v$Session Where LockWait<>' + '''' + ' ' + '''');

Open;

if Eof then

begin

ShowMessage('当前数据库没有锁表现象!');

Exit;

end;

while not EOf do

begin

if Eof then

begin

ShowMessage('当前数据库已经没有锁表现象!');

Break;

end;

Sid := FieldByname('sid').AsInteger;

Serial := FieldByname('Serial#').AsInteger;

if MessageDlg('当前锁为:Sid=' + IntToStr(Sid) + ',Serial#=' + IntToStr(Serial) + ',是否解除该锁?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then

begin

with ADOQuery2 do

begin

SQL.Clear;

SQL.Add('Alter system kill session ' + '''' + IntToStr(Sid) + ',' + IntToStr(Serial) + '''');

try

ExecSQL;

ShowMessage('该锁('+ IntToStr(Sid) + ',' + IntToStr(Serial) +')已经解除!');

except

on E: Exception do

begin

ShowMessage(E.Message);

end;

end;

end;

end;

Next;

end;

end;

end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值