有没有办法监视存储过程的执行时间? 也做一些操作,如果执行时间花费的时间比一些固定的时间更在Oracle中监视存储过程的执行时间
0
A
回答
1
我不知道一个直接的方式,但是当程序运行时,你可以,你可以使用PL/SQL包DBMS_APPLICATION_INFO
Procedure MY_Procedure is
begin
DBMS_APPLICATION_INFO.SET_MODULE('MY_Procedure', 'Starting');
...
DBMS_APPLICATION_INFO.SET_ACTION('Still working, please be patient');
...
DBMS_APPLICATION_INFO.SET_ACTION('Finished');
END;
查询(并根据需要执行一些操作):
SELECT SID, serial#, username, module, action, sql_exec_start
FROM v$session;
如果需要,还可以添加时间戳或执行时间,例如DBMS_APPLICATION_INFO.SET_ACTION('Started at '||systimestamp)
如果您正在使用计划程序作业工作,就可以监视并直接停止工作:
BEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE(
NAME => 'MY_JOB',
ATTRIBUTE => 'MAX_RUN_DURATION',
VALUE => INTERVAL '10' MINUTE);
END;
,这经常通话:
DECLARE
CURSOR Jobs IS
SELECT JOB_NAME, LAST_START_DATE, MAX_RUN_DURATION
FROM USER_SCHEDULER_JOBS
WHERE JOB_NAME = 'MY_JOB'
AND STATE = 'RUNNING'
AND SYSTIMESTAMP - LAST_START_DATE > MAX_RUN_DURATION;
BEGIN
FOR aJob IN Jobs LOOP
DBMS_SCHEDULER.STOP_JOB('MY_JOB', FORCE => TRUE);
END LOOP;
END;
2
因为这是DBMS_PROFILER包。以前它应该被设置为使用。它创建一个表服务。 更多详细信息请见文档: https://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_profil.htm#BJEFDBBC
相关问题
- 1. MSSQL:如何监视存储过程的执行时间
- 2. 在EntityFramework中执行Oracle存储过程
- 3. SSRS在Oracle中执行存储过程
- 4. 错误时执行Oracle存储过程
- 5. 试图在Oracle 11g中存储过程以监视表空间存储
- 6. oracle显示每个存储过程的执行时间
- 7. 存储过程的执行时间
- 8. 在视图中执行存储过程?
- 9. ,可执行的Oracle存储过程
- 10. Oracle存储过程的执行计划
- 11. 存储过程需要时间执行
- 12. 从SQL Server存储过程执行Oracle存储过程
- 13. 在Oracle的另一个存储过程中执行存储过程
- 14. 如何执行oracle存储过程?
- 15. 使用Hibernate执行Oracle存储过程
- 16. PLSQL Oracle 10 - 执行存储过程
- 17. 执行存储过程花费的时间比执行TSQL
- 18. 在Oracle中并行执行存储过程
- 19. 存储过程执行时间过长时的SQL警报
- 20. 在存储过程中执行带参数的存储过程
- 21. 在Oracle中存储时间
- 22. 在Oracle中获取和存储执行时间
- 23. 在另一个存储过程中未执行存储过程
- 24. 在存储过程中执行存储过程
- 25. 如何减少SQL Server中存储过程的执行时间
- 26. 如何在Oracle SQL Developer中执行存储过程
- 27. 如何在Oracle中执行存储过程11g
- 28. Oracle存储过程不在.NET中执行?
- 29. 在Oracle SQL Developer中执行存储过程
- 30. 在NHibernate中执行Oracle PL/SQL存储过程