oracle锁表导致update,delete,insert出现无反应的问题


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中却没有提交事物(没提交事物时表会处于锁定状态)

,所以导致程序更新无反应。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM