如何杀掉正在执行的存储过程

jayli426 2008-08-23 04:19:48
现在在PL/Sql developer中执行了一个存储过程

现在想终止它,点击 pl/sql中的那个闪电按钮,却怎么也终止不掉

我如何找到这个执行这个存储过程的会话,强行终止它呢?

请大虾指较啊?
...全文
811 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jayli426 2008-09-02
  • 打赏
  • 举报
回复
ZT 一个答案
不知是否可行

1.select * from v$session where program='PLSQLDev.exe'
确定SID
2.select spid, osuser, s.program,s.sql_address,q.sql_text
from v$process p, v$session s ,v$sql q
where p.addr=s.paddr
and s.sql_address=q.address
and s.sid=&SID
union all
select spid, osuser, s.program,s.PREV_SQL_ADDR,q.sql_text
from v$process p, v$session s ,v$sql q
where p.addr=s.paddr
and s.PREV_SQL_ADDR=q.address
and s.sid=&SID
/
确定这个SID 是你运行的PLSQL程序
3.select spid, osuser, s.program from v$process p, v$session s where p.addr=s.paddr and s.sid in(SID);
4.如果是UNIX 就KILL -9 SPID
OR WINDOWS 就ORAKILL ORACLE_SID SPID

使用ALTER SYSEM KILL SESSION 'SID,SER#'; 回收资源的速度很慢 所以本人基本不用.
seasir123 2008-08-27
  • 打赏
  • 举报
回复
学习了!
jayli426 2008-08-27
  • 打赏
  • 举报
回复
"
1.SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='SID';
2.在SQLPLUS的命令窗口执行:
alter system kill session 'sid,SERIAL#';
"

能否得到这样一个结果集

存储过程名 sid serial
sp1 111 2222


单纯这个
1.SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='SID';
SQL语句,是拿不到这个 结果得把?

大虾指较啊
jayli426 2008-08-25
  • 打赏
  • 举报
回复
二楼说的正确 通过v$session等一些视图找到相关的sid,kill掉就行
能否给出几个样例的sql啊?大虾
小弟 才疏学浅啊
liuyi8903 2008-08-25
  • 打赏
  • 举报
回复
一般来说自己会rollback,, 可以通过查询v$rollstat来看看当前的事务情况。
4
v$session关联 v$transaction和rollstat来观察一下roll情况。

以及找到pid, 在避免kill不了,或者造成dead session.
realduke 2008-08-25
  • 打赏
  • 举报
回复
工具TOAD中有个“DBA”-“Session Browser”,可以根据过滤条件查看所有运行的进程,可以在这里kill
catamite 2008-08-25
  • 打赏
  • 举报
回复
1.SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='SID';
2.在SQLPLUS的命令窗口执行:
alter system kill session 'sid,SERIAL#';
jayli426 2008-08-24
  • 打赏
  • 举报
回复
很简单.强行关掉plsql developer.再重新打开就哦了.

这个好像只是关掉了pl/sql dev
并没有kill掉那个存储过程对应地会话哦
gkl0818 2008-08-24
  • 打赏
  • 举报
回复
二楼说的正确 通过v$session等一些视图找到相关的sid,kill掉就行
wangydong 2008-08-24
  • 打赏
  • 举报
回复
呵呵,楼上的高
dbcxbj 2008-08-23
  • 打赏
  • 举报
回复
很简单.强行关掉plsql developer.再重新打开就哦了.
oracledbalgtu 2008-08-23
  • 打赏
  • 举报
回复
通过v$session,v$process,v$sql关联,可以获取sid,serial#,和spid,
然后可以: alter system kill session 'sid,serial#' immediate;
或者:
orakill $oracle_sid spid



[Quote=引用楼主 jayli426 的帖子:]
现在在PL/Sql developer中执行了一个存储过程

现在想终止它,点击 pl/sql中的那个闪电按钮,却怎么也终止不掉

我如何找到这个执行这个存储过程的会话,强行终止它呢?

请大虾指较啊?
[/Quote]

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧