2010-05-02 4 views
4

Я выполнил эту работу, которая должна выполняться с интервалом в 1 минуту, но она не работает. Когда я использую execute dbms_job.run(2);, он запускается. printe есть процедура Пожалуйста, предложите!Попытка выполнить задание после каждых 1 минуты, но не работает?

BEGIN 
    DBMS_JOB.SUBMIT (
     job =>:job_no, 
      WHAT=>'printe;',--Procedure 
      next_date=>sysdate+1/24*60, 
      interval=>'sysdate+1/24*60' 
     ); 
    commit; 
END; 
+1

Как вы проверяете, выполняется ли процедура? Что оно делает? –

+2

Этот интервал выглядит неправильно. Если вы хотите, чтобы он выполнялся каждую минуту, интервал не должен быть «SYSDATE + ((1/24)/60)»? Как указано, я думаю, что это будет повторяться каждые 60 часов. –

ответ

4

Попробуйте next_date = SYSDATE + (1/24/60) и интервал = (1/24/60) ...

+0

Не работает! – Vineet

4

Вот простая работа.

SQL> create table log1 (ts timestamp) 
    2/

Table created. 

SQL> create or replace procedure printe as 
    2 begin 
    3  insert into log1 values (systimestamp); 
    4  commit; 
    5 end; 
    6/

Procedure created. 

SQL> 

Итак, первое, что нужно отправить с указанием времени начала и интервала, правильно заданного. Если вы не можете вспомнить, сколько минут в день (1440), рекомендуется использовать скобки. Давайте сравним посылающее задание с вашими требованиями даты ...

SQL> var job_no number 
SQL> BEGIN 
    2  DBMS_JOB.SUBMIT 
    3  (
    4  job =>:job_no, 
    5  WHAT=>'printe;',--Procedure 
    6  next_date=>sysdate+1/24*60, 
    7 interval=>'sysdate+1/24*60' 
    8 ); 
    9 commit; 
    10 END; 
    11/

PL/SQL procedure successfully completed. 

SQL> print job_no 

    JOB_NO 
---------- 
     71 

SQL> 

... с кронштейнами для утверждающего приоритета ...

SQL> BEGIN 
    2  DBMS_JOB.SUBMIT 
    3  (
    4  job =>:job_no, 
    5  WHAT=>'printe;',--Procedure 
    6  next_date=>sysdate+1/(24*60), 
    7 interval=>'sysdate+1/(24*60)' 
    8 ); 
    9 commit; 
10 END; 
11/

PL/SQL procedure successfully completed. 

SQL> print job_no 

    JOB_NO 
---------- 
     72 

SQL> 

Очевидно работа 71 не бегать и не собираются работать в течение некоторого времени еще:

SQL> select job, what, last_date, next_date, interval 
    2 from user_jobs 
    3 where job in (71,72) 
    4/

    JOB WHAT   LAST_DATE   NEXT_DATE   INTERVAL 
------ ------------ -------------------- -------------------- ----------------- 
    71 printe;       05-MAY-2010 17:35:34 sysdate+1/24*60 
    72 printe;  03-MAY-2010 05:44:42 03-MAY-2010 05:45:34 sysdate+1/(24*60) 

SQL> 

работа Мониторинг 72 ....

SQL> select * from log1 
    2/

TS 
------------------------------------------------------------------- 
03-MAY-10 05:43:39.250000 
03-MAY-10 05:44:42.296000 

SQL> 

Итак, если это еще не работает для вас, что вы должны делать? Прежде всего, нужно проверить, настроена ли база данных для выполнения заданий вообще. Для этого вам понадобится DBA-доступ.

SQL> select value 
    2 from v$parameter 
    3 where name='job_queue_processes' 
    4/

VALUE 
------------------------- 
1000 

SQL> 

Если я правильно помню, в Oracle 9i значение по умолчанию для этого параметра равно 0. Он должен быть установлен на некоторое ненулевое значение для рабочих мест для запуска.

И если это не проблема, вам необходимо проверить сообщения об ошибках в журнале предупреждений. Каталог background_dump_dest также может содержать некоторые .trc-файлы, созданные неудачным заданием.

+0

Наряду с job_queue_processes также есть job_queue_interval, так как часто база данных просыпается и ищет рабочие задания. Вам понадобится меньше 60 секунд. –

+0

Я не знаю, в чем причина, но в моем случае работа работает как ожидалось в течение некоторого времени, а затем она просто не на следующей минуте. Я использую oracle 9i, и работа должна запускаться каждую минуту. – viveksinghggits

+0

@viveksinghggits - действительно не уверен, что вы ожидаете от меня. Достаточно сложно диагностировать прерывистые ошибки в моей собственной системе, где у меня есть полный доступ. нет никакой возможности что-либо сделать с какой-либо случайной удаленной системой без какой-либо информации. – APC

Смежные вопросы