for update造成oracle锁表问题解决
今天下午在单元测试造数据过程中在pl/sql中使用select * from table for update 修改数据
|
|
当数据修改完成后没有进行commit就关掉了PL/SQL,之后再插入数据时PL/SQL直接卡死。
检查是否锁表
查看是否锁表的sql
|
|
执行锁表语句结果
从而发现有一条锁表记录
解锁
杀掉锁表进程:
记录下SID和serial# ,分别替换掉下面的1900,11073,即可解除锁表,注意,必须有管理员权限才可以执行
|
|
后记
以后如果在plsql中不想用SQL语句修改数据,直接在表中修改数据避免使用for update,多用如下语句1select t.*,rowid from tbname
以上语句同样可以在plsql的查询结果中尽心数据修改,并且可避免锁表风险。