今天碰到一个执行语句等了半天没有执行:delete table XXX where ......,但是在select 的时候没问题。后来发现是在执行

select * from XXX for update 的时候没有commit,oracle将该记录锁住了。

可以通过以下办法解决:

先查询锁定记录

Sql代码  
SELECT s.sid, s.serial# FROM v$locked_object lo, dba_objects ao, v$session s WHERE ao.object_id = lo.object_id AND lo.session_id = s.sid;  

 
然后删除锁定记录 

Sql代码  
ALTER system KILL session 'SID,serial#';
 

如果你用的是终端窗口,还可以关闭窗口重新连接,建立新的sqlsession

再次执行sql语句即可

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐