创建每天运行的oracle计划程序作业
我想创建oracle调度程序作业,该作业每天在创建每天运行的oracle计划程序作业,oracle,scheduled-tasks,job-scheduling,dbms-scheduler,Oracle,Scheduled Tasks,Job Scheduling,Dbms Scheduler,我想创建oracle调度程序作业,该作业每天在20:00运行30分钟。此作业将删除KPI_日志表中的行,因为此表包含大量数据,并且会继续增长。我已经在oracle sql developer中为此类作业创建了以下脚本,但不确定这是否正确,因为我不熟悉调度程序作业概念 BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => '"RATOR_MONITORING"."CROP_KPI_LOGS"',
20:00
运行30分钟。此作业将删除KPI_日志
表中的行,因为此表包含大量数据,并且会继续增长。我已经在oracle sql developer中为此类作业创建了以下脚本,但不确定这是否正确,因为我不熟悉调度程序作业概念
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => '"RATOR_MONITORING"."CROP_KPI_LOGS"',
job_type => 'PLSQL_BLOCK',
job_action => 'DELETE FROM KPI_LOGS WHERE CAST(TIMESTAMP AS DATE) < (SYSDATE - 28);',
number_of_arguments => 0,
start_date => NULL,
repeat_interval => 'FREQ=DAILY;INTERVAL=30',
end_date => NULL,
enabled => FALSE,
auto_drop => FALSE,
comments => 'CROP_KPI_LOGS');
DBMS_SCHEDULER.SET_ATTRIBUTE(
name => '"RATOR_MONITORING"."CROP_KPI_LOGS"',
attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_OFF);
DBMS_SCHEDULER.enable(
name => '"RATOR_MONITORING"."CROP_KPI_LOGS"');
END;
开始
DBMS_调度程序。创建_作业(
作业\u名称=>''RATOR\u MONITORING'、'CROP\u KPI\u LOGS',
作业类型=>PLSQL\U块,
job_action=>“从KPI_日志中删除,其中CAST(时间戳为日期)<(SYSDATE-28);”,
参数的数量=>0,
开始日期=>NULL,
重复\u interval=>“FREQ=DAILY;interval=30”,
结束日期=>NULL,
enabled=>FALSE,
自动下降=>错误,
注释=>“裁剪KPI日志”);
DBMS_调度程序。设置_属性(
name=>““操作器监视”“裁剪KPI日志”,
属性=>'logging\u level',值=>DBMS\u调度程序。logging\u OFF);
DBMS_SCHEDULER.enable(
name=>““操作器监视”“裁剪KPI日志””;
结束;
repeat\u internal不正确,您的软件将每30天运行一次。每天晚上8点跑步去
FREQ=DAILY; BYHOUR=20
您不能指定它将运行多长时间,它将花费您的DELETE语句所花费的时间。您所说的“运行30分钟”是什么意思?正常情况下,作业将运行所需的时间,以便运行
delete
语句。如果delete
语句耗时超过30分钟,您希望发生什么?您是否希望终止该工作,并将该声明迄今为止所做的工作回滚?是否希望作业在30分钟内删除尽可能多的内容,然后在窗口结束时停止?还有别的吗?谢谢这对我有用。就在oracle sql developer中,它也要求BYDAY,所以我给出了BYDAY=MON、TUE、WED、THU、FRI、SAT、SUN,并且它也可以工作:)