有沒有辦法監視存儲過程的執行時間? 也做一些操作,如果執行時間花費的時間比一些固定的時間更在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存儲過程