免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 10932 | 回复: 8
打印 上一主题 下一主题

怎么查询某个存储过程的执行状态?是否在运行中? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-03 13:00 |只看该作者 |倒序浏览
20可用积分
怎么查询某个存储过程的执行状态?是否在运行中?
-----------------------------------------------------------
可能ILoveMK的说法是正确的:
1. x$kglpn的KGLPNMOD字段为2时就代表存储过程在执行
---------------------------------
2. SELECT  '(' || s.sid || ') - ' || username AS "(session) - username", p.KGLPNMOD as proc_state,o.kglhdnsp
                FROM V$SESSION s, sys.x$kglob o, sys.x$kglpn p
                         WHERE upper(o.kglnaobj) LIKE upper('%p_insert_tbl%')
                                    AND p.kglpnhdl = o.kglhdadr
                                              AND s.SADDR = p.kglpnuse
                                                      and o.KGLHDNSP=1
                                                              and p.KGLPNMOD=2

[ 本帖最后由 TOADLover 于 2009-9-3 13:43 编辑 ]

最佳答案

查看完整内容

不好意思,一不小心写错了,正确的sql如下:SELECT '(' || s.sid || ') - ' || username||' is running '||o.kglnaobjFROM V$SESSION s, sys.x$kglob o, sys.x$kglpn pWHERE upper(o.kglnaobj) LIKE upper('%test%')AND p.kglpnhdl = o.kglhdadrAND s.SADDR = p.kglpnuseand o.KGLHDNSP=1and p.KGLPNMOD=2;[ 本帖最后由 ILoveMK 于 2009-9-3 13:30 编辑 ]

论坛徽章:
1
丑牛
日期:2014-08-07 17:07:05
2 [报告]
发表于 2009-09-03 13:00 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2009-09-03 13:02 |只看该作者
谁知道:
怎么查询某个存储过程的执行状态?是否在运行中?
------------------------------------------------------
算了,查不出来的。
死心了。。。。。。

[ 本帖最后由 TOADLover 于 2009-9-3 13:12 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2009-09-03 13:19 |只看该作者
谁进来随便答一下啊?
---------------------
这个其实Oracle是不知道自己的存储过程的状态的!
-----------------------
想不到Oracle这么强大,这么个简单的功能都没有?!!!!!!!!!!!!!!!!!!!!!!!
失望!!!!!!!!!!!

[ 本帖最后由 TOADLover 于 2009-9-3 13:22 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-09-03 13:32 |只看该作者

回复 #4 ILoveMK 的帖子

以sys用户运行上面的sql语句,也只能查出当前连接上系统
这个也只能查出当前的连接进Oracle数据库的用户名!
------------------------------------------------------------
其实,还是查不出存储过程p_insert_tbl的状态的!

[ 本帖最后由 TOADLover 于 2009-9-3 13:33 编辑 ]

论坛徽章:
1
丑牛
日期:2014-08-07 17:07:05
6 [报告]
发表于 2009-09-03 13:38 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2009-09-03 13:41 |只看该作者

回复 #6 ILoveMK 的帖子

我想说:
--------------
1. x$kglpn的KGLPNMOD字段为2时就代表存储过程在执行
--------------
2. SELECT  '(' || s.sid || ') - ' || username AS "(session) - username", p.KGLPNMOD as proc_state,o.kglhdnsp
                FROM V$SESSION s, sys.x$kglob o, sys.x$kglpn p
                         WHERE upper(o.kglnaobj) LIKE upper('%p_insert_tbl%')
                                    AND p.kglpnhdl = o.kglhdadr
                                              AND s.SADDR = p.kglpnuse
                                                      and o.KGLHDNSP=1
                                                              and p.KGLPNMOD=2
------------------------------------------------------------------------------------

以sys用户运行该sql语句,如果proc_state等于2的话,就表示p_insert_tbl这个存储过程在运行中,对吗?

[ 本帖最后由 TOADLover 于 2009-9-3 13:44 编辑 ]

论坛徽章:
1
丑牛
日期:2014-08-07 17:07:05
8 [报告]
发表于 2009-09-03 13:47 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
9 [报告]
发表于 2009-09-03 13:54 |只看该作者

回复 #8 ILoveMK 的帖子

希望你说的是对的,呵呵!@_@
----------------------------------------------
现在,我所有的希望都押在你这里,呵呵!!!!!
----------------------------------------------
至少在我本机上测试,是你说的这样的,当我运行p_insert_tbl时,sys用户执行上面的sql结果,proc_state是显示为2的,只要这个2真正地代表存储过程在运行就好了!!!

[ 本帖最后由 TOADLover 于 2009-9-3 13:57 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP