怎么在oracle 中查看存储过程的执行过程
答案:2 悬赏:10 手机版
解决时间 2021-03-14 22:55
- 提问者网友:山高云阔
- 2021-03-14 16:18
现我有一个存储过程,代码比较多,操作的数据比较大,所以执行的时间无法让人接受。有什么方法可以查看正在执行的存储过程执行到哪个SQL了,查看存储过程的执行情况,找到慢的原因?
最佳答案
- 五星知识达人网友:怀裏藏嬌
- 2021-03-14 17:09
可以DEBUG一下,如果是用PLSQLDEVELOPER的话,可以设断点在可能比较慢的地方用F9跟进去。
全部回答
- 1楼网友:纵马山川剑自提
- 2021-03-14 17:39
1.确定正在运行的过程名
select name,locks,pins
from v$db_object_cache
where locks > 0 and pins > 0 and type='procedure';
name locks pins
p_etl_crm_desk 1 1
2.查询v$open_cursor 视图
select sid,sql_text
from v$open_cursor
where upper(sql_text) like '%p_etl_crm_desk%'
sid sql_text
143 begin -- call the procedure p_etl_crm_desk(v_dtdate => :
3.也可以用v$access确定
select * from v$access where object='p_etl_crm_desk';
sid owner object type
143 kdcc p_etl_crm_desk procedure
4.或者dba_ddl_locks
select session_id sid, owner, name, type,mode_held held, mode_requested request
from dba_ddl_locks
where name = 'p_etl_crm_desk';
sid owner name type held request
143 kdcc p_etl_crm_desk table/procedure/type null none
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯