Планирование процедуры с помощью DBMS_SCHEDULER. PLS-00103: Обнаружен символ «NULL» при ожидании одного из следующих событий:;
Я не могу запланировать выполнение задания.
Я сделал процедуру, которая записывает файлы CSV, и она работает, когда я ее выполняю.
Затем я попытался составить задание по расписанию:
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'AUTOMATE_CSV_EXPORT',
job_type => 'STORED_PROCEDURE',
job_action => 'EXPORT_ALL_LYS_FOR_TABLEAU',
number_of_arguments => 0,
start_date => '20-AUG-20 2.05.00PM',
repeat_interval => 'FREQ=WEEKLY; BYDAY=FRI; BYHOUR=23;',
end_date => NULL,
enabled => FALSE,
auto_drop => FALSE,
comments => 'hello i am a comment');
DBMS_SCHEDULER.SET_ATTRIBUTE(
name => 'AUTOMATE_CSV_EXPORT',
attribute => 'logging_level',
value => DBMS_SCHEDULER.LOGGING_RUNS);
DBMS_SCHEDULER.enable(
name => 'AUTOMATE_CSV_EXPORT');
END;
/
Он не запускался в запланированное время, но это было, когда я запускал его следующим образом:

Я попытался отредактировать время запуска в мастере, и это дает мне эту ошибку:

Некоторое время назад я запланировал его запускать каждые 2 минуты, но он еще не запускался. Это определенно включено.

Поиск проблемы
TL; DR: планировщик работает !!! Единственное, что не работает, - это я добавляю свой адрес электронной почты, чтобы получать уведомления.
- Я запускаю его в той же схеме, в которой я его создал?
Я изменил задание на выполнение каждые 2 минуты.

- Тестирование запланированного задания: test:
create or replace procedure test_print
is
begin
dbms_output.put_line('Current date and time is : ' ||
to_char(sysdate,'DD-MON-YYYY HH:MI:SS AM'));
end;
set serveroutput on;
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'JOB_TEST',
job_type => 'STORED_PROCEDURE',
job_action => 'TEST_PRINT',
number_of_arguments => 0,
start_date => NULL,
repeat_interval => 'FREQ=MINUTELY;INTERVAL=2;',
end_date => NULL,
enabled => FALSE,
auto_drop => FALSE,
comments => 'Testing job runs');
DBMS_SCHEDULER.enable(name => 'JOB_TEST');
END;
/
select job_name,output,status,owner
from user_scheduler_job_run_details where job_name='JOB_TEST';
полученные результаты:

То, что по-прежнему не работает, - это уведомления по электронной почте. Когда это единственное, что я редактирую, я получаю такую ошибку:

Ответы
Скорее всего, вы создаете объекты в разных схемах, проверяете созданные задания и детали задания в текущей схеме с помощью этих представлений user_scheduler_jobs
иuser_scheduler_job_run_details
Простая процедура, запускаемая каждые 2 минуты
SQL>create or replace procedure test_print
2 is
3 begin
4 dbms_output.put_line('Current date and time is : ' || to_char(sysdate,'DD-MON-YYYY HH:MI:SS AM'));
5* end;
SQL> /
Procedure created.
SQL> exec test_print();
Current date and time is : 20-08-2020 09:22:59 PM
PL/SQL procedure successfully completed.
SQL> BEGIN
2 DBMS_SCHEDULER.CREATE_JOB (
3 job_name => 'JOB_TEST',
4 job_type => 'STORED_PROCEDURE',
5 job_action => 'TEST_PRINT',
6 number_of_arguments => 0,
7 start_date => NULL,
8 repeat_interval => 'FREQ=MINUTELY;INTERVAL=2;',
9 end_date => NULL,
10 enabled => FALSE,
11 auto_drop => FALSE,
12 comments => 'Testing job runs');
13
14
15
16
17
18 DBMS_SCHEDULER.enable(
19 name => 'JOB_TEST');
20 END;
21 /
SQL> select job_name,output,status from user_scheduler_job_run_details
2 where job_name='JOB_TEST';
JOB_NAME OUTPUT STATUS
---------- -------------------------------------------------- ---------------
JOB_TEST Current date and time is :20-08-2020 09:30:05 PM SUCCEEDED
JOB_TEST Current date and time is :20-08-2020 09:32:05 PM SUCCEEDED
JOB_TEST Current date and time is :20-08-2020 09:34:05 PM SUCCEEDED
JOB_TEST Current date and time is :20-08-2020 09:36:05 PM SUCCEEDED
JOB_TEST Current date and time is :20-08-2020 09:38:05 PM SUCCEEDED
JOB_TEST Current date and time is :20-08-2020 09:40:05 PM SUCCEEDED
JOB_TEST Current date and time is :20-08-2020 09:42:05 PM SUCCEEDED
JOB_TEST Current date and time is :20-08-2020 09:44:05 PM SUCCEEDED
JOB_TEST Current date and time is :20-08-2020 09:46:05 PM SUCCEEDED
JOB_TEST Current date and time is :20-08-2020 09:48:05 PM SUCCEEDED
JOB_TEST Current date and time is :20-AUG-2020 09:50:05 PM SUCCEEDED -- Modified date format in procedure
JOB_TEST Current date and time is :20-AUG-2020 09:52:05 PM SUCCEEDED
JOB_TEST Current date and time is :20-AUG-2020 09:54:05 PM SUCCEEDED
JOB_TEST Current date and time is :20-AUG-2020 09:58:05 PM SUCCEEDED
JOB_TEST Current date and time is :20-AUG-2020 10:02:05 PM SUCCEEDED
JOB_TEST Current date and time is :20-AUG-2020 10:04:05 PM SUCCEEDED
JOB_TEST Current date and time is :20-AUG-2020 09:56:05 PM SUCCEEDED
JOB_TEST Current date and time is :20-AUG-2020 10:00:05 PM SUCCEEDED
18 rows selected.
SQL> select job_name,last_start_date,last_run_duration from user_scheduler_jobs
2 where job_name='JOB_TEST';
JOB_NAME LAST_START_DATE LAST_RUN_DURATION
---------- -------------------------------------------------- ------------------------------
JOB_TEST 20-AUG-20 10.08.05.070000 PM US/CENTRAL +000000000 00:00:00.009000
Изменить: - Простое наблюдение, что вы смогли запустить задание вручную, но не из планировщика, подразумевает, что задание и процедура не находятся в одной схеме.