项目在
linux
(redhat)已运行了一周,今天突然发现某个功能执行时卡死了,仔细检查发现:由于有人在
oracle
中执行update操作时,意外中断没有提交事务导致当前会话锁表,导致程序在执行update时无法获取该表的锁(即无法锁表)。
Google
下找到了解决方案:
1、检查Oracle是否存在锁表
SQL1:
select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID;
SQL2:
select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.locked_mode from v$locked_object lo, dba_objects ao, v$session sess where ao.object_id = lo.object_id and lo.session_id = sess.sid;
2、杀掉锁表进程
原文地址:
Oracle数据库锁表问题
| http://orgcent.com/oracle-lock-table/