合 在Oracle中,更新一条记录,可能会遇到哪些故障,请尝试解决
题目
一个RAC双节点的实例环境,面试人员使用的是实例2,而在实例1中已经使用“SELECT * FROM SCOTT.EMP FOR UPDATE;”给EMP表加锁:
1 | SQL> SELECT * FROM SCOTT.EMP FOR UPDATE; |
此时在实例2中,如果执行以下SQL语句尝试更新ENAME字段,那么必然会被行锁堵塞:
1 | SQL> UPDATE SCOTT.EMP SET ENAME='ENMOTECH' WHERE EMPNO=7369; |
请尝试解决这个故障。
答案
这道面试题中包含的知识点有:
① 如何在另外一个SESSION中查找被堵塞的SESSION信息;
② 如何找到产生行锁的BLOCKER;
③ 在杀掉BLOCKER进程之前会不会向面试监考人员询问,是否可以KILL掉阻塞者;