我无法安排要运行的作业。
我制作了一个编写 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 分钟运行一次,但它还没有运行。它肯定是启用的。
故障排除
TLDR:调度程序工作!唯一不起作用的是我输入电子邮件以获取通知。
我将工作更改为每 2 分钟运行一次。 ^^^所以它工作?但我在目标文件夹中看不到任何 CSV。我像下面的代码一样将开始日期更改为 NULL 并且它起作用了!我有 CSV!
- 测试计划的工作:测试:
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 分钟运行一次的简单程序
编辑: - 只是观察你能够手动运行作业但不能从调度程序运行意味着作业和过程不在同一个模式中。