SELECT l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, s.user#, l.os_user_name,s.machine, s.terminal,a.sql_text, a.action FROM v$sqlarea a,v$session s, v$locked_object l WHERE l.session_id = s.sid AND s.prev_sql_addr = a.address ORDER BY sid, s.serial#;
然后捕捉异常即可。。
我一般通过ALL_OBJECTS,V$LOCKED_OBJECT来分析,但从没有在update前专门判断是否有锁表,对于这一些事情,还是尽量从管理上来约束,不能靠编码解决全部问题。
end!
l.os_user_name,s.machine, s.terminal,a.sql_text, a.action
FROM v$sqlarea a,v$session s, v$locked_object l
WHERE l.session_id = s.sid
AND s.prev_sql_addr = a.address
ORDER BY sid, s.serial#;