oracle中执行select* for update卡死

 时间:2024-11-07 22:17:22

1、因为oracle执行更新、插入操作都是需要提交事务(commit)的,而非正常的中断会话会导致oracle锁定该条进程

oracle中执行select* for update卡死

2、select * from tableName where id=? for update;执行for update 时,借助for update子句,我们可以在应用程序的层面手工实现数据加锁保护操作。

oracle中执行select* for update卡死

3、行级锁,锁定where条件之后的符合条件的数据;当符合条件的数据没有commit的时候,再次去update或者delete的时候是不可以操作的,

oracle中执行select* for update卡死

4、解决方法://查看锁表进程select object_name,machine,s.sid,s.serial#from v$locked_object l,dba_objects o ,v$session swhere l.object_id = o.object_id and l.session_id=s.sid;

oracle中执行select* for update卡死

5、kill掉这个死锁的进程:alter system kill session ‘sid,serial#’; (其中sid=l.session_id)

oracle中执行select* for update卡死

6、在之后的操作建议使用 for update nowait.他会试探的加锁,如果有锁,立即返回错误,不会去等待;

oracle中执行select* for update卡死

7、这种锁定方式是建立在数据库连接的基础上,一旦连接断开或者锁定进程commit时,这种锁定就自动解除。同时这种锁定方式是一种update锁定,锁定时不影响其他的select操作。

oracle中执行select* for update卡死
  • Excel2019弹出无法删除个人信息提示怎么办
  • Excel表中VBA的程序如何观察变量
  • excel判断单元格是否为数值ISNUMBER函数使用
  • WPS EXCEL怎么输出返回指定日期是一年的第几周
  • EXCEL vba 数据库连接
  • 热门搜索
    科技创造未来手抄报 万圣节手抄报图片 元旦手抄报资料 校园礼仪手抄报 寻访红色足迹手抄报 美丽家乡手抄报 三年级教师节手抄报 科幻画手抄报 关于健康的手抄报图片 书香满园手抄报