AWS RDS ORACLE SCHEDULER JOB运行一小时以上

问题描述 投票:-1回答:1

出于今天的某些原因,我的所有调度程序作业都在调度前一个小时运行:

BEGIN 
dbms_scheduler.create_job('"JOB_EXTRACAO_LOOK_11_20"',
job_type=>'PLSQL_BLOCK', job_action=>
'DECLARE
 V_ID_REGIAO VARCHAR2(3) := ''GYN'';
BEGIN
    IF V_ID_REGIAO = 'GYN' THEN
       PRC_RESULTADO_TRADICIONAL (V_ID_REGIAO);
    END IF;
END;'
, number_of_arguments=>0,
start_date=>TO_TIMESTAMP_TZ('03-NOV-2019 01.44.54.970684000 PM AMERICA/SAO_PAULO','DD-MON-RRRR HH.MI.SSXFF AM TZR','NLS_DATE_LANGUAGE=english'), repeat_interval=> 
'FREQ=DAILY;BYHOUR=13;BYMINUTE=46;BYSECOND=0'
, end_date=>NULL,
job_class=>'"DEFAULT_JOB_CLASS"', enabled=>FALSE, auto_drop=>FALSE,comments=>
'Resultado automatico da extração 11:20 LOOK'
);
dbms_scheduler.set_attribute('"JOB_EXTRACAO_LOOK_11_20"','job_priority',1);
sys.dbms_scheduler.set_attribute('"JOB_EXTRACAO_LOOK_11_20"','NLS_ENV','NLS_LANGUAGE=''AMERICAN'' NLS_TERRITORY=''AMERICA'' NLS_CURRENCY=''$'' NLS_ISO_CURRENCY=''AMERICA'' NLS_NUMERIC_CHARACTERS=''.,'' NLS_CALENDAR=''GREGORIAN'' NLS_DATE_FORMAT=''DD-MON-RR'' NLS_DATE_LANGUAGE=''AMERICAN'' NLS_SORT=''BINARY'' NLS_TIME_FORMAT=''HH.MI.SSXFF AM'' NLS_TIMESTAMP_FORMAT=''DD-MON-RR HH.MI.SSXFF AM'' NLS_TIME_TZ_FORMAT=''HH.MI.SSXFF AM TZR'' NLS_TIMESTAMP_TZ_FORMAT=''DD-MON-RR HH.MI.SSXFF AM TZR'' NLS_DUAL_CURRENCY=''$'' NLS_COMP=''BINARY'' NLS_LENGTH_SEMANTICS=''BYTE'' NLS_NCHAR_CONV_EXCP=''FALSE''');
dbms_scheduler.enable('"JOB_EXTRACAO_LOOK_11_20"');
COMMIT; 
END; 

Job runs one hour earlier

计划的日志

LOG_ID          116672  
LOG_DATE        03-NOV-19 12.46.02.336034000 PM -03:00  
OWNER           ADMIN   
JOB_NAME        JOB_EXTRACAO_LOOK_11_20     
JOB_SUBNAME     (null)
STATUS          FAILED  
ERRO#           1403    
REQ_START_DATE      03-NOV-19 01.46.00.974251000 PM AMERICA/SAO_PAULO   
ACTUAL_START_DATE   03-NOV-19 01.46.01.107522000 PM AMERICA/SAO_PAULO

TIMEZONES配置

TIMESTAMP WITH TIME ZONE = 2019-11-03 12:46:29 -03:00
TIMESTAMP NO TIME ZONE = 2019-11-03 12:46:29 +00:00
AUTO_CONVERTION = 2019-11-03 12:46:29 AMERICA/SAO_PAULO
DBA_SCHEDULER_GLOBAL_ATTRIBUTE = DEFAULT_TIMEZONE -3:00
SESSION TIME ZONE =  America/Sao_Paulo
oracle amazon-web-services scheduler jobs rds
1个回答
1
投票
好的解决方法是

BEGIN FOR C1 IN (Select JOB_NAME from user_scheduler_jobs where STATE != 'DISABLED' ORDER BY JOB_NAME) LOOP DBMS_SCHEDULER.SET_ATTRIBUTE( name => C1.JOB_NAME, attribute => 'START_DATE', value => SYSTIMESTAMP AT TIME ZONE '-3:00'); END LOOP; END;

它将使调度程序忽略区域DST
© www.soinside.com 2019 - 2024. All rights reserved.