【发布时间】:2021-12-05 09:41:37
【问题描述】:
我有一个在早上 5 点运行的 oracle dbms 计划作业。服务器在凌晨 4 点关闭,并在早上 6 点恢复。服务器和数据库一上线,早上 5 点的作业就自动开始了。我怎样才能防止这种情况?我要设置结束日期吗? 更新了
BEGIN
SYS.DBMS_SCHEDULER.CREATE_JOB
(
job_name => 'SYSTEM.DAILY_JOB'
,start_date => TO_TIMESTAMP_TZ('2021/04/09 03:00:00.000000 +00:00','yyyy/mm/dd hh24:mi:ss.ff tzh:tzm')
,repeat_interval => 'FREQ=DAILY;INTERVAL=1'
,end_date => NULL
,job_class => 'DEFAULT_JOB_CLASS'
,job_type => 'PLSQL_BLOCK'
,job_action => 'SOME JOB'
,comments => 'NA'
);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'SYSTEM.DAILY_JOB'
,attribute => 'RESTARTABLE'
,value => FALSE);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'SYSTEM.DAILY_JOB'
,attribute => 'LOGGING_LEVEL'
,value => SYS.DBMS_SCHEDULER.LOGGING_OFF);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL
( name => 'SYSTEM.DAILY_JOB'
,attribute => 'MAX_FAILURES');
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL
( name => 'SYSTEM.DAILY_JOB'
,attribute => 'MAX_RUNS');
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'SYSTEM.DAILY_JOB'
,attribute => 'STOP_ON_WINDOW_CLOSE'
,value => FALSE);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'SYSTEM.DAILY_JOB'
,attribute => 'JOB_PRIORITY'
,value => 3);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL
( name => 'SYSTEM.DAILY_JOB'
,attribute => 'SCHEDULE_LIMIT');
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'SYSTEM.DAILY_JOB'
,attribute => 'AUTO_DROP'
,value => FALSE);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'SYSTEM.DAILY_JOB'
,attribute => 'RESTART_ON_RECOVERY'
,value => FALSE);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'SYSTEM.DAILY_JOB'
,attribute => 'RESTART_ON_FAILURE'
,value => FALSE);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'SYSTEM.DAILY_JOB'
,attribute => 'STORE_OUTPUT'
,value => TRUE);
SYS.DBMS_SCHEDULER.ENABLE
(name => 'SYSTEM.DAILY_JOB');
END;
/
【问题讨论】:
-
SYSTEM 用户下的所有作业 - 创建这些作业的位置都设置为 RESTART_ON_RECOVERY 的“FALSE”。为什么还是重启?
-
您是否考虑了作业开始的时间(当您使用 to_timestamp_tz 时)。您使用的是哪个版本的 Oracle?
-
我用关闭数据库的例子更新了下面的帖子
-
我使用的是 12.2.0.1
-
它计划每天在设定的时间运行
标签: oracle dbms-scheduler