Tipps & Tricks: August 2014 Bereich: DBA, RMAN Erstellung: 08/2014 RZ Versionsinfo: 11.2.x, 12.1.x Letzte Überarbeitung: 08/2014 RZ Prozedur zum Klonen einer Oracle Datenbank Seit Oracle 11g kann ein Datenbank-Klon aus einer laufenden Produktionsumgebung erzeugt werden. Die nachfolgende, schrittweise Prozedur gibt Ihnen eine Hilfestellung, um eine Datenbank erfolgreich zu duplizieren. Zunächst müssen Sie jedoch etwas Vorarbeit leisten und ein paar Grundvoraussetzungen schaffen bzw. diese überprüfen. Die nachfolgende Liste soll Ihnen dabei als Checkliste dienen. Im Anschluss werden Sie dann Schritt für Schritt durch die Prozedur geführt. Grundvoraussetzungen: Quell- und Zieldatenbank müssen das gleiche Patchlevel aufweisen. Auf dem Zielserver sollte dieselbe Dateienstruktur vorhanden sein, ansonsten müssen weitere Pfadänderungen vorgenommen werden. Die "neue" Datenbank muss sich in der NOMOUNT-Phase befinden. Die Passwortdatei muss auf beiden Datenbanken IDENTISCH sein. Es müssen grundlegende Vorbereitung bzgl. Struktur gemacht worden sein, Verzeichnisse für ... Controldateien Archivelogs Redologs Datendateien TEMP-Dateien ....müssen entweder erstellt oder angepasst werden. Parameterdatei (PFILE) manuell auf Zieldatenbank kopieren und anpassen Instanz und zugehörigen Dienst erstellen Im ersten Schritt wird die Instanz und der zugehörige Dienst erstellt. Dazu wird die Umgebungsvariable auf die Zieldatenbank umgesetzt: DOS> SET ORACLE_SID=<neue_SID> DOS> SET ORACLE_SID=DBKLONE (Windows) Muniqsoft GmbH Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40 IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0 Seite 1 von 6 $> export ORACLE_SID=DBKLONE (Linux) Unter Windows wird der Dienst für die Zieldatenbank über folgenden Aufruf erstellt: DOS> ORADIM -new -sid <DB_Klonname> DOS> ORADIM -new -sid DBKLONE Das erfolgreiche Erstellen der Instanz wird durch "Instanz erstellt." quittiert. Netzwerk Dateien vorbereiten Im zweiten Schritt muss auf der Zielseite der Listener erzeugt und die LISTENER.ORA-Datei angepasst werden. Existiert bereits ein Listener, muss dieser neu gestartet werden. Des Weiteren muss auf der Quellseite ein Eintrag in der TNSNAMES.ORA-Datei für die Klon-DB (Ziel-DB) vorgenommen werden. Default Verzeichnis: %ORACLE_HOME%\NETWORK\ADMIN $ORACLE_HOME/network/admin (Windows) (Linux) DBKLONE = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = wickie)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DBKLONE) ) ) Passen Sie zusätzlich unter Windows (!) auf beiden Seiten die SQLNET.ORA an und setzen den Wert von NTS um auf NONE: SQLNET.AUTHENTICATION_SERVICES = (NONE) Ansonsten kommt es während der Installation zum Abbruch: RMAN-04005: Fehler aus Zieldatenbank: ORA-01017: Benutzername/Kennwort ungültig; Anmeldung abgelehnt Hinweis: Nach der Installation kann der Parameter wieder auf NTS zurückgesetzt werden. Fehlende Verzeichnisse anlegen Muniqsoft GmbH Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40 IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0 Seite 2 von 6 Erzeugen Sie manuell die Verzeichnisse mit dem neuen Instanznamen auf Betriebssystemebene: >>> >>> >>> '%ORACLE_BASE%\oradata\DBKLONE' , '%ORACLE_BASE%\admin\DBKLONE\adump' , '%ORACLE_BASE%\fast_recovery_area\DBKLONE' Passwortdatei 1:1 aus der Ursprungsdatenbank kopieren Im nachfolgenden Schritt, kopieren Sie die Passwortdatei von der Ursprungsdatenbank zur Zieldatenbank und passen den Namen entsprechend an. Die Passwortdatei befindet sich im ORA-Home\database bzw. dbs Verzeichnis: Default Verzeichnis: %ORACLE_HOME%\database $ORACLE_HOME/dbs (Windows) (Linux) Bsp: E:\oracle\product\11.2.0\dbhome_1\database\PWD<SID>.ORA /u01/oracle/product/11.2.0/dbhome_1/dbs/orapw<SID> PWD<SID>.ora (Windows) orapw<SID> (Linux) Parameterdatei aus der Ursprungsdatenbank kopieren In diesem Schritt wird die Parameterdatei (SPFILE) von der Ursprungsdatenbank in eine ASCII-Datei (PFILE) umgewandelt und angepasst. Setzen Sie die alte SID um auf die neue SID und kopieren diese anschließend auf die Zieldatenbank . Ändern Sie gegebenenfalls auch den Laufwerksbuchstaben und die Pfade. SPFILE Default Verzeichnis: %ORACLE_HOME%\database $ORACLE_HOME/dbs (Windows) (Linux) Bsp: E:\oracle\product\11.2.0\dbhome_1\database\SPFILE<SID>.ORA /u01/oracle/product/11.2.0/dbhome_1/dbs/spfile<SID>.ora Erzeugen der ASCII-Datei: SQL> CREATE PFILE FROM SPFILE; Muniqsoft GmbH Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40 IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0 Seite 3 von 6 Nehmen Sie folgende Anpassungen vor (alte SID umsetzen auf neue SID): *.audit_file_dest='%ORACLE_BASE%\admin\DBKLONE\adump' *.control_files='%ORACLE_BASE%\oradata\DBKLONE\control01.ctl', '%ORACLE_BASE%\fast_recovery_area\DBKLONE\control02.ctl' *.db_name=DBKLONE *.db_recovery_file_dest='%ORACLE_BASE%\fast_recovery_area' *.db_file_name_convert='%ORACLE_BASE%\oradata\<quelle1>','%ORACLE_BASE%\oradata\<ziel1>' [,'%ORACLE_BASE%\oradata\<quelle2>','%ORACLE_BASE%\oradata\<ziel2>', ...] *.log_file_name_convert='%ORACLE_BASE%\oradata\<quelle1>','%ORACLE_BASE%\oradata\<ziel1>' [,'%ORACLE_BASE%\oradata\<quelle2>','%ORACLE_BASE%\oradata\<ziel2>', ...] Achtung: Falls die Daten- oder Redologdateien auf verschiedene Verzeichnisse verteilt sind, muss für jeden Quell-Pfad ein Ziel-Pfad angegeben werden. Klonen Nach Abschluss dieser grundlegenden Vorbereitungen widmen wir uns nun dem eigentlichen Klonen. Melden Sie sich dazu an der Zieldatenbank als Benutzer SYS an und erzeugen Sie ein SPFILE, sofern dies nicht schon vorher geschehen ist. SQL> CONN sys/<pwd> as sysdba SQL> CREATE SPFILE FROM PFILE; Anschließend bringen Sie die Instanz in die NOMOUNT Phase: SQL> STARTUP NOMOUNT Beenden Sie SQL Plus wieder mit EXIT, da - je nach Oracle-Version - der DUPLICATE-Befehl sonst hängen bleiben könnte: SQL> EXIT Auf der Quellseite starten Sie nun den RMAN auf Kommandozeilenebene (evtl. ORACLE_SID erneut setzen): DOS> SET ORACLE_SID=o11g $> export ORACLE_SID=o11g (Windows) (Linux) Melden Sie sich nun an der Quell-DB (target) und der Klon-DB (auxiliary) an. Der nachfolgende Aufruf gilt für Windows und Linux gleichermaßen: Muniqsoft GmbH Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40 IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0 Seite 4 von 6 DOS/Linux> rman target sys/<pwd> auxiliary sys/<pwd>@<tns_alias> Seit Oracle 11g steht Ihnen eine einfache Variante des Klonens einer Datenbank zur Verfügung, rufen Sie dazu folgenden Befehl auf: RMAN> DUPLICATE TARGET DATABASE TO <SID> FROM ACTIVE DATABASE NOFILENAMECHECK; RMAN> DUPLICATE TARGET DATABASE TO dbklone FROM ACTIVE DATABASE NOFILENAMECHECK; ... und das Klonen kann beginnen. Mögliche Fehler Kommt es während des Klonvorgangs zu einem Abbruch, dann werden diese Fehler unter Angabe des jeweiligen Hintergrundprozesses im Alertlog dokumentiert. Beispiel: Wed Jun 11 13:55:50 2014 Errors in file D:\ORACLE\diag\rdbms\o11g\o11g\trace\o11g_ora_4112.trc: ORA-17627: ORA-01031: insufficient privileges Anmeldung bei Remote-Datenbank-Server nicht möglich Workaround: Passwort-Datei erneut kopieren --> [manuell] RMAN.EXE Absturz unter Windows Kommt es während der Installation zu einem Absturz der RMAN.EXE dann liegt das meist an Fehlern im SPFILE / PFILE. Überprüfen Sie, ob dort alle Einträge korrekt sind (Hochkommas, Pfade, etc.) Überprüfen Sie ebenso, ob der Parameter db_name auf die Ursprungsdatenbank zurückgesetzt wurde. Wenn dem so ist, ändern Sie ihn wieder erneut auf die Zieldatenbank. Anmerkung: Kommt es während der Installation zu einer Fehlermeldung mit Abbruch: RMAN-04005: Fehler aus Zieldatenbank: ORA-01017: Benutzername/Kennwort ungültig; Anmeldung abgelehnt dann ändern Sie den Parameter in der SQLNET.ORA Datei von NTS: SQLNET.AUTHENTICATION_SERVICES = (NTS) Muniqsoft GmbH Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40 IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0 Seite 5 von 6 auf NONE: SQLNET.AUTHENTICATION_SERVICES = (NONE) Diese Datei befindet sich per Default im Verzeichnis: Default Verzeichnis: dbhome_1\NETWORK\ADMIN Diesen und weitere Tipps rund um den RMAN erhalten Sie in unseren RMAN- oder DBA-Kursen. Schauen Sie doch einfach mal vorbei. Muniqsoft GmbH Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40 IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0 Seite 6 von 6