杀掉存储过程

网友投稿 751 2022-09-29

杀掉存储过程

杀掉存储过程

前文再续,说我最近被一存储过程折磨。

为啥说折磨呢。主要是很难调试。数据库的强项不在于编码,存储过程写的过程比较别扭,其实运行起来更坑爹。出了问题,你很难知道是哪一部分引起的。如果这个存储过程执行的时间很长,就更加痛苦了,是哪一部分慢嘛?

另外,由于执行时间长,实在等不下去,就想中途掐掉。要怎么搞?

--获得SIDselect * from v$access where object='存储过程名';--获得SID,serial#select sid,serial#,lockwait,status,wait_time,state from v$session where sid='SID';--杀掉进程alter system kill session 'SID,serial#';

如果是存储过程托付给了JOB执行,要中途停掉JOB该如何处理呢?

--首先要关闭JOB计划begin dbms_job.broken(JOB编号,true); commit;end;--检查JOB有没有正在运行,停止计划对它没有影响--获得SIDselect * from--获得SID,serial#select sid,serial#,lockwait,status,wait_time,state from v$session where sid='SID';--杀掉进程alter system kill session 'SID,serial#';

有时候,存储过程甚至不能被编译,那么有可能是存储过程正在运行,或者其处理的表被锁定。有以下语句可供参考:

--存储过程无法编译SELECT V.OSUSER, V.PROCESS, V.PROGRAM,v.MACHINE,V.TERMINAL,V.MODULE,V.USERNAME,V.STATUS, V.SID,V.SERIAL#, 'alter system kill session ''' || V.sid || ',' || V.SERIAL# || ''';' as KILL_SESSION, V.PADDR FROM V$SESSION V WHERE V.USERNAME LIKE '%用户名%' AND V.STATUS in( 'INACTIVE','ACTIVE') and v.PROGRAM = 'plsqldev.exe'; SELECT object_name, machine, s.sid, s.serial# ,s.status, 'alter system kill session ''' || s.sid || ',' || s.SERIAL# || ''';' as KILL_SESSION FROM gv$locked_object l, dba_objects o, gv$session s WHERE l.object_id = o.object_id AND

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:手把手教你在微信小程序中使用canvas绘制天气折线图(附代码)
下一篇:MyBatis中的collection两种使用方法及效率比较
相关文章

 发表评论

暂时没有评论,来抢沙发吧~