免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: TOADLover
打印 上一主题 下一主题

如何查看某个存储过程当前是否在运行? [复制链接]

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

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

回复 #9 ILoveMK 的帖子

嗯,这个方案听起来不错,我试试!
---------------------------------------
可是我在我自己的笔记本上测试时,用sys用户在我的测试库(我有sys权限)中测试,显示的结果是:
---------------------------------------
SELECT DISTINCT '(' || s.sid || ') - ' || username AS "(session) - username"
           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;       
---------------------------------------
(144) - SYS

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

回复 #8 TOADLover 的帖子

可以写日志吗?

论坛徽章:
0
14 [报告]
发表于 2009-09-03 10:09 |只看该作者
不对!!!!!!!!!!!!!!!!!!!!!!!!!!!
--------------------------------------------------------------------
换一个思路,假设我有sys用户的权限,我怎么知道p_insert_tbl这个存储过程的状态,是不是在被执行中??????

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

论坛徽章:
0
16 [报告]
发表于 2009-09-03 10:12 |只看该作者

回复 #12 ziggler 的帖子

嗯,可以,我可以在存储过程开始时向某个table中写一个值,运行结束后再向这个table中写值。
----------------
在运行该存储过程时,先查询这张表,从而得知该存储过程的状态是否在运行中。
----------------
这的确是一个解决方案。
---------------------------------------------
ILoveMK的那个,好像却是我最初遇到这个问题时,心里想的。
ILoveMK的方案不会改动到p_insert_tbl存储过程本身,这个好像很重要的!!!!!

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

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

回复 #14 ILoveMK 的帖子

我是觉得,这个结果,没有显示出我的存储过程p_insert_tbl的状态啊?????

论坛徽章:
0
18 [报告]
发表于 2009-09-03 10:26 |只看该作者
有人跟我有相同的问题,但好像都没有答案:
1. http://www.oracle.com.cn/viewthread.php?tid=34658
2. http://www.itpub.net/viewthread.php?tid=334164&page=1

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

论坛徽章:
0
20 [报告]
发表于 2009-09-03 11:21 |只看该作者
原帖由 ILoveMK 于 2009-9-3 10:34 发表

其实没必要研究那么深的,不过x$kglpn的KGLPNMOD字段为2时就代表存储过程在执行。

-------------------------------------------------------------------------------------------------------------------
x$kglpn的KGLPNMOD字段为2时就代表存储过程在执行????????????

select p.KGLPNMOD
           from x$kglob o, x$kglpn p
                           where o.kglhdadr = p.kglpnhdl
                                  and upper(o.kglnaobj) like upper('%p_insert_tbl%');
-----
2
--------------------------------------------------------------------------------------------------------------------
不过我十分肯定地说,p_insert_tbl这个存储过程肯定没有在运行中,因为,我是在自己笔记本上的虚拟机上做测试,我只是启动了数据库而已,绝对没有运行这个存储过程!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP