Benutzer-Werkzeuge

Webseiten-Werkzeuge


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:

RegelBedeutung
FREQ=hourly;BYMINUTE=0stündlich aufrufen
FREQ=MINUTELY; INTERVAL=15alle 15 Minuten aufrufen
FREQ=WEEKLY; BYDAY=MONJeden 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

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
dba/oracle_scheduler_repeat_interval.1533112160.txt.gz · Zuletzt geändert: 2018/08/01 10:29 von gpipperr