Wer eine Lösung sucht um bei Oracle 10 – Backups z.B. Lizenzkosten für den Sicherungsagenten zu sparen könnte sich ggf. mit nachfolgender Lösung anfreunden.
Listpreise für EMC Networker module for Oracle / Stand Mai 2008:
- Linux: 1.479€
- Windows: 1.709€
- Unix: 8.304€
Ziel
- ein Vollbackup auf Disk soll jederzeit verfügbar sein
- die Sicherung soll online durchgeführt werden, also ohne DB-Shutdown
- möglichst kurze Sicherungszeit
- Archivelogs werden noch jedem Vollbackup aufgeräumt
- o.g. DB-Backup wird mit herkömmlicher Filesystemsicherung auf Tape abgezogen und x Tage aufbewahrt
Vorgehensweise
Prüfen, ob Block change tracking eingeschaltet ist:
oragridctl@server:~> sqlplus ‘/ as sysdba’
SQL*Plus: Release 10.2.0.3.0 – Production on Tue Jul 1 18:43:33 2008
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Verbunden mit:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 – 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL> select status from v$block_change_tracking;
STATUS
———-
ENABLED
Ansonsten Block Change Tracking einschalten:
SQL> alter database enable block change tracking using file ‘/oradata/backup/griddb/blkchangetrck_rman.f’;
RMAN-Voreinstellungen prüfen:
oragridctl@server:~> rman target=/
Recovery Manager: Release 10.2.0.3.0 – Production on Tue Jul 1 18:49:03 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: GRIDDB (DBID=2069196047)
RMAN> show all;
using target database control file instead of recovery catalog
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘/oradata/backup/griddb/%F’;
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COPY PARALLELISM 1;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT ‘/oradata/backup/griddb/%U’;
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM ‘AES128′; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO ‘/oraapps/griddb/dbs/snapcf_griddb.f’; # default
Backupskript /nsr/scripts/backup_griddb.sh erstellen:
#/bin/bash
echo “***************************”
echo “Backup der GRIDDB-Datenbank”
echo “***************************”
# Umgebung setzen
PATH=/oraapps/griddb/bin/:$PATH
ORACLE_HOME=/oraapps/griddb
ORACLE_SID=griddb
JAVA_HOME=$ORACLE_HOME/jdk
NLS_DATE_FORMAT=’DD.MM.YYYY HH24:MI:SS’
export PATH ORACLE_HOME ORACLE_SID JAVA_HOME NLS_DATE_FORMAT
# rman-Skript starten
rman target=/<<EOF
# Aus Performance-Gruenden unter Oracle 10.2.x Optimizer umstellen
sql “alter session set optimizer_mode=rule”;
# Einstellungen setzen
CONFIGURE CONTROLFILE AUTOBACKUP ON;
# Einstellungen anzeigen
show all;
# inkrementell aktualisiertes Backup auf Disk starten
RECOVER COPY OF DATABASE WITH TAG ‘incr_update’;
BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG ‘incr_update’ DATABASE;
# Aufraeumen
report obsolete;
delete noprompt obsolete;
# verfuegbare Backups anzeigen
list backup summary;
list backup;
# verfuegbare Kopien anzeigen
list tag ‘incr_update’ copy;
# Inkarnation anzeigen
list incarnation;
# rman-Skript beenden
quit
EOF
echo “***************************”
# Log per Mail verschicken
mail -s “Backup GRIDDB” “backuplogs@xyz.de” < /nsr/applogs/backup_griddb.log
cron-Job einrichten:
oragridctl@server:~> crontab -e
# * * * * * command to be executed
# - - - - -
# | | | | |
# | | | | +—– day of week (0 – 6) (Sunday=0)
# | | | +——- month (1 – 12)
# | | +——— day of month (1 – 31)
# | +———– hour (0 – 23)
# +————- min (0 – 59)
# Backup GRIDDB
0 21 * * * /nsr/scripts/backup_griddb.sh > /nsr/applogs/backup_griddb.log
Beispiel-Log der Sicherung: backup-log
Filesystem-Sicherung einrichten (Bsp. EMC Networker):
Backup-Client erstellen, dabei Gruppe zuweisen, Browse/Retention-Policy, Paralelism und Directive
Die Directive muß noch erstellt werden. Hier werden alle Files ausgeklammert, die nicht gesichert werden sollen:
<< /oradata >>
+skip: *.dbf
+skip: control*.ctl redo*.log
<< /oradata/backup/griddb >>
logasm: blkchangetrck_rman.f
<< /oraapps/gridapps/oms10g/j2ee/OC4J_EM/log >>
+logasm: .?* *
<< /oraapps/gridapps/oms10g/Apache/Apache/logs >>
+logasm: .?* *
<< /oraapps/gridapps/oms10g/j2ee/OC4J_EMPROV/log >>
+logasm: .?* *
<< /oraapps/gridapps/oms10g/j2ee/home/log >>
+logasm: .?* *
<< /oraapps/gridapps/oms10g/webcache/logs >>
+logasm: .?* *
<< /oraapps/griddb/network/log >>
+logasm: .?* *
<< /usr/local/nagios/var >>
+logasm: .?* *
<< / >>
skip: mnt
+skip: core
<< /tmp >>
skip: .?* *
<< /nsr >>
allow
<< /nsr/logs >>
logasm: .
<< /var >>
+logasm: .?* *
<< /var/crash >>
forget
+skip: .?* *
<< /var/mail >>
forget
+mailasm: .?* *
<< /var/spool/mail >>
forget
+mailasm: .?* *
<< /dev/ >>
+skip: .?* *
<< /sys/ >>
+skip: .?* *
<< /proc/ >>
+skip: .?* *
Funktionsweise
- Jede Nacht um 21:00 wird per cron das Backup-Skript gestartet
- Beim ersten Aufruf wird festgestellt, daß noch keine Level 0 Sicherung erstellt wurde und diese somit erzwungen
- Beim zweiten Aufruf wird erstmals eine Level 1 Sicherung erstellt
- Ab dem dritten Aufruf wird die vorhergehende Level 1 Sicherung mit der Level 0 Sicherung verschmolzen
- Nach der DB-Sicherung werden überflüssige Sicherungen aufgeräumt
- Per Backup-Software wird das Filesystem anschließend auf Tape gesichert (die offenen Dateien der DB werden dabei ausgeschlossen)
Restore/Recover
- für länger zurück liegende Backups muß erst der gewünschte Stand vom Band zurückgesichert werden, anschließend die DB herunterfahren, Controlfile aus Sicherung zurückkopieren und Restore starten, ggf. Archivelogs nachfahren
- der letzte Stand der Sicherung steht für ein restore immer auf Disk bereit
empfohlene Lektüre
Oracle Database 10g / RMAN Backup & Recovery von Oracle Press