监视Oracle中存储过程的执行时间
有没有办法监视存储过程的执行时间?监视Oracle中存储过程的执行时间,oracle,Oracle,有没有办法监视存储过程的执行时间? 如果执行时间超过某个固定时间,也要执行一些操作,我不知道直接的方法,但可以使用PL/SQL包 过程运行时,您可以通过以下方式进行查询(并在需要时执行某些操作): 如果需要,您还可以放置时间戳或执行时间,例如DBMS\u应用程序\u信息.SET\u操作('开始于'| | systimestamp) 如果您正在处理调度程序作业,则可以直接监视和停止作业: BEGIN DBMS_SCHEDULER.SET_ATTRIBUTE( NAME
如果执行时间超过某个固定时间,也要执行一些操作,我不知道直接的方法,但可以使用PL/SQL包 过程运行时,您可以通过以下方式进行查询(并在需要时执行某些操作): 如果需要,您还可以放置时间戳或执行时间,例如
DBMS\u应用程序\u信息.SET\u操作('开始于'| | 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;
我不知道一种直接的方法,但您可以使用PL/SQL包 过程运行时,您可以通过以下方式进行查询(并在需要时执行某些操作): 如果需要,您还可以放置时间戳或执行时间,例如
DBMS\u应用程序\u信息.SET\u操作('开始于'| | 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;
这是dbms_profiler包。以前,应将其设置为可供使用。它创建一个表服务。 更多详细信息可在文档中找到:
这是dbms_profiler包。以前,应将其设置为可供使用。它创建一个表服务。 更多详细信息可在文档中找到: