查看存储过程是否有锁住
--LOCKS!='0' 即表示有锁,正在执行
--name 这里也可以用like来模糊拆线呢
SELECT * FROM V$DB_OBJECT_CACHE WHERE name='存储过程名称' AND LOCKS!='0';
找到锁住过程的SID
---object这里一样可以用 like 模糊
select SID from V$ACCESS WHERE object='存储过程名称';
查看锁住存储过程对象的设备信息
包括是那台机器锁定的,什么时间锁住的,等等都可以通过以下语句查到
SELECT * FROM V$SESSION WHERE SID='SID';
强制kill进程
- 先找到要杀死进程的sid 和 serial#
SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='sid';
- 然后进行kill
注意, 这里的alter命令,可以加immediate 也可以不加immediate
区别是
加immediate ,表示标记执行,类似异步吧
不加immediate:表示直接立即执行,这个时候有可能出现plsql程序假死的情况。
推荐加上 immediate
alter system kill session 'sid值,serial#值' immediate;