oracle11g – 如何安全地安排Oracle dbms_scheduler作业时区和DS
我正在尝试设置一个DBMS_SCHEDULER作业,以便在每年1月1日凌晨1点在Oracle 11g上运行.如何设置其属性以确保它不会在错误的时间执行,因为时区差异或夏令时.
我花了很多时间浏览Oracle文档,但我还没有达到确定性水平. 顺便说一句,以下是我发现并考虑与该主题相关的规则: 工作属性 start_date此属性指定计划启动此作业的第一个日期.如果start_date和repeat_interval保留为null,则作业将在计划启动后立即运行. repeat_interval此属性指定作业重复的频率.您可以使用日历或PL / SQL表达式指定重复间隔. Calendaring语法中的规则 >日历语法不允许您指定时区. 解决方法我不确定这个答案是否真的通过了这个网站上的答案规则,但是在花了很多时间用谷歌搜索后我想出了以下解决方案:start_date => CAST(trunc(sysdate,'YEAR')+2/24 AS TIMESTAMP) at time zone 'Europe/Berlin' 我相信这是最接近最安全的解决方案,因为: >它使用时间戳而不是日期 – 我相信它会强制在给定时区内在给定时间内真正执行作业,同时忽略DMBS_SCHEDULER default_timezone.我还发现了一些建议,说直接使用时间戳也是不安全的,只有这个演员才是安全的 我对这个解决方案感到更满意,如果我完全清楚当作业实际执行的时间与服务器的本地时间,SESSIONTIMEZONE,DBTIMEZONE,start_date时区和DBMS_SCHEDULER时区有关. 我对时区规范也不满意,因为它有4个与它相关的缩写–LMT,CET,CEST,CEMT,其中CEST在我看来是完全错误的.我的目标是使用CET和夏令时(冬天!=夏天). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |