将oracle作业更改为每天从特定时间到特定时间每5秒运行一次
编辑:我需要下面的作业从晚上11点运行到早上5点35分,在该窗口中每5秒运行一次,每天 到目前为止,我所做的是将下面的设置为每5秒运行一次将oracle作业更改为每天从特定时间到特定时间每5秒运行一次,oracle,plsql,dbms-scheduler,Oracle,Plsql,Dbms Scheduler,编辑:我需要下面的作业从晚上11点运行到早上5点35分,在该窗口中每5秒运行一次,每天 到目前为止,我所做的是将下面的设置为每5秒运行一次 BEGIN DBMS_SCHEDULER.SET_ATTRIBUTE ( name => 'test_job', attribute => 'repeat_interval', value => 'freq=secondly;bysecond=5;' ); END; 然后是开始日期和结束日期,使其从今天晚上9点
BEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE (
name => 'test_job',
attribute => 'repeat_interval',
value => 'freq=secondly;bysecond=5;'
);
END;
然后是开始日期和结束日期,使其从今天晚上9点运行到明天上午5:35
BEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE (
name => 'test_job',
attribute => 'start_date',
value => TO_TIMESTAMP_TZ('2018-01-29 21:00:00.000000000 EUROPE/BERLIN','YYYY-MM-DD HH24:MI:SS.FF TZR')
);
END;
BEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE (
name => 'test_job',
attribute => 'end_date',
value => TO_TIMESTAMP_TZ('2018-01-30 05:35:00.000000000 EUROPE/BERLIN','YYYY-MM-DD HH24:MI:SS.FF TZR')
);
END;
现在的问题是,这将运行一次。我不知道如何在不放弃每隔5秒规则的情况下让它每天运行。我假设我可能需要使用开始日期和持续时间,而忽略结束日期来实现我的目标,尽管我不确定如何指定持续时间。下面的PL/SQL块创建了一个轻量级作业。轻量级作业必须引用程序,并且程序类型必须为“PLSQL_块”或“存储过程”。此外,创建作业时必须已启用该程序 参考样品。如果有帮助,请告诉我
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'my_lightweight_job1',
program_name => 'polling_prog_n2',
repeat_interval => 'FREQ=SECONDLY;INTERVAL=5',
end_date => '30-JAN-18 05.35.00 AM',
job_style => 'LIGHTWEIGHT',
comments => 'Job that polls device n2 every 5 seconds');
END;
/
下面的PL/SQL块创建了一个轻量级作业。轻量级作业必须引用程序,并且程序类型必须为“PLSQL_块”或“存储过程”。此外,创建作业时必须已启用该程序 参考样品。如果有帮助,请告诉我
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'my_lightweight_job1',
program_name => 'polling_prog_n2',
repeat_interval => 'FREQ=SECONDLY;INTERVAL=5',
end_date => '30-JAN-18 05.35.00 AM',
job_style => 'LIGHTWEIGHT',
comments => 'Job that polls device n2 every 5 seconds');
END;
/
您可以创建这样一个作业,调用名为
pr\u test
的存储过程,每五秒钟执行一次操作:
begin
dbms_scheduler.create_job (
job_name => 'test_job',
job_type => 'STORED_PROCEDURE',
job_action => 'pr_test',
start_date => TO_TIMESTAMP_TZ('2018-01-30 21:00:00.000000000 EUROPE/BERLIN','YYYY-MM-DD HH24:MI:SS.FF TZR'),
end_date => TO_TIMESTAMP_TZ('2018-01-30 21:00:00.000000000 EUROPE/BERLIN','YYYY-MM-DD HH24:MI:SS.FF TZR') + (17/48), -- 8.5 hours
repeat_interval => 'freq=secondly; interval=5;',
enabled => true);
end;
/
如果您希望每天运行计划程序作业,则结束时间和间隔定义(将今天的日期视为开始)更为复杂,如果没有结束日期,则此项工作将持续到第二天早上6:00:
begin
dbms_scheduler.create_job (
job_name => 'test_job',
job_type => 'STORED_PROCEDURE',
job_action => 'pr_test',
start_date => TO_TIMESTAMP_TZ('2018-01-30 21:00:00.000000000 EUROPE/BERLIN','YYYY-MM-DD HH24:MI:SS.FF TZR'),
repeat_interval => 'freq=secondly;interval=5;byhour=21,22,23,0,1,2,3,4,5;byday=tue,wed,thu,fri,sat,sun,mon;',
enabled => true);
end;
/
并且可以从该视图跟踪:
select *
from dba_scheduler_job_log l
where l.job_name = 'TEST_JOB'
order by l.log_date desc;
您可以创建这样一个作业,调用名为
pr\u test
的存储过程,每五秒钟执行一次操作:
begin
dbms_scheduler.create_job (
job_name => 'test_job',
job_type => 'STORED_PROCEDURE',
job_action => 'pr_test',
start_date => TO_TIMESTAMP_TZ('2018-01-30 21:00:00.000000000 EUROPE/BERLIN','YYYY-MM-DD HH24:MI:SS.FF TZR'),
end_date => TO_TIMESTAMP_TZ('2018-01-30 21:00:00.000000000 EUROPE/BERLIN','YYYY-MM-DD HH24:MI:SS.FF TZR') + (17/48), -- 8.5 hours
repeat_interval => 'freq=secondly; interval=5;',
enabled => true);
end;
/
如果您希望每天运行计划程序作业,则结束时间和间隔定义(将今天的日期视为开始)更为复杂,如果没有结束日期,则此项工作将持续到第二天早上6:00:
begin
dbms_scheduler.create_job (
job_name => 'test_job',
job_type => 'STORED_PROCEDURE',
job_action => 'pr_test',
start_date => TO_TIMESTAMP_TZ('2018-01-30 21:00:00.000000000 EUROPE/BERLIN','YYYY-MM-DD HH24:MI:SS.FF TZR'),
repeat_interval => 'freq=secondly;interval=5;byhour=21,22,23,0,1,2,3,4,5;byday=tue,wed,thu,fri,sat,sun,mon;',
enabled => true);
end;
/
并且可以从该视图跟踪:
select *
from dba_scheduler_job_log l
where l.job_name = 'TEST_JOB'
order by l.log_date desc;
但这只会持续到2018-01-30 05:35:00,对吗?我需要它每天从晚上11点运行到早上5点35分,每5秒运行一次。我不确定我如何才能做到这一点,或者是否真的做到了possible@GomuGomuZoro是的,准确地说,这一直持续到2018-01-30 05:35:00。请更新您的问题以包括每日选项。顺便说一下,在这种情况下,end_date参数将是无意义的。是的,我正在试图找出如何编辑作业,使其每天运行,而不是使用结束日期,它只运行一次。但这只会运行到2018-01-30 05:35:00,对吗?我需要它每天从晚上11点运行到早上5点35分,每5秒运行一次。我不确定我如何才能做到这一点,或者是否真的做到了possible@GomuGomuZoro是的,准确地说,这一直持续到2018-01-30 05:35:00。请更新您的问题以包括每日选项。顺便说一下,在这种情况下,end_date参数将是无意义的。是的,我正在试图找出如何编辑作业,使其每天运行,而不是使用结束日期,使其只运行一次。