SEP sesam Extension für Oracle

From SEPsesam
Jump to: navigation, search

Copyright © SEP AG 1999-2021. Alle Rechte vorbehalten.

Jede Form der Reproduktion der Inhalte dieses Benutzerhandbuches, ganz oder in Teilen, ist nur mit der ausdrücklichen schriftlichen Erlaubnis der SEP AG gestattet. Bei der Erstellung dieses Benutzerhandbuches wurde mit größtmöglicher Sorgfalt gearbeitet, um korrekte und fehlerfreie Informationen bereit stellen zu können. Trotzdem kann die SEP AG keine Gewähr für die Richtigkeit der Inhalte dieses Benutzerhandbuches übernehmen.


Einleitung

Das SEP sesam Online Modul für Oracle/RMAN bietet eine Media Management Library (MML) zur Datensicherung von Oracle Datenbanken auf Sesam Server. Die API der MML ist von Oracle dazu bestimmt, dem Recovery Manager (RMAN) mitzuteilen, dass die Daten an eine externe Backup Software weitergeleitet und dort gelagert werden. SEP sesam verwaltet dann das gesamte Handling von Backup-Medien wie z.B. das Laden der korrekten Bänder, während vom RMAN die Backup- und Restore-Vorgänge ausgelöst werden. Der RMAN entscheidet welche Daten gesichert oder rückgesichert werden. Dieses Dokument bietet Informationen über die Sesam-spezifischen Teile von Oracle Sicherungen. Es handelt sich hierbei nicht um ein Oracle/RMAN Administrationshandbuch. Bitte lesen Sie die RMAN Dokumentation, um sich mit Oracles Sicherungs- und Rücksicherungs- Konzepten und Tools vertraut zu machen.

Systemvoraussetzungen

  • Unterstütze Versionen
  • SEP sesam ab Version 3.4 (inkl. DB-Online-Module für Oracle 8/9/10/11/12)
  • Standard Sesam Backup Client installiert
  • Dateisystem-Sicherungen müssen mit diesem SEP sesam Client funktionieren
  • Für Oracle Online Sicherungen muss die Datenbank im Archiv-Logmodus laufen

Bitte konsultieren Sie das Oracle Administrationshandbuch. Zur Installation gehen wir von der folgenden Umgebung aus.

$ORACLE_SID=mydb
$ORACLE_BASE=/opt/oracle
$ORACLE_HOME=/opt/oracle/product/oracle
$ORACLE_HOME/bin ist im Such-Pfad (PATH-Variable)

Bitte passen Sie die Pfade und Variablen entsprechend Ihren Gegebenheiten an.

Prüfen ob die Datenbank sich im Archivelogmodus befindet

  • Starten Sie sqlplus aus der Konsole und verbinden Sie sich als sysdba auf die Datenbank:
#> sqlplus "/as sysdba"
  • Prüfen Sie ob die Archivelog funktion aktiviert ist:
#> select name, log_mode from v$database;
NAME      LOG_MODE
--------- ------------
MYDB      ARCHIVELOG

Wird hier ARCHIVELOG gezeigt so muss kein weiterer Schritt vorgenommen werden, ist hier aber NOARCHIVELOG zu sehen muss der Modus aktiviert werden:

  • Herunterfahren der Datenbank:
#> shutdown immediate;
  • Starten der Datenbank in den mount Modus:
#> startup mount;
  • Aktivieren des Archivelog-Modus:
#> alter database archivelog;
  • Datenbank öffnen:
#> alter database open;

Prüfen ob die RMAN Controlfile AUTOBACKUP Option aktiviert ist

Disaster Recovery

Diese Option sollte verwendet werden wenn es nötig ist, eine Datenbank unter Umständen auf einem anderen System wiederherzustellen.

Verwendet die Datenbank ein Controlfile um die angewendeten Sicherungen zu verwalten, sollte die Option aktiviert werden. Dies kann man mit RMAN prüfen:

RMAN> show controlfile autobackup;
RMAN configuration parameters for database with db_unique_name XE are:
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default

Um die Autobackup-Option zu aktivieren nutzen Sie:

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

Mit Aktivierung dieser Option weisen Sie RMAN an, ein zusätzliches Sicherungssaveset auf dem Backup Server zu erzeugen, welches ausschließlich das vom System verwendete Controlfile enthält.

Installation unter Linux oder UNIX

  • Zuerst stellen Sie sicher, dass der normale Sesam Backup Client bereits installiert ist.
  • Dateisystem-Sicherungen sollten von diesem Sesam Client funktionieren
  • Einloggen als Oracle-User
  • Erstellen Sie ein neues Verzeichnis namens sob in $ORACLE HOME
  • Erstellen Sie einen symbolischen Link in $ORACLE HOME/lib zum Library File libobk.so aus /opt/sesam/bin/sesam. Wenn die Datei in $ORACLE_HOME/lib bereits existiert, muss diese zuerst umbenannt werden.
oracle@oraclesrv:~> cd $ORACLE_HOME
oracle@oraclesrv:/product/oracle> mkdir sob
oracle@oraclesrv:/product/oracle> cd sob
oracle@oraclesrv:/product/oracle/sob> ln -s /opt/sesam/bin/sesam/libobk.so /product/oracle/sob/libobk.so
oracle@oraclesrv:/product/oracle/sob> ln -s /opt/sesam/bin/sesam/libobk.so /product/oracle/lib/libobk.so

(Hinweis: Ab Oracle 9i darf der Oracle-Kernel nicht mehr verlinkt werden. Dieser Schritt ist hier jedoch auch nicht beschrieben.)

Installationsverifizierung unter Linux oder UNIX

Die Installation kann nun mit dem Oracle Tool sbttest überprüft werden

oracle@oraclesrv:~/product/10g/lib> sbttest test
Die sbt Funktionshinweise werden aus der libobk.so Library geladen.
-- sbtinit erfolgreich
-- sbtinit (2nd time) erfolgreich
Hinweis: Diese SBT Library verwendet nicht SBT Version 2.0
sbtinit: Mediamanager hat Version 2.3.1.1
Return code -1 from sbtopen for output, bsercoer = 7012, bsercerrno = 0
sbtopen: Invalid argument(s)

Lassen Sie sich nicht von dem Fehler "Invalid argument(s)" verunsichern. Der Aufruf prüft nur, ob die Library erfolgreich geladen werden kann.

Installation unter Windows

  • Stellen Sie sicher, dass der normale Sesam Backup Client bereits installiert ist
  • Benennen Sie eine (möglicherweise) existierende Datei orasbt.dll im <ORACLE HOME>\bin Verzeichnis um.
  • orasbt.dll ermöglicht die Datenverschlüsselung seit der SEP sesam Version 4.4.2. Deshalb ist es notwendig die Sesam-Dateien orasbt.dll, msvcr90.dll, msvcr100.dll, cm_crypt.dll, libeay32.dll, ssleay32.dll und md5.dll aus <SESAM_INSTALL>\bin\sesam nach <ORACLE HOME>\bin zu kopieren.

Vollständiger Funktionstest über das sbttest Programm

Über das Programm sbttest können Sie die vollständige Funktionalität von libobk.so testen ohne laufende Datenbanken zu stören. sbttest ist nur vefügbar ab Oracle Version 10g unter Windows. Hierfür müssen die folgenden Umgebungsvariablen gesetzt werden:

  • SESAM_SERVER Name des SEP sesam Servers
  • SESAM_JOB Name eines bereits konfigurierten Auftrags im Sesam Server mit Auftragstyp Oracle
  • SESAM_POOL Name eines bereits konfigurierten Medienpools im Sesam Server
oracle@oraclesrv:~/product/10g/lib> export SESAM_SERVER=backsrv
oracle@oraclesrv:~/product/10g/lib> export SESAM_JOB=oracle_test
oracle@oraclesrv:~/product/10g/lib> export SESAM_POOL=DISK
oracle@oraclesrv:~/product/10g/lib> sbttest test1 -trace sbttest.log
The sbt function pointers are loaded from libobk.so library.
-- sbtinit succeeded
-- sbtinit (2nd time) succeeded
Note: This SBT library does not handle version 2.0 of SBT.
sbtinit: Media manager is version 2.3.1.1
sbtopen for output successful
sbtwrite successful, wrote 100 buffers
sbtclose successful after sbtwrite
sbtinfo successful
file t1 is on volume 5:3
sbtopen for input successful
file was created by this program; seed=27600, bufsize=16384, bufcount=100
sbtread successful, read 100 buffers
sbtclose successful after sbtread
sbtremove successful
*** The SBT API test was successful ***

Sollte der Test nicht erfolgreich sein können Sie die Sesam-spezifischen Fehlerprotokollmeldungen im sbttest.log finden.

Konfiguration

RMAN Sicherung

Dieses Kapitel beschreibt nur die SEP sesam spezifischen Teile von Oracle RMAN. Es handelt sich hierbei nicht um ein RMAN Administrationshandbuch. Es ist dringend notwendig, zum Einrichten einer korrekten Sicherungsstrategie die RMAN Dokumentation zu konsultieren. Das folgende Beispielskript führt ein volles Datenbankbackup durch:

connect target
run
{
  allocate channel ch1 type 'SBT' parms 
           'ENV=(SESAM_SERVER=backupsrv,SESAM_JOB=oracle_full,SESAM_POOL=DISK)';
  backup
           filesperset 100
           format '0%d_%u.dat'
           (database);
 }

Das Skript macht folgendes:

1. Einloggen in die Zieldatenbank (Zu sichernde Datenbank)

2. Öffnen eines Backupkanals ch1 mit den folgend aufgeführten Parametern. (Bitte beachten Sie: Für parallele Sicherungen müssen mehrere Kanäle zugeordnet werden)

  • SEPsesam spezifische Parameter
SESAM_SERVER Hostname des SEP sesam Servers (*), Angabe eines Portbereichs möglich (z.B.: bcksrv:11001@11003-11007)
SESAM_JOB Auftragsname für die Oracle Sicherung (*). Der Auftrag muss zuvor auf dem Sesam Server, mit Auftragstyp Oracle, erstellt werden
SESAM_POOL Poolname (*)
SESAM_DRIVE Laufwerksnummer
SESAM_TAPE_SERVER Hostname des SEP sesam Device Servers, Angabe eines Portbereichs möglich (z.B.: bcksrv:11001@11003-11007)
SOB_TRACE Tracelevel (max. 3)
SOB_LOGFILE Name des Logfiles. Wenn kein Logfile bestimmt ist werden Fehlerprotokollmeldungen ins sbtio.log geschrieben
  • RMAN spezifische Parameter
SBT_LIBRARY=<path> Pfad zur libobk.so. Insbesondere auf AIX Systemen wichtig, wenn die Library nicht automatisch gefunden wird. Beispiel: allocate channel t1 type ’SBT’ parms='SBT_LIBRARY=/opt/sesam/bin/sesam/libobk.so ENV=(...)'. Siehe [[1] Oracle Documentation]
  • (*) = Pflichtfelder
  • Formatkennung. Die Formatbestimmung muss in einer einzigartigen ID resultieren. Oracle und SEP sesam verwenden diese ID, um bei einer Rücksicherung das richtige Saveset zu ermitteln. Oracle garantiert, dass die Kombination von %d%u einzigartig ist.

3. 100 Dateien in einem Saveset zusammenfassen

4. Freigabe des Backup Kanals

Wenn dieses Skript mit rman cmdfile ora_full.rman ausgeführt wird, erscheint die folgende Ausgabe:

oracle@oraclesrv:\~/product/oracle/bin> rman cmdfile ora_full.rman
Recovery Manager: Release 12.1.0.1.0 - Production on Mon Jul 7 16:40:37 2014

Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.

RMAN> connect target
2> run
3> {
4>    allocate channel ch1 type 'SBT' parms 
5>             'ENV=(SESAM_SERVER=backupsrv,SESAM_JOB=oracle_full,SESAM_POOL=DISK)';
6>    backup
7>             filesperset 5
8>             format '0%d_%u.dat'
9>             (database);
10> 
11>   }
12> 
connected to target database: ORCL (DBID=1379831420)

using target database control file instead of recovery catalog
allocated channel: ch1
channel ch1: SID=47 device type=SBT_TAPE
channel ch1: MMS Version 4.2.1.102

Starting backup at 07-JUL-14
channel ch1: starting full datafile backup set
channel ch1: specifying datafile(s) in backup set
input datafile file number=00003 name=/app/oradata/orcl/sysaux01.dbf
input datafile file number=00001 name=/app/oradata/orcl/system01.dbf
input datafile file number=00002 name=/app/oradata/orcl/example01.dbf
input datafile file number=00004 name=/app/oradata/orcl/undotbs01.dbf
input datafile file number=00006 name=/app/oradata/orcl/users01.dbf
channel ch1: starting piece 1 at 07-JUL-14
channel ch1: finished piece 1 at 07-JUL-14
piece handle=0ORCL_0gpcqdk7.dat tag=TAG20140707T164039 comment=API Version 1.1,MMS Version 4.2.1.102
channel ch1: backup set complete, elapsed time: 00:00:55
Finished backup at 07-JUL-14

Starting Control File and SPFILE Autobackup at 07-JUL-14
piece handle=c-1379831420-20140707-03 comment=API Version 1.1,MMS Version 4.2.1.102
Finished Control File and SPFILE Autobackup at 07-JUL-14
released channel: ch1 

Recovery Manager complete.

SEP sbc Oracle Client Extension

Der SEP sesam Client beinhaltet den sbc Oracle Client. Dieses Modul ist ein Shellskript, welches von SEP sesam als SEP sesam Befehlstermin aufgerufen werden kann. Bitte werfen Sie einen Blick in das SEP sesam Administrationshandbuch für weitere Informationen. Dieses Programm erstellt ein RMAN Skript mit den gegebenen Argumenten und führt RMAN mit dem generierten Skript aus.

Verwendung:

 oracle@orax10:~/product/10.2/db_1/sob> ./sbc_oracle_rman.sh

 Usage: ./sbc_oracle_rman.sh -b|r <-l level> -T <TargetDBS> -R <Catalog> -S <SesamServer> \
                             -j <SesamJob> -m <Mediapool> -o <option> -p <Number of streams> <TableSpace>
 
 Arguments:
  -b: Backup operation. Standardmäßig ist dies eine full, online, single channel Sicherung
  -r: Restore operation. Standardmäßig ist dies eine full, online, single channel Rücksicherung.
      HINWEISE:
      Vor der Rücksicherung muss die Datenbank in den benötigten Zustand gebracht werden,
      z.B. "SHUTDOWN; STARTUP MOUNT;"
      Nach der Rücksicherung kann ein "ALTER DATABASE OPEN RESETLOGS;" notwendig sein.
 
  -l <copy|full|diff|incr|arch>: Backup level copy, full, diff, incr und Archivelog
     Der Backup level kann mit archivelog backup kombiniert werden,
     e.g. -l copy_arch
 
  -o {option}: Die folgenden Optionen werden unterstützt:
 
     delete                    Lösche archivelogs nach der Sicherung
     delete_later              Lösche archivelogs nach 3 erfolgreichen Sicherungen
     offline                   VORSICHT: Diese Option führt automatisch einen SHUTDOWN
                                         der Datenbank vor der Sicherung und einen STARTUP nach der Sicherung!
 
     controlfile               Restore der controlfile mit rman catalog
     controlfile_DBID={DBID}   Restore der controlfile ohne rman catalog. Benötigt DBID
     recover                   Recover nach restore
     until={YYYYMMDD-HH:MM:SS} Point-in-time recover mit Bis-Zeitpunkt
 
  -T <Target database connect string>:  Default: ORACLE_SID
  -R <Recovery catalog connect string>: Default: NoCatalog
  -C <SesamServer>: SEP sesam Server Host Name
  -S <TapeServer>: Tape Server host Name
  -j <SesamJob>: SEP sesam Job Name unter dem die Sicherung läuft
  -v [0|1]: debug on (set -x)
  -m <pool name>: SEP sesam Medienpool der für die Sicherung genutzt wird 
  -p <number> bestimmt die Anzahl der Sicherungskanäle
     <TableSpace> bestimmt einen einzelnen tablespace für die Sicherung oder Rücksicherung.
                  Falls nicht gegeben wird die komplette DB gesichert/rückgesichert


Beispiele:

  • Level 0 Sicherung von SID orcl auf SEP sesam server smsrv zum bereits konfigurierten Auftrag orax10_DB-orcl zum Medienpool VTD1 mit Recovery Catalog RCVCAT
 /opt/oracle/product/10.2/db_1/sob/sbc_oracle_rman.sh -b -l copy -T orcl -R sys/password@RCVCAT -C smsrv -j orax10_DB-orcl -m VTD1
  • Archivelog-Sicherung von SID prod auf SEP sesam server backupsrv zum bereits konfigurierten Auftrag dbsrv_ora-prod zum Medienpool DAY unter Verwendung von SEP sesam Laufwerk 5 und ohne Verwendung eines Oracle Recovery Catalogs
 /opt/oracle/product/10.2/db_1/sob/sbc_oracle_rman.sh -b -l arch -T prod -C backupsrv -j dbsrv_ora-prod -m DAY -d 5
  • Full Rücksicherung der Datenbank prod mit automatischer Wiederherstellung vom SEP sesam Server amarcv und SEP sesam Auftrag dbsrv_ora-prod vom Medienpool DISK

1. Zunächst muss die Datenbank mit den Oracle Management Tools heruntergefahren werden

 SQL> shutdown immediate

2. Datenbank mounten

 SQL> startup mount

3. Rücksicherung der Datenbank

 # /opt/oracle/product/10.2/db_1/sob/sbc_oracle_rman.sh -r -T prod -o recover -C smsrv -j orax10_DB-prod -m DISK

4. Öffnen der neuen Version der Datenbank

 SQL> alter database open;
  • Point-In-Time-Recovery von Zeitpunkt 2. Februar 2011 der Datenbank fanta mit automatischer Wiederherstellung. Verbindung zum voreingestellten SEP sesam Auftrag dbserver_ora-fanta in der SEP sesam GUI unter Verwendung des Recovery Catalog RCAT

1. Zunächst muss die Datenbank mit den Oracle Management Tools heruntergefahren werden

 SQL> shutdown immediate

2. Datenbank mounten

 SQL> startup mount

3. Rücksicherung der Datenbank

 # /opt/oracle/product/10.2/db_1/sob/sbc_oracle_rman.sh -r -T fanta -R sys/password@RCAT -o recover,until=20110202-16:31:00 -C sesamsrv -j dbserver_ora-fanta -m Month

4. Öffnen der neuen Version der Datenbank

 SQL> alter database open resetlogs;

Verschiedenes

Recovery Catalog mit SEP sesam abgleichen (CROSSCHECK)

Der Recovery Catalog sollte regelmäßig mit SEP sesam abgeglichen werden, da die Medien gemäß der Medienpool-EOLs freigegeben werden. Das bedeutet, dass SEP sesam die Sicherungen nach der EOL-Zeit des verwendeten Medienpools zum Überschreiben freigibt, RMAN allerdings die evtl. bereits überschriebene Sicherung als vorhanden im Recovery Catalog führt.

Für den Abgleich steht das RMAN Kommando CROSSCHECK zur Verfügung, z.B. crosscheck backup device type 'SBT';, welches in einem "ALLOCATE CHANNEL FOR MAINTENANCE" ausgeführt werden muss.

Das Kommando synchronisiert die vorhandenen Sicherungen in SEP Sesam mit dem Recovery Catalog. Nach der Ausführung können die "expired" Sicherungssätze mit "LIST BACKUP" eingesehen und mit "DELETE ... EXPIRED BACKUP ..." entfernt werden.

Beispiel:

allocate channel for maintenance type 'SBT' parms
'ENV=(SESAM_SERVER=sesam,SESAM_JOB=job,SESAM_POOL=pool)'; 
crosscheck backup;
delete expired backup;

Vermeidung des Klartext-Passworts

Wenn das Sesam Skript sbc_oracle_rman.sh/.cmd/.bash aufgerufen wird muss entweder ein Passwort zur Authentifizierung übergeben werden oder das Passwort wird im Script gesetzt.

Um dies zu vermeiden kann anstelle des Sesam Befehlstermins ein Aufruf eines RMAN Backup Skripts über den Oracle Enterprise Manager erfolgen. Dabei müssen die 'PARMS' entsprechend gesetzt werden (SESAM_SERVER, etc.). Der Backup kann dann auch über den Oracle Enterprise Manager Zeitplaner ausgeführt werden. Die Sicherung sollte zeitlich entsprechend der Sesam Backupstrategien für Ihre Umgebung ausgeführt werden.

Wird eine Recovery Catalog Datenbank verwendet so erfolgt die Authentifizierung an dieser Datenbank, dass Passwort für die Authentifizierung an der zu sichernden Datenbank muss dann nicht übergeben werden. In einem solchen Fall wird der sbc_oracle_rman.sh/.cmd/.bash mit dem Passwort des RMAN Benutzers für die Recovery Catalog Datenbank aufgerufen.

Troubleshooting

  • Ein Test mit sbttest auf AIX benötigt die Angabe des kompletten Pfades zur Library mit dem Argument -libname, z.B.,
    sbttest test1 -libname /opt/sesam/bin/sesam/libobk.so oder ... -libname $ORACLE_HOME/lib/libobk.so.
  • Das RMAN Kommando auf AIX benötigt die Angabe des kompletten Pfades zur Library im Skript mit PARMS SBT_LIBRARY={full_path_to_libobk.so}. Siehe auch RMAN specific parameters.
  • Bei der Ausführung von sbttest ist jeweils ein unterschiedliches Argument für backup_file_name anzugeben. Falls sbttest mit dem gleichen backup_file_name Argument aufgerufen wird gibt SEP sesam den Fehler Duplicate key zurück weil der backup_file_name bereits in die SEP sesam Tabelle results eingetragen wurde.
  • Auf AIX ist die Shell bash üblicherweise nicht verfügbar. Deshalb muss die erste Zeile in sbc_oracle_rman.sh zu #!/bin/sh angepasst werden.
  • Falls die ORACLE_HOME und ORACLE_SID Parameter nicht in der Benutzerumgebung (Environment) gesetzt sind müssen diese angegeben werden. Zum Beispiel durch hinzufügen der Zeilen
    export ORACLE_HOME=/u01/app/oracle/product/10gR2/db_1 und export ORACLE_SID=PROD_DB
    oder mit oraenv. Beispiel:
  • export ORACLE_SID=TEST
    export ORAENV_ASK=NO
    . oraenv
    

Weiterführende Links/Literatur

Für weitere Informationen zu diesem Thema empfehlen wir die folgenden Bücher: