6.修改scheduler.repeat_interval属性
job_name = MY_JOB1 exec DBMS_SCHEDULER.SET_ATTRIBUTE (name => 'MY_JOB1',attribute => 'repeat_interval',value => 'FREQ=HOURLY; INTERVAL=4'); sys@R2> exec DBMS_SCHEDULER.SET_ATTRIBUTE (name => 'MY_JOB1',attribute => 'repeat_interval',value => 'FREQ=HOURLY; INTERVAL=4'); BEGIN DBMS_SCHEDULER.SET_ATTRIBUTE (name => 'MY_JOB1',attribute => 'repeat_interval',value => 'FREQ=HOURLY; INTERVAL=4'); END; * ERROR at line 1: ORA-27488: unable to set REPEAT_INTERVAL because SCHEDULE_NAME, EVENT_SPEC was/were already set ORA-06512: at "SYS.DBMS_ISCHED", line 4426 ORA-06512: at "SYS.DBMS_SCHEDULER", line 2861 ORA-06512: at line 1 col PROGRAM_NAME for a50 col JOB_NAME for a30 col PROGRAM_NAME for a50 col job_action for a50 select OWNER,JOB_NAME,JOB_CREATOR,PROGRAM_OWNER,SCHEDULE_OWNER,SCHEDULE_NAME,SCHEDULE_TYPE,PROGRAM_NAME ,job_action,REPEAT_INTERVAL from dba_scheduler_jobs where upper(job_name)='&1' ; Enter value for 1: MY_JOB1 old 1: select OWNER,JOB_NAME,JOB_CREATOR,PROGRAM_OWNER,SCHEDULE_OWNER,SCHEDULE_NAME,SCHEDULE_TYPE,PROGRAM_NAME ,job_action,REPEAT_INTERVAL from dba_scheduler_jobs where upper(job_name)='&1' new 1: select OWNER,JOB_NAME,JOB_CREATOR,PROGRAM_OWNER,SCHEDULE_OWNER,SCHEDULE_NAME,SCHEDULE_TYPE,PROGRAM_NAME ,job_action,REPEAT_INTERVAL from dba_scheduler_jobs where upper(job_name)='MY_JOB1' OWNER JOB_NAME JOB_CREATOR PROGRAM_OWN SCHEDULE_OWNER SCHEDULE_NAME SCHEDULE_TYPE PROGRAM_NAME JOB_ACTION REPEAT_INTERVAL --------------- ------------------------------ ----------- ----------- -------------- --------------- ------------- -------------------------------------------------- -------------------------------------------------- ---------------------- SYS MY_JOB1 SYS SYS SYS DAY_WIN WINDOW MY_PRO1 a) disable it exec dbms_scheduler.disable('MY_JOB1'); b) unschedule it (you are changing the schedule) exec dbms_scheduler.set_attribute_null('MY_JOB1','DAY_WIN'); ORA-27469: DAY_WIN is not a valid job attribute ORA-06512: at "SYS.DBMS_ISCHED", line 4370 ORA-06512: at "SYS.DBMS_SCHEDULER", line 2905 ORA-06512: at "SYS.DBMS_SCHEDULER", line 3028 ORA-06512: at line 1 repeat_interval sys@R2> exec dbms_scheduler.SET_ATTRIBUTE_NULL('MY_JOB1','SCHEDULE_NAME'); /* SCHEDULE_NAME 字段名 */ PL/SQL procedure successfully completed. c) custom schedule it exec DBMS_SCHEDULER.SET_ATTRIBUTE ( name => 'MY_JOB1', attribute => 'repeat_interval', value => 'freq=daily;byday=FRI,SAT;byhour=20;byminute=0; bysecond=0'); d) enable it exec dbms_scheduler.enable( 'MY_JOB1' ); https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:652425700346984666 from ask tom : How to change the auto stats collection job (GATHER_STATS_JOB) in 10GR2? It is created and scheduled by default to run at 10PM, we like to schedule it to run at different time, say 8PM on Friday and Saturday. I tried this BEGIN DBMS_SCHEDULER.SET_ATTRIBUTE ( name => 'GATHER_STATS_JOB', attribute => 'repeat_interval', value => 'freq=daily;byday=FRI,SAT;byhour=20;byminute=0; bysecond=0'); END; / and get error: ORA-27488: unable to set REPEAT_INTERVAL because SCHEDULE_NAME, EVENT_SPEC was/were already set ORA-06512: at "SYS.DBMS_ISCHED", line 2834 ORA-06512: at "SYS.DBMS_SCHEDULER", line 1847 ORA-06512: at line 2 What else I need to do to chenge it? Thanks in advance. and we said... You want to a) disable it b) unschedule it (you are changing the schedule) c) custom schedule it d) enable it sys%ORA10GR2> exec dbms_scheduler.disable( 'GATHER_STATS_JOB' ); PL/SQL procedure successfully completed. sys%ORA10GR2> exec dbms_scheduler.set_attribute_null('gather_stats_job','schedule_name'); PL/SQL procedure successfully completed. sys%ORA10GR2> exec DBMS_SCHEDULER.SET_ATTRIBUTE ( name => 'GATHER_STATS_JOB', attribute => 'repeat_interval', value => 'freq=daily;byday=FRI,SAT;byhour=20;byminute=0; bysecond=0'); PL/SQL procedure successfully completed. sys%ORA10GR2> exec dbms_scheduler.enable( 'GATHER_STATS_JOB' ); PL/SQL procedure successfully completed.