加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Oracle查找正在运行的存储过程

(2019-10-10 15:34:21)
标签:

查询正常执行存储过程

查询执行存储过程

分类: Oracle数据库
       在日常的数据处理过程中,我们会遇到查询后台在运行的存储过程,根据查看的情况进行对应的操作,如结束存储过程的执行进程等,下面我们来看下怎么查询这些进程呢
1、查找正在运行的会话
--在数据库管理员用户下
-- select * from gv$access
-- select * from gv$session
select b.sid,b.serial#,b.osuser,b.username,b.machine,b.terminal,b.program,a.owner,a.object,b.status,b.sql_exec_start,
       'alter system kill session '''||b.sid ||','||b.serial#||''';' as kill_command
from gv$access a,gv$session b
where a.sid=b.sid
and b.status='ACTIVE'
and a.type in('PROCEDURE','PACKAGE')
and a.owner not in('SYS','MDSYS','SYSTEM','XDB')
and a.object like upper('pr_test%');

2、杀掉会话
alter system kill session 'sid,serial#';


3、查看执行SQL
select sid,user_name,sql_text
-- select *
from v$open_cursor
where lower(sql_text) like '%pr_test%'

4、另一种查询方法
select owner,name,status,timestamp
-- select *
from gv$db_object_cache
where locks > 0
and pins > 0
and type='PROCEDURE';

5、另一种查询方法
-- select * from gv$session
-- select * from dba_ddl_locks
select a.session_id sid,b.SERIAL#,b.username,a.owner,a.name,a.type,a.mode_held held,a.mode_requested request,
       b.osuser,b.machine,b.terminal,b.program,b.logon_time,b.sql_exec_start
-- select *
from dba_ddl_locks a,gv$session b
where a.session_id=b.sid
and a.owner=b.username
and a.owner not in('SYS','MDSYS','SYSTEM','XDB')
and a.type like '%Procedure%'
and a.name=upper('pr_test');




本文参考资料:https://wenku.baidu.com/view/fa872235fe00bed5b9f3f90f76c66137ee064fda.html

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有