Вот простая работа.
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-файлы, созданные неудачным заданием.
Как вы проверяете, выполняется ли процедура? Что оно делает? –
Этот интервал выглядит неправильно. Если вы хотите, чтобы он выполнялся каждую минуту, интервал не должен быть «SYSDATE + ((1/24)/60)»? Как указано, я думаю, что это будет повторяться каждые 60 часов. –