News zu Oracle

DBA Tipp: Drei Punkte Plan, um den DBMS_SCHEDULER für Backups zu nutzen

Die Ein­rich­tung von Datenbank-Backups mit RMAN ist einfach. Aber welchen Scheduler nutzt man im besten Fall? Alle Be­triebs­sys­te­me, seien es Windows mit den “Geplanten Tasks” oder Linux mit dem “crontab”-System bieten hierfür eine Lösung: den “DBMS_SCHEDULER”. 

Der DBMS_SCHEDULER ist ein Paket in Oracle Database (seit Version 12.1), mit dem du Aufgaben planen und au­to­ma­ti­sie­ren kannst. Er bietet eine Reihe von Funk­tio­nen zum Erstellen, Verwalten und Ausführen von Jobs, die aus PL/SQL-Pro­ze­du­ren, Skripten oder externen Pro­gram­men bestehen können.

Wie du den DBMS_SCHEDULER für deine Backups nutzt

Die Vorteile des Tools sind klar:

  • Planung von Aufgaben: 
    Du kannst Jobs so planen, dass sie zu be­stimm­ten Zeiten oder in In­ter­val­len aus­ge­führt werden, etwa täglich, wö­chent­lich oder monatlich.

  • Au­to­ma­ti­sie­rung von Aufgaben:
    Du kannst Aufgaben au­to­ma­ti­sie­ren, die sonst manuell aus­ge­führt werden müssten, wie eben bei­spiels­wei­se Da­ten­si­che­run­gen, aber auch die Be­rei­ni­gung von Daten oder das Senden von Berichten.

  • Ver­bes­ser­te Zu­ver­läs­sig­keit:
    Der DBMS_SCHEDULER kann fehl­ge­schla­ge­ne Jobs neu starten.

  • Erhöhte Effizienz:
    Der DBMS_SCHEDULER kann dazu beitragen, die Effizienz deiner Datenbank zu ver­bes­sern, indem er zeit­auf­wän­di­ge Aufgaben au­to­ma­ti­siert und die Ar­beits­last auf dem System verteilt.

Aber wie kannst du nun den DBMS_SCHEDULER für deine Backups nutzen? Wir haben einen Drei Punkte Plan für dich zusammengestellt:

1. Cre­den­ti­als anlegen

    begin
      -- create the credential for operating system access
      dbms_credential.create_credential(credential_name => 'OS_CREDENTIAL',
                                        username        => 'oracle',
                                        password        => 'oracle',
                                        enabled         => true,
                                        comments        => 'OS credentials for backup jobs');

      -- create credential to provide RMAN with database access
      dbms_credential.create_credential(credential_name => 'DB_CREDENTIAL',
                                        username        => 'sys',
                                        password        => 'oracle',
                                        database_role   => 'sysdba',
                                        enabled         => true,
                                        comments        => 'DB credentials for backup jobs');
      end;
      /

2. Backup – Datenbank Full

    begin
      dbms_scheduler.create_job(        job_name        => 'DAILY_BACKUP_FULL',
                                        job_type        => 'BACKUP_SCRIPT',
                                        job_action      => 'run { backup check logical database plus archivelog not
                                                           backed up;' ||
                                                           'delete noprompt archivelog until time ''sysdate-1'';' ||
                                                           'delete noprompt obsolete; }',
                                        start_date      => trunc(sysdate),
                                        repeat_interval => 'freq=daily;byhour=23;byminute=00;bysecond=0',
                                        credential_name => 'OS_CREDENTIAL',
                                        enabled         => false,
                                        auto_drop       => false,
                                        comments        => 'backup job database full (daily execution)');
      -- add the db credential to the job.
      -- this can't be done in the create_job call
      dbms_scheduler.set_attribute(     name            => 'DAILY_BACKUP_FULL',
                                        attribute       => 'CONNECT_CREDENTIAL_NAME',
                                        value           => 'DB_CREDENTIAL');
      -- after enabling the job, backups are made according to the schedule
      dbms_scheduler.enable(            name            => 'DAILY_BACKUP_FULL');
    end;
    /

3. Logging und Fehlersuche

set linesize 10000
col job_name format a40
col schedule_name format a40
col schedule_type format a40
select job_name, start_date, next_run_date,LAST_START_DATE,LAST_RUN_DURATION from dba_scheduler_jobs where schedule_type like 'CALENDAR' and job_name like 'DAILY%';
select job_name, enabled from DBA_SCHEDULER_JOBS where job_name like 'DAILY%';

select session_key, to_char(start_time, 'DD-MON-YYYY HH24:MI:SS') START_TIME from v$rman_backup_job_details where status!='COMPLETED' order by start_time;
select output from v$rman_output where session_key=<session_key>;

Fazit

Zu­sam­men­fas­send lässt sich sagen, dass der DBMS_SCHEDULER ein leis­tungs­star­kes Tool für die Au­to­ma­ti­sie­rung von Datenbank-Backups und anderen zeit­kri­ti­schen Aufgaben sein kann. Un­ab­hän­gig von der Auf­ga­ben­ver­wal­tung eines Be­triebs­sys­tems ist es somit möglich, Backups sor­gen­frei laufen zu lassen und damit die Da­ten­si­cher­heit und ‑ver­füg­bar­keit in deiner Umgebung zu verbessern.

Leider gibt es eine Ein­schrän­kung: Eine physische Standby-Datenbank hat kein aktives Scheduler-System. Will man hierbei Backups res­sour­cen­scho­nend von der Da­ten­bank­ko­pie laufen lassen, muss man von Skripten und der sys­tem­ei­ge­nen Auf­ga­ben­pla­nung Gebrauch machen.

Hier findest du weitere Features und Infos aus der Welt von Oracle aus unserem News & Insights Bereich. Wichtige Li­zen­zie­rungs­in­fos rund um RMAN Re­po­si­to­ry und Oracle Secure Backup findest du auf unserer Datenbank-Lizenzen-Seite.

icon-arrow_right_medium-violet-blue.svg

Share this article

Facebook 
Twitter 
LinkedIn 
XING 
WhatsApp 
Email