1、技术场景
存储过程(函数)1执行过程中,关闭或者中断存储过程,有时重新编译时等待时间很长。
2、原因
其原因跟表死锁类似,有其他进程占用了该存储过程。
3、解决办法
解决办法跟表死锁一样,解锁即可。
4、代码实现
首先查询有哪些被锁了:
SELECT *
FROM V$DB_OBJECT_CACHE
WHERE OWNER = '用户名'
AND LOCKS != '0';
这个时候就可以看到那些被锁了的程序,然后查找他的sid
SELECT SID
FROM V$ACCESS
WHERE OBJECT = '查出来的对象的名称';
查询 SERIAL#
SELECT SID,SERIAL#
FROM V$SESSION
WHERE SID = 查出来的SID;
杀死进程
ALTER SYSTEM KILL SESSION 'SID,SERIAL#';
at last:
想建一个数据库技术的交流群,用于磨炼提升技术能力.群号: 130730832
,欢迎大佬前来教学。
包含存储过程函数等系列程序包,后续再不赘述。 ↩︎