Sie betreiben Ihre Oracle Datenbank unter Windows und Ihnen geht der lokale Speicherplatz allmählich aus? Trotzdem soll natürlich weiterhin archiviert werden und auf die regelmäßigen RMAN-Backups wollen Sie verständlicherweise auch nicht verzichten. Haben Sie sich nicht schon häufiger gefragt, ob es keine Möglichkeit gibt, die Archivelogs und die RMAN Backupsets direkt auf einem Remote-Rechner zu erzeugen? Im vorliegenden Tipp erfahren Sie, wie Sie genau dies erreichen können.
Die Frage nach Remote-Archivierung (ohne eine Standby Datenbank aufbauen zu müssen) ist bestimmt nicht neu und eigentlich auch schon seit Längerem realisierbar gewesen. Der Versuch der Umsetzung führte allerdings oftmals zu größeren Frustrationserlebnissen. Stattdessen wurde der verfügbare Speicherplatz einfach um eine lokale Platte erweitert.
Hier nun die Schritte, die für eine (hoffentlich) erfolgreiche Einrichtung notwendig sind.
SCHRITT 1: EINRICHTEN EINES LOKALEN ADMINISTRATORS AUF ZIELSEITE
Da es in aller Regel an den Berechtigungen scheitert, muss auf Zielseite zunächst ein Administrator-Account eingerichtet werden. Dafür ist der gleiche Name und das gleiche Passwort wie auf Quellseite zu vergeben. In unserem Beispiel ist das der Benutzer "schulung" mit einem (natürlich streng geheimen) Passwort.
SCHRITT2: EINRICHTEN EINER NETZWERKFREIGABE AUF ZIELSEITE
Damit remote archiviert werden kann, benötigen Sie eine Freigabe auf dem Remote-Rechner. Geben Sie z.B. das Verzeichnis C:\Temp frei, so dass der Benutzer "schulung" lesend und schreibend darauf zugreifen kann. Als Zielverzeichnis für die archivierten Redo Logfiles und evtl. die RMAN Backupsets wird innerhalb von C:\Temp noch das Verzeichnis "FRA" angelegt.
SCHRITT 3: UMSTELLUNG DER ORACLE DIENSTE AUF DEN ADMINISTRATOR-ACCOUNT
Standardmäßig laufen alle Oracle Dienste unter dem "Local System" Account. Stellen Sie diese auf den lokalen Administrator "schulung" um. Dazu gehen Sie in den Eigenschaften des Dienstes auf die Registerkarte "Anmelden" und wählen "Dieses Konto" für die Anmeldung aus. Tragen Sie nun den Benutzer "schulung" und sein Kennwort ein.
Anschließend erhalten Sie die folgenden Windows-Meldungen
Dem Konto .\schulung wurde die Berechtigung zum Anmelden als Dienst zugewiesen.
Der neue Anmeldename wird erst wirksam, wenn der Dienst beendet und neu gestartet wurde.
Danach starten Sie den Dienst neu. Achten Sie darauf, dass alle gestarteten Oracle Dienste unter dem selben Account laufen. Hier sind das die Dienste "OracleService<sid>" und "Oracle<Home>TNSListener".
SCHRITT 4: SETZEN DER PARAMETER DB_RECOVERY_FILE_DEST BZW. LOG_ARCHIVE_DEST_<N>
Im letzten Schritt definieren Sie Ihr Remote-Verzeichis als neues Zielverzeichnis für die Archivelogs und/oder Backupsets. Bei der Pfadangabe sind allerdings nur UNC-Pfade erlaubt. Die Verwendung von Laufwerksbuchstaben wird bei Remote-Verzeichnissen nicht unterstützt.
Das Zielverzeichnis kann sowohl über die Flash bzw. Fast Recovery Area gesetzt werden, als auch direkt über einen der log_archive_dest<n> Parameter. Zulässig sind folgende Beispiele:
SQL> ALTER SYSTEM SET log_archive_dest_2='location=\\remoteserver\temp\FRA';
System wurde geändert.
SQL> ALTER SYSTEM SWITCH LOGFILE;
System wurde geändert.
SQL> ALTER SYSTEM SET db_recovery_file_dest='\\remoteserver\temp\FRA';
System wurde geändert.
SQL> ALTER SYSTEM SET log_archive_dest_1='location=use_db_recovery_file_dest';
System wurde geändert.
SQL> ALTER SYSTEM SWITCH LOGFILE;
System wurde geändert.
SQL> SELECT name FROM v$archived_log;
NAME
---------------------------------------------------------------------------------
...
C:\ORACLE\FAST_RECOVERY_AREA\O18C\ARCHIVELOG\2018_08_24\O1_MF_1_137_83G8X0SD_.ARC
\\remoteserver\TEMP\FRA\ARC0000000138_0756558819.0001
\\remoteserver\TEMP\FRA\O18C\ARCHIVELOG\2018_08_24\O1_MF_1_139_83G9R8FY_.ARC
\\remoteserver\TEMP\FRA\ARC0000000139_0756558819.0001
Falls Sie die Fast Recovery Area auch für Ihre RMAN Backups verwenden, lassen sich somit auch die Backupsets direkt auf einem Remote-Server erzeugen, ohne dass Sie irgendetwas an Ihren Backup-Skripten verändern müssen.
Nicht zulässig ist folgende Angabe (trotz eingerichteter Netzlaufwerksverbindung Z:)
SQL> ALTER SYSTEM SET log_archive_dest_2='location=z:\FRA';
ALTER SYSTEM SET log_archive_dest_2='location=z:\FRA'
*
FEHLER in Zeile 1:
ORA-02097: Parameter kann nicht verändert werden, da angegebener Wert ungültig ist
ORA-16032: Zielzeichenfolge von Parameter LOG_ARCHIVE_DEST_2 kann nicht übersetzt werden
ORA-09291: sksachk: Ungültiges Verzeichnis für Archivierungsziel angegeben
OSD-04018: Auf das angegebene Verzeichnis oder Gerät kann nicht zugegriffen werden.
O/S-Error: (OS 3) Das System kann den angegebenen Pfad nicht finden.
SQL> ALTER SYSTEM SET db_recovery_file_dest='z:\FRA';
ALTER SYSTEM SET db_recovery_file_dest='z:\FRA'
*
FEHLER in Zeile 1:
ORA-02097: Parameter kann nicht verändert werden, da angegebener Wert ungültig ist
ORA-01261: Zielfolge für Parameter db_recovery_file_dest kann nicht übersetzt werden
ORA-01263: Für Datei-Zielverzeichnis angegebener Name ist ungültig
OSD-04018: Auf das angegebene Verzeichnis oder Gerät kann nicht zugegriffen werden.
O/S-Error: (OS 3) Das System kann den angegebenen Pfad nicht finden.
HINWEISE
Sind die oben beschriebenen Schritte 1-3 vorgenommen worden, so lassen sich ebenfalls Control- und Online Redo Log-Dateien sowie das SPFILE remote verwenden.
-- Beispiel für Controldateien
SQL> ALTER SYSTEM set control_files=
'C:\ORACLE\ORADATA\O11G\CONTROL01.CTL',
'C:\ORACLE\FAST_RECOVERY_AREA\O18C\CONTROL02.CTL',
'\\remoteserver\temp\FRA\CONTROL03.CTL' SCOPE=SPFILE;
-- Beispiel für Redo Logs
SQL> ALTER DATABASE ADD LOGFILE MEMBER '\\remoteserver\temp\FRA\REDO01B.RDO'
TO GROUP 1;
Soll das SPFILE remote genutzt werden, verschieben Sie es in das Remote-Verzeichnis und erstellen Sie eine INIT<sid>.ORA Datei mit folgendem Inhalt:
*.spfile='\\remoteserver\temp\FRA\spfile<sid>.ora'
Auch Datendateien lassen sich auf diese Weise remote anlegen, allerdings kam es bei unseren Tests zu wiederkehrenden Fehlermeldungen in der Alertdatei.
-- Anlegen eines neuen Tablespaces
SQL> CREATE TABLESPACE remote_tbs DATAFILE '\\remoteserver\temp\FRA\tbs01.dbf'
SIZE 100M;
-- Auszug aus der Alertdatei
...
Errors in file C:\ORACLE\diag\rdbms\o11g\o18C\trace\o11g_m001_3996.trc:
Error in computing freespace for file 000007FF546180B0 \\remoteserver\TEMP\FRA\TBS01.DBF
ORA-27037: Dateistatus nicht abrufbar
OSD-04011: GetFileInformationByHandle() failure, Datei-Info kann nicht abgerufen werden
O/S-Error: (OS 161) Der angegebene Pfadname ist ungültig.
Dies hatte zwar keine (merkbare) Auswirkung auf die Verfügbarkeit der Datendatei und deren Inhalt, aber besonders beruhigend ist diese Fehlermeldung auch nicht.
ABSCHLUSS
Das Ablegen von Oracle Dateien auf einem Remote-Rechner ist also keine Hexerei und mit wenigen Schritten durchführbar.
Allerdings ist zu beachten, dass Sie in all diesen Fällen auf eine permanent bestehende (und auch schnelle) Netzwerkverbindung angewiesen sind, ansonsten hängt Ihr Datenbanksystem oder stürzt im schlimmsten Fall sogar ab.
Viele weitere interessante Informationen rund um die Administration von Oracle Datenbanken erhalten Sie in unseren DBA Kursen. Schauen Sie doch mal vorbei.