Menjadwalkan prosedur dengan DBMS_SCHEDULER. PLS-00103: Menemukan simbol "NULL" saat mengharapkan salah satu dari yang berikut:;
Saya tidak bisa menjadwalkan pekerjaan untuk dijalankan.
Saya membuat prosedur yang menulis file CSV dan berfungsi saat saya menjalankannya.
Kemudian saya mencoba membuat pekerjaan untuk menjadwalkannya:
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;
/
Itu tidak berjalan pada waktu yang dijadwalkan, tetapi itu berjalan ketika saya menjalankannya seperti ini:

Saya mencoba mengedit waktu mulai di wizard dan itu memberi saya kesalahan ini:

Saya menjadwalkannya untuk berjalan setiap 2 menit mulai beberapa saat yang lalu, dan itu belum berjalan. Ini pasti diaktifkan.

Penyelesaian masalah
TLDR: scheduler bekerja !!! Satu-satunya hal yang tidak berhasil adalah saya memasukkan email saya untuk mendapatkan notifikasi.
- Apakah saya menjalankannya dalam skema yang sama dengan yang saya buat?
Saya mengubah pekerjaan agar berjalan setiap 2 menit.

- Menguji pekerjaan terjadwal: tes:
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';
hasil:

Hal yang masih tidak berfungsi adalah notifikasi melalui email. Ketika itu satu-satunya hal yang saya edit, saya mendapatkan kesalahan ini:

Jawaban
Kemungkinan besar Anda membuat objek dalam skema yang berbeda, memverifikasi pekerjaan yang dibuat dan detail pekerjaan dalam skema saat ini dengan tampilan ini user_scheduler_jobs
danuser_scheduler_job_run_details
Prosedur sederhana dijadwalkan berjalan setiap 2 menit
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
Sunting: - Hanya pengamatan Anda dapat menjalankan pekerjaan secara manual tetapi tidak berjalan dari penjadwal menyiratkan pekerjaan dan prosedur tidak dalam skema yang sama.