暂无图片
Oracle如何确认存储过程正在被调用
我来答
分享
张全蛋
2022-05-24
Oracle如何确认存储过程正在被调用
暂无图片 10M

单机的oracle 11g,请问怎么查看存储过程是否正在被调用呢?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
DarkAthena

如果存储过程正在被调用,去编译它,会卡住,会话等待事件为 library cache pin。
另外,如果不去编译它,可以尝试使用如下sql来检查持有该对象的会话

SELECT a.SID, a.username, a.program, b.addr, b.kglpnadr, b.kglpnuse, b.kglpnses, b.kglpnhdl, b.kglpnlck, b.kglpnmod, b.kglpnreq FROM v$session a, x$kglpn b WHERE a.saddr = b.kglpnuse AND b.kglpnmod <> 0 and kglpnhdl in (SELECT kglhdadr FROM x$kglob WHERE kglnaobj = 'TEST_20220524');
暂无图片 评论
暂无图片 有用 2
打赏 0
暂无图片
张全蛋
题主
2022-05-24
kglnaobj = 'TEST_20220524' 请问这个是存储过程名称吗
张全蛋

必须是sys用户才能查吧

暂无图片 评论
暂无图片 有用 0
打赏 0
DarkAthena
2022-05-24
是的,这个x开头的表需要sys用户才能查,引号里的字符串是存储过程对象名称
回答交流
Markdown


请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏