Skip to content
 

New Features Oracle 11g: Scheduler und “Credentials”

Mit dem in Oracle 10g eingeführten Scheduler (der in der Datenbank, implementiert mit dem Package dbms_scheduler) ist es leicht möglich, externe Programme (z.B. OS-Scripts) zu starten. Innerhalb der Datenbank konnte aber nicht gesteuert werden, unter welchem Betriebssystembenutzer die Programme laufen. Dies konnte nur über eine Datei pro ORACLE_HOME gesteuert werden (siehe Metalink Note 391820.1) – d.h. alle externen Programme liefen immer unter dem gleichen Account.

Auch wenn es nicht im New Features Dokument steht – über das neue Objekt CREDENTIAL ist es nun in Oracle 11g einfach möglich, jedem Job (bei Bedarf) andere Usernamen/Passwort-Kombinationen zuzuweisen.

Beispiel:

Anlegen der Credentials mit dem Namen “JOB_USER” und dem Usernamen job
:

BEGIN
 DBMS_SCHEDULER.CREATE_CREDENTIAL(
   credential_name       => 'JOB_USER', 
   username              => 'job',
   password              => 'secretpwd');
END;
/

Benutzen der Credentials beim Anlegen eines Jobs:

BEGIN
  DBMS_SCHEDULER.CREATE_JOB(
   job_name             => 'EXTERNAL_JOB_TEST1',
   job_type             => 'EXECUTABLE',
   job_action           => '/home/job/ext_job.sh',
   enabled              => FALSE);
 
  -- hier werden die Credentials benutzt --
  DBMS_SCHEDULER.SET_ATTRIBUTE(
   name                  => 'EXTERNAL_JOB_TEST1',
   attribute             => 'credential_name', 
   VALUE                 => 'JOB_USER');
 
  DBMS_SCHEDULER.SET_ATTRIBUTE(
   name                  => 'EXTERNAL_JOB_TEST1',
   attribute             => 'destination', 
   VALUE                 => 'server.company.com:12345');
 
  DBMS_SCHEDULER.ENABLE(
   name                  => 'EXTERNAL_JOB_TEST1');
 
END;
/

Dies ist gleichzeitig ein Beispiel, wie externe Programme auch auf einem Remote-Rechner ausgeführt werden können (dazu gibt es mehr in unserem TechnoCircle).

Das verschlüsselte Passwort (und andere Informationen) stehen dann in der Tabelle sys.scheduler$_credential.

Leave a Reply