java項目中遇到更新,刪除等操作無反應的問題,但后台卻不報錯,也能正確打印sql語句。最終發現是oracle鎖表導致的。
解決方法:
1.查詢oracle數據庫被鎖的表
SELECT T1.ORACLE_USERNAME,T2.SID,T2.SERIAL#
FROM V$LOCKED_OBJECT T1, V$SESSION T2
WHERE T1.SESSION_ID = T2.SID
2.殺死該session
alter system kill session 'sid,serial#' sid和serial#是上面查詢出來的字段(數字)
造成這個問題的原因估計是在pl/sql查詢數據時使用了for update(例如select * from user for update)
修改完數據但沒有提交就運行java程序。而在運行該程序時剛好又使用到了user這個表。但是在pl/sql中卻沒有提交事物(沒提交事物時表會處於鎖定狀態)
,所以導致程序更新無反應。