Как создать триггер на user_scheduler_jobs в оракуле? - PullRequest
1 голос
/ 05 марта 2012

Я новичок в оракуле.В нашем приложении нам нужно выполнить процедуру, когда продолжительность выполнения запланированного задания превышает 10 минут.Мы проверяем таблицу user_scheduler_jobs и должны запустить процедуру, когда столбец last_run_duration превышает 10 минут.Мы попытались создать триггер для этой цели, как показано ниже:

CREATE TRIGGER TRG1
  AFTER UPDATE ON ALL_SCHEDULER_JOBS
  BEGIN
  MONITOR_JOB_DURATION();
  END TRG1;

Но когда я пытаюсь скомпилировать триггер, он показывает ошибку как

Error report:
ORA-25001: cannot create this trigger type on views
25001. 00000 -  "cannot create this trigger type on views"
*Cause:    Only INSTEAD OF triggers can be created on a view.
*Action:   Change the trigger type to INSTEAD OF.

Is user_scheduler_jobs aПосмотреть?Если я перейду к триггеру INSTEAD OF, повлияет ли это на обновление, которое происходит автоматически после выполнения задания?

Ответы [ 2 ]

2 голосов
/ 05 марта 2012

Является ли user_scheduler_jobs видом?Это, безусловно, есть.Более того, он находится в схеме SYS, и вы действительно не должны пытаться связываться с этой схемой.Это крайне важно для работы вашей базы данных, и она должна храниться точно в том виде, в котором ее устанавливает Oracle.


Oracle Enterprise Manager обладает некоторыми функциями для мониторинга заданий.Вы смотрели на это, прежде чем начать свой собственный?

1 голос
/ 05 марта 2012

Лучший способ справиться с этим - проверить в своем коде, как долго что-то работает, а затем сделать что-то. Как говорит APC : ни в коем случае не вводите триггеры или что-либо еще в схему SYS, это вызовет больше проблем, чем оно того стоит. Должно работать что-то вроде ниже:

declare

   l_start_time date default sysdate;

   -- other stuff

begin

  -- do something

  if sysdate - l_start_time > ( 1 / 24 / 6 )
     -- run something else
     -- maybe using dbms_scheduler
  end if;

  -- do more stuff

end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...