Die Einrichtung von Datenbank-Backups mit RMAN ist einfach. Aber welchen Scheduler nutzt man im besten Fall? Alle Betriebssysteme, 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 automatisieren kannst. Er bietet eine Reihe von Funktionen zum Erstellen, Verwalten und Ausführen von Jobs, die aus PL/SQL-Prozeduren, Skripten oder externen Programmen bestehen können.
Die Vorteile des Tools sind klar:
Aber wie kannst du nun den DBMS_SCHEDULER für deine Backups nutzen? Wir haben einen Drei Punkte Plan für dich zusammengestellt:
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;
/
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;
/
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>;
Zusammenfassend lässt sich sagen, dass der DBMS_SCHEDULER ein leistungsstarkes Tool für die Automatisierung von Datenbank-Backups und anderen zeitkritischen Aufgaben sein kann. Unabhängig von der Aufgabenverwaltung eines Betriebssystems ist es somit möglich, Backups sorgenfrei laufen zu lassen und damit die Datensicherheit und ‑verfügbarkeit in deiner Umgebung zu verbessern.
Leider gibt es eine Einschränkung: Eine physische Standby-Datenbank hat kein aktives Scheduler-System. Will man hierbei Backups ressourcenschonend von der Datenbankkopie laufen lassen, muss man von Skripten und der systemeigenen Aufgabenplanung Gebrauch machen.
Hier findest du weitere Features und Infos aus der Welt von Oracle aus unserem News & Insights Bereich. Wichtige Lizenzierungsinfos rund um RMAN Repository und Oracle Secure Backup findest du auf unserer Datenbank-Lizenzen-Seite.
Share this article