Inhaltsverzeichnis

Oracle DBMS_JOB Migration nach Scheduler in Oracle 19c

19c

Ab der Version 19c ist DMBS_JOB entgültig Geschichte, bereits seit der Version 12.2.0.1 ist ja das Package als „deprecated“ dokumentiert.

Wird nun in 19c eine Job über DBMS_JOB anleget wird im Hintergrund immer ein Oracle Scheduler Job erzeugt.

Der DBMS_JOB ist dann zwar in den „alten“ Job Views als solcher sichtbar, wird aber nur über die Tabelle „SYS.SCHEDULER$_DBMSJOB_MAP“ auf den den eigentlichen Scheduler Job gematched.

Das ist auch in DD VIEW DBA_JOBS ersichtlich:

...
  FROM
    sys.scheduler$_dbmsjob_map m
    LEFT OUTER JOIN sys.obj$ o ON (o.name = m.job_name)
    LEFT OUTER JOIN sys.user$ u ON (u.name = m.job_owner)
    LEFT OUTER JOIN sys.scheduler$_job j ON (j.obj# = o.obj#)
  WHERE
    o.owner# = u.user#;

 19c DMBS_JOB DBMS_SCHEDULE


Upgrade Verhalten

Wird ein Datenbank nach 19c migriert werden damit automatisch alle diese Jobs umgestellt.

Hier ist beim Upgrade aber folgende Info zu beachten ⇒ https://mikedietrichde.com/2020/05/21/dbms_job-one-off-patch-needed-for-oracle-19-3-0-19-7-0/ und Support Note: 2645984.1 – Delete On SYS.SCHEDULER$_DBMSJOB_MAP Causing Row Locks .

NLS Einstellungen explizit auf den Job einstellen, falls diese nicht gleich der DB Standard Einstellungen sind!

Wie:

BEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE (
    name          => 'GPI.DB_TRANS_JOB'
   ,attribute     => 'NLS_ENV'
   ,VALUE          => q'[
      NLS_LANGUAGE='GERMAN' 
	  NLS_TERRITORY='GERMANY' 
	  NLS_CURRENCY=''
	  NLS_ISO_CURRENCY='GERMANY' 
	  NLS_NUMERIC_CHARACTERS=',.'
          NLS_DATE_FORMAT='DD.MM.YYY' 
	  NLS_DATE_LANGUAGE='GERMAN'
	  NLS_SORT='XGERMAN'
   ]'
);
END;

Mehr zu Oracle Scheduler

Mehr zu dem Thema ⇒ Der Oracle Job Scheduler 10g/11g/12c/18c/19c .


Quellen

Web: