Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建每天运行的oracle计划程序作业_Oracle_Scheduled Tasks_Job Scheduling_Dbms Scheduler - Fatal编程技术网

创建每天运行的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"',

我想创建oracle调度程序作业,该作业每天在
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,并且它也可以工作:)