排查过程:
1、查询该存储过程的110行只是简单的删除动作
2、通过如下SQL语句查死锁,未见任何死锁
SELECT ‘alter system kill session ‘||chr(39)||l.session_id||‘,‘||s.serial#||chr(39)||‘immediate;‘, l.session_id sid,s.serial#,l.locked_mode,l.oracle_username,l.os_user_name,
s.machine,s.terminal,o.object_name,s.logon_time
FROM v$locked_object l, all_objects o, v$session s
WHERE l.object_id = o.object_id AND l.session_id = s.sid
ORDER BY sid, s.serial#;
3、RAC另外一个节点,上述同样语句也未见死锁
4、马上想到是否是同义词SYNONYMS ,通过如下语句查询出确实是同义词
5、进而查询相关的DB_LINK,找到同义词相关表所在库
6、前往该库用步骤二的语句查出有死锁
7、杀死锁
SQL> alter system kill session ‘2015,55997‘immediate;
System altered.
9、再执行目标库的存储过程恢复正常
原文:http://blog.51cto.com/yunlongzheng/2124630