Chinaunix

标题: 怎么查询某个存储过程的执行状态?是否在运行中? [打印本页]

作者: TOADLover    时间: 2009-09-03 13:00
标题: 怎么查询某个存储过程的执行状态?是否在运行中?
怎么查询某个存储过程的执行状态?是否在运行中?
-----------------------------------------------------------
可能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 编辑 ]
作者: ILoveMK    时间: 2009-09-03 13:00
提示: 作者被禁止或删除 内容自动屏蔽
作者: TOADLover    时间: 2009-09-03 13:02
谁知道:
怎么查询某个存储过程的执行状态?是否在运行中?
------------------------------------------------------
算了,查不出来的。
死心了。。。。。。

[ 本帖最后由 TOADLover 于 2009-9-3 13:12 编辑 ]
作者: TOADLover    时间: 2009-09-03 13:19
谁进来随便答一下啊?
---------------------
这个其实Oracle是不知道自己的存储过程的状态的!
-----------------------
想不到Oracle这么强大,这么个简单的功能都没有?!!!!!!!!!!!!!!!!!!!!!!!
失望!!!!!!!!!!!

[ 本帖最后由 TOADLover 于 2009-9-3 13:22 编辑 ]
作者: TOADLover    时间: 2009-09-03 13:32
标题: 回复 #4 ILoveMK 的帖子
以sys用户运行上面的sql语句,也只能查出当前连接上系统
这个也只能查出当前的连接进Oracle数据库的用户名!
------------------------------------------------------------
其实,还是查不出存储过程p_insert_tbl的状态的!

[ 本帖最后由 TOADLover 于 2009-9-3 13:33 编辑 ]
作者: ILoveMK    时间: 2009-09-03 13:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: TOADLover    时间: 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 编辑 ]
作者: ILoveMK    时间: 2009-09-03 13:47
提示: 作者被禁止或删除 内容自动屏蔽
作者: TOADLover    时间: 2009-09-03 13:54
标题: 回复 #8 ILoveMK 的帖子
希望你说的是对的,呵呵!@_@
----------------------------------------------
现在,我所有的希望都押在你这里,呵呵!!!!!
----------------------------------------------
至少在我本机上测试,是你说的这样的,当我运行p_insert_tbl时,sys用户执行上面的sql结果,proc_state是显示为2的,只要这个2真正地代表存储过程在运行就好了!!!

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




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2