dba:oracle_scheduler_repeat_interval
Dies ist eine alte Version des Dokuments!
Die Oracle Repeat Interval Calendar Syntax nutzen
Scheduler Calendaring Syntax verwenden.
Bei DBMS_SCHEDULER.create_schedule kann ein Zeitintervall angegeben werden.
Die Syntax ist recht komplex siehe dazu die orginal Dokumentatorin unter ⇒http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_sched.htm#ARPLS72273 ( nach repeat_interval suchen), für 12c siehe https://docs.oracle.com/en/database/oracle/oracle-database/12.2/admin/scheduling-jobs-with-oracle-scheduler.html#GUID-10B1E444-8330-4EC9-85F8-9428D749F7D5
Beispiele:
Regel | Bedeutung |
---|---|
FREQ=hourly;BYMINUTE=0 | stündlich aufrufen |
FREQ=MINUTELY; INTERVAL=15 | alle 15 Minuten aufrufen |
FREQ=WEEKLY; BYDAY=MON | Jeden Montag aufrufen |
FREQ=WEEKLY; BYDAY=Mon;BYHOUR=2;BYMINUTE=30;BYSECOND=0 | Jeden Montag um 2:30:00 aufrufen |
Der Calender Ausdruck kann mit DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING getestet werden.
DECLARE v_next_run_date TIMESTAMP; v_start_date TIMESTAMP:=systimestamp; v_return_date_after TIMESTAMP BEGIN FOR i IN 1 ..10 loop DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING( calendar_string => 'FREQ=MINUTELY; INTERVAL=15' , start_date => v_start_date , return_date_after => v_return_date_after , next_run_date => v_next_run_date); DBMS_OUTPUT.PUT_LINE('-- Info actual date :: '||to_char(v_start_date,'dd.mm.yyyy hh24:mi')|| ' --> next_run_date:: '||to_char(v_next_run_date,'dd.mm.yyyy hh24:mi') ); v_return_date_after := v_next_run_date; END loop; END; / -- Info actual date :: 16.01.2015 19:19 --> next_run_date:: 16.01.2015 19:34 -- als Funktion CREATE OR REPLACE FUNCTION getNextRunDate(p_calendar_string varchar2 ,p_start_date TIMESTAMP WITH TIME ZONE DEFAULT systimestamp ,p_return_date_after TIMESTAMP WITH TIME ZONE DEFAULT systimestamp) RETURN DATE IS v_next_run_date TIMESTAMP WITH TIME ZONE; BEGIN dbms_scheduler.EVALUATE_CALENDAR_STRING(calendar_string => p_calendar_string ,start_date => p_start_date ,return_date_after => p_return_date_after ,next_run_date => v_next_run_date); RETURN v_next_run_date; END; / -- abfragen über alle Jobs wann die Jobs das nächste mal und das übernächste mal laufen würden: SELECT js.job_name , JS.REPEAT_INTERVAL , js.next_run_date , getNextRunDate(JS.REPEAT_INTERVAL,js.next_run_date,js.next_run_date) AS over_next_run_date , js.state||' - '||js.job_action AS job_info FROM dba_scheduler_jobs js , dba_objects o WHERE js.owner = o.owner(+) AND js.job_name = o.OBJECT_NAME(+) AND js.owner != 'SYS' /
Nachträglich ändern:
BEGIN DBMS_SCHEDULER.SET_ATTRIBUTE ( name => 'CHECK_LONG_RUNNING_TIMEPLAN' , attribute => 'repeat_interval' , VALUE => 'FREQ=MINUTELY; INTERVAL=15'); END; / SELECT * FROM dba_scheduler_schedules WHERE schedule_name = 'DBA_TIMEPLAN' /
Quellen
dba/oracle_scheduler_repeat_interval.1533112160.txt.gz · Zuletzt geändert: 2018/08/01 10:29 von gpipperr