===== 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#;
{{ :dba:dbms_job_to_dbms_schedule_19c.jpg | 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 => [[dba:oracle_scheduler|Der Oracle Job Scheduler 10g/11g/12c/18c/19c]] .
----
==== Quellen ====
Web:
* https://www.dbconcepts.at/oracle-19c-dbms_job-konvertierung/