Ändern eines Datenbanknamens mit NEWID
House of Brick Senior Consultant
Eine der vielen Aufgaben, die ein DBA ausführt, ist das Klonen einer Datenbank. In der Regel erfolgt dies von einer Produktionsdatenbank zu einer Qualitätssicherungs- oder Testdatenbank, um Produktionsvolumendaten bereitzustellen. Wenn sich die Datenbank auf einer virtuellen Maschine befindet, kann das Klonen auf VM-Ebene erfolgen.
Das Klonen macht genau das, was es bedeutet, nämlich ein genaues Duplikat einer Datenbank zu erstellen. Leider haben Sie zwei Datenbanken mit demselben Namen und derselben DBID in Ihrem Netzwerk. Manchmal können Sie es mit Aliasing auf TNSNAMES-Ebene ausreichend auflösen.
In anderen Fällen müssen Sie den Datenbanknamen und die DBID intern ändern. Oracle hat dafür ein Dienstprogramm, die NEWID-Anwendung.
In diesem Dokument werden die Schritte beschrieben, die erforderlich sind, um die Änderung des Datenbanknamens mit NEWID durchzuführen.
Terminologie und Definitionen
Die folgenden Terminologien und Definitionen werden in diesem Dokument verwendet.
SID – Oracle-Standortkennung. Dies ist der Datenbankname, der geändert wird.
PFILE – Oracle-Parameterdatei. Befindet sich im Ordner $ORACLE_HOME / dbs.
SPFILE – Oracle-Serverparameterdatei. Befindet sich auch im Ordner $ ORACLE_HOME / dbs.
ORATAB – Oracle-Konfigurationsdatei, die die Oracle SIDs mit Oracle Homes verknüpft. Befindet sich unter /etc/oratab.
TNSNAMES – Oracle-Netzwerkkonfigurationsdatei, die eingehende Verbindungen mit Oracle-SIDs verknüpft. Befindet sich im Ordner $ORACLE_HOME/network/admin.
Datenbankname
Der Datenbankname oder SID wird von prd in qa geändert. Darauf wird gegebenenfalls im Dokument verwiesen.
Prozessübersicht
Zum Ändern eines Oracle-Datenbanknamens (SID) müssen vier Schritte ausgeführt werden.
- Vorbereitende Vorbereitungsarbeiten
- NID-Anwendung verwenden
- SID-Referenzen ändern
- Datenbank starten und Änderungen abschließen
1. Vorbereitende Vorbereitungsarbeiten
Nach der Änderung des Datenbanknamens müssen Änderungen an der Oracle-Parameterdatei vorgenommen werden. Wenn die Datenbank eine Serverparameterdatei (SPFILE) anstelle einer Parameterdatei (PFILE) verwendet, müssen Sie von einer SPFILE in eine PFILE konvertieren, bevor die Änderung des Datenbanknamens erfolgt.
1.1 Ermitteln, ob SPFILE verwendet wird
Führen Sie die folgende Abfrage aus, um festzustellen, ob Ihre Datenbank mit einer PFILE oder SPFILE gestartet wurde:
Abbildung 1.1 Abfragen, um festzustellen, ob SPFILE verwendet wird
„AUS sys.v_$parameter WHERE name = ’spfile‘;
Führen Sie diese Abfrage aus, um festzustellen, ob die Datenbank mit einer PFILE oder SPFILE beginnt.
Wenn die Datenbank mit einer PFILE beginnt, sind keine weiteren Vorbereitungsarbeiten erforderlich, und Sie können mit Schritt 2 – NID-Anwendung verwenden fortfahren. Fahren Sie andernfalls mit dem nächsten Schritt fort.
1.2 Erstellen einer PFILE aus SPFILE
Führen Sie die folgende SQL aus, um eine PFILE aus einer SPFILE zu erstellen:
Abbildung 1.2 Erstellen einer PFILE aus SPFILE.
Führen Sie diesen Befehl aus, um eine PFILE aus einer SPFILE zu erstellen.
Dadurch wird eine PFILE im Verzeichnis $ORACLE_HOME/dbs erstellt. Es wird die aktuelle SID im Namen verwendet. Da die aktuelle SID der Datenbank prd ist, lautet der Name initprd.ora. Kopieren Sie die Datei, um die neue SID in ihrem Namen zu haben. In diesem Beispiel wäre der neue Name initqa.ora. Ein Beispiel für das Kopieren der Datei finden Sie in Abbildung 1.3.
Abbildung 1.3 Kopieren der alten PFILE in den neuen Namen
…
$ cd $ORACLE_HOME/dbs
$ pwd
/u01/app/Orakel/Produkt/11.2.0/db_1/dbs
$ ist –ls initialisiert.ora
9 -rw-r– 1 orakel oinstall 1106 Oktober 11 20:17 initprd.oder
$ cp initprd.ora initqa.ora
$
…
Beispiel für das Kopieren der alten PFILE, initdwprd.ora auf die neue PFILE, initdwqa.ora.
NID-Anwendung verwenden
Um die NID-Anwendung zu verwenden, müssen Sie sich als Oracle-Benutzer beim Datenbankserver anmelden und die folgenden Schritte ausführen.
- Datenbank herunterfahren
- Datenbank im Mount-Modus starten
- Befehl NID ausführen
- Datenbank herunterfahren
2.1 Datenbank herunterfahren
Starten Sie eine SQLPlus-Sitzung und geben Sie den Befehl shutdown immediate ein. Abbildung 2.1 zeigt diesen Schritt.
Abbildung 2.1 Herunterfahren der Datenbank
$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Produktion am Sa Okt 11 20:02:24 2014
Copyright © 1982, 2011, Oracle, Alle Rechte vorbehalten.
Verbunden mit:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 – Produktion
Mit den Optionen Partitionierung, OLAP, Data Mining und Real Application Testing
SQL> sofortiges Herunterfahren
Datenbank geschlossen.
Datenbank demontiert.
ORACLE-Instanz heruntergefahren.
SQL>
…
Beispiel für die Ausgabe beim Herunterfahren der Datenbank.
2.2 Starten der Datenbank im Mount-Modus
Starten Sie eine SQLPlus-Sitzung und geben Sie den Befehl startup mount ein. Abbildung 2.2 zeigt dies.
Abbildung 2.2 Starten der Datenbank im Mount-Modus
$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.3.0 Produktion am Sat Oct 11 20:02:24 2014urheberrecht © 1982, 2011, Oracle, Alle Rechte vorbehalten.
Mit einer inaktiven Instanz verbunden.
SQL> startup mount
ORACLE-Instanz gestartet.
Gesamtsystem Globaler Bereich 535662593 Bytes
Feste Größe 1346140 Bytes
Variable Größe 260048292 Bytes
Datenbankpuffer 268435456 Bytes
Redo-Puffer 5832704 Bytes
Datenbank montiert.
SQL>
…
Beispiel für die Ausgabe beim Starten der Datenbank im Mount-Modus.
Geben Sie exit ein, um zur Shell-Eingabeaufforderung zurückzukehren.
2.3 Ausführen des Befehls NID
Der Befehl NID ist das Oracle-Programm, das die SID der Datenbank ändert. Um es zu verwenden, benötigen Sie das SYS-Kontokennwort und die neue SID für die Datenbank. Wenn die neue SID qa ist, lautet die Befehlszeile nid target=SYS dbname=qa . Nachdem Sie die Eingabetaste gedrückt haben, werden Sie zur Eingabe des SYS-Kontokennworts aufgefordert. Geben Sie das Passwort ein. Sie werden aufgefordert zu bestätigen, dass Sie die SID ändern möchten. Siehe Abbildung 2.3.1 für die Bildschirmanzeige.
Abbildung 2.3.1 Bildschirmanzeige des laufenden NID-Befehls
$ nid target= SYS dbname=qa
DBNEWID: Release 11.2.0.3.0 – Produktion am Sat Okt 11 20:05:54 2014
Copyright © 1982, 2011, Oracle und/oder seine verbundenen Unternehmen. Alle Rechte vorbehalten.
Passwort:
Verbindung zur Datenbank PRD (DBID=3949194393)
Verbindung zum Server Version 11.2.0
Steuerdateien in der Datenbank:
/u01 /app/oracle/oradata/prd/control01.ctl
/ u01/app/ Orakel / Oradaten /prd/ Steuerung02.ctl
Datenbank-ID und Datenbankname PRD in QA ändern? (Y/) => _
…
Ausgabe vom Starten des Befehls NID.
Geben Sie Y ein, um die Änderung des Datenbanknamens gemäß Abbildung 2.3.2 zu bestätigen
Abbildung 2.3.2 Bestätigung der Änderung des Datenbanknamens
$ nid target=SYS dbname=qa
DBNEWID: Veröffentlichung 11.2.0.3.0 – Produktion am Sa Okt 11 20:05:54 2014
Copyright © 1982, 2011, Oracle und/oder seine verbundenen Unternehmen. Alle Rechte vorbehalten.
Passwort:
Verbindung zur Datenbank PRD (DBID=3949194393)
Verbindung zum Server Version 11.2.0
Steuerdateien in der Datenbank:
/u01 /app/oracle/oradata/prd/control01.ctl
/ u02/app/Orakel / Oradaten/prd/Steuerung02.ctl
Datenbank-ID und Datenbankname PRD in QA ändern? (Y/) => Y
…
Antwort Y auf die Konfirmation.
Das Programm nimmt die internen Änderungen vor und zeigt den Fortschritt an. Wenn es fertig ist, werden Sie an die Shell-Eingabeaufforderung zurückgegeben, wie in Abbildung 2.3.3 gezeigt.
Abbildung 2.3.3 Ausgabe vom NID-Programm
Datafile /u02/app/oracle/oradata/prd/dw03.db – dbid geändert, schrieb neuen Namen
Datafile /u02/app/oracle/oradata/prd/dw04.db – dbid geändert, schrieb neuen Namen
Datafile /u02/app/oracle/oradata/prd/dw05.db – dbid geändert, schrieb neuen Namen
Datafile /u01/app/oracle/oradata/prd/temp01.db – dbid geändert, schrieb neuen Namen
Steuerdatei /u01/app/oracle/oradata/prd/control01.ctl – dbid geändert, schrieb neuen Namen
Steuerdatei /u02/app/ oracle/oradata/prd/control02.ctl – dbid geändert, schrieb neuen Namen
Instanz heruntergefahren
Datenbankname in QA geändert.
Ändern Sie die Parameterdatei und generieren Sie vor dem Neustart eine neue Kennwortdatei.
Datenbank-ID für Database QA geändert in 1714809981
Alle vorherigen Sicherungen und archivierten Wiederherstellungsprotokolle für diese Datenbank sind unbrauchbar.
Die Datenbank kennt keine früheren Sicherungen und archivierten Protokolle im Wiederherstellungsbereich.
Datenbank wurde heruntergefahren, Datenbank mit RESETLOGS-Option öffnen.
Datenbankname und ID wurden erfolgreich geändert.
DBNEWID – Erfolgreich abgeschlossen.
$
…
Ausgabe des NID-Programms mit erfolgreichem Abschluss.
2.4 Datenbank herunterfahren
Die Datenbank muss wieder heruntergefahren werden. Wiederholen Sie den Start einer SQLPlus-Sitzung und geben Sie den Befehl shutdown immediate ein, wie in Schritt 2.1 gezeigt.
3. SID-Referenzen ändern
Änderungen an den Datenbankparametern, tnsnames, oratab und Umgebungsdateien müssen vorgenommen werden, um die Änderung der Datenbank-SID widerzuspiegeln.
- Oracle-Parameterdatei muss umbenannt und bearbeitet werden.
- Oratab muss die SID umbenannt haben.
- ora-Datei benötigt die SID umbenannt
- Wenn die ORACLE_SID im Profil festgelegt ist, muss sie geändert werden.
3.1 Oracle-Parameterdatei muss umbenannt und bearbeitet werden
Die Oracle-Parameterdatei muss bearbeitet und zwei Zeilen geändert werden. Wechseln Sie in den Ordner $ORACLE_HOME/dbs, in dem die Parameterdatei gespeichert ist. Ein Beispiel finden Sie in Abbildung 3.1.1.
Abbildung 3.1.1 Wechsel in den Ordner Parameterdatei
…
$ cd $ORACLE_HOME/dbs
$ pwd
/u01/app/Orakel/Produkt/11.2.0/db_1/dbs
$ ist –ls initqa.ora
9 -rw-r– 1 orakel oinstall 1106 Oktober 11 20:17 initqa.ora
$
…
Beispiel für den Wechsel in den Ordner Parameterdatei zur Vorbereitung der Bearbeitung der Parameterdatei.
Bearbeiten Sie die Datei und suchen Sie die beiden Zeilen, die geändert werden müssen. Die Zeilen beginnen mit dbname und instance_name. Ein Beispiel, wie die Parameterdatei vor den Änderungen aussehen würde, finden Sie in Abbildung 3.1.2.
Abbildung 3.1.2 Abfrage, ob SPFILE verwendet wird.
dbname=“prd“
db_recovery_file_dest_size=64424509440
db_recovery_file_dest=“/u01/app/oracle/flash_recovery_area“
fast_start_mttr_target=120
instance_name=prd
…
Hervorgehobene Zeilen müssen in einen neuen SID-Namen geändert werden.
Sie müssen den SID-Wert für die beiden Zeilen von der alten SID prd in die neue SID qa ändern. Siehe Abbildung 3.1.3, wie die Linien nach den Änderungen aussehen würden.
Abbildung 3.1.3 Abfrage, ob SPFILE verwendet wird
dbname=“qa“
db_recovery_file_dest_size=64424509440
db_recovery_file_dest=“/u01/app/oracle/flash_recovery_area“
fast_start_mttr_target=120
instance_name=qa
…
Parameterdatei mit Änderungen des SID-Namens nach der Bearbeitung.
Speichern Sie die Datei und beenden Sie den Editor.
3.2 Oratab muss die SID umbenennen lassen
In der Oracle ORATAB-Datei /etc/oratab muss die SID-Referenz von der alten SID geändert werden. prd auf die neue SID. qs. Bearbeiten Sie die Datei und ändern Sie den alten SID-Eintrag in den neuen SID. Ein Beispiel finden Sie in Abbildung 3.2.1.
Abbildung 3.2.1 Beispiel einer geänderten ORATAB-Datei /etc/oratab
#
#
#1120:/u01/app/oracle/product/11.2.0:N
orcl:/u01/app/oracle/product/11.2.0/db_1:Y
#prd:/u01/app/oracle/product/11.2.0/db_1:Y
qa:/u01/app/oracle/product/11.2.0/db_1:Y;
Beispiel-ORATAB-Datei mit geänderter SID-Referenz von dwprd zu dwqa. Der geänderte Wert ist fett gedruckt.
3.3 TNSNAMES muss die SID umbenannt haben
Die Oracle TNSNAMES-Datei, tnsnames.ora, muss die SID-Referenz von der alten SID geändert werden. dwprd auf die neue SID. dwqa. Es muss auch die HOST-Adresse geändert werden, um dem neuen System zu entsprechen. TNSNAMES befindet sich im Ordner $ORACLE_HOME/network/admin. Bearbeiten Sie die Datei, ändern Sie den alten SID-Eintrag in den neuen SID und ändern Sie die Hostadresse entsprechend dem neuen System. Ein Beispiel finden Sie in Abbildung 3.3.1.
Abbildung 3.3.1 Beispiel einer modifizierten TNSNAMES-Datei $ORACLE_HOME/network/admin/tnsnames.ora
(SID = PLSExtProc)
(PRÄSENTATION = RO)
)
)QA =
(BESCHREIBUNG =
(ADRESSLISTE =
(ADRESSE = (PROTOKOLL = TCP) (HOST = 192.188.1.86) (PORT = 1521))
)
( CONNECT_DATA =
(SERVICENAME = qa)
(UR = A)
)
)
Beispiel TNSNAMES-Datei mit geänderter SID-Referenz von dwprd zu dwqa und HOST-Adresse auf neue Adresse gesetzt. Der geänderte Wert ist fett gedruckt.
3.4 Wenn die ORACLE_SID im Profil gesetzt ist, muss diese geändert werden.
Normalerweise wird die Umgebungsvariable $ORACLE_SID auf den SID-Wert im Anmelde-Profilskript $HOME/ gesetzt.profil oder $HOME/.bash_profile. Suchen Sie die SID-Einstellung und ändern Sie sie in den neuen Wert. Abbildung 3.4.1 zeigt ein Beispiel für die Anzeige des Werts $ORACLE_SID über die Befehlszeile.
Abbildung 3.4.1 Anzeigen des $ORACLE_SID-Werts
$ echo $ORACLE_SID
prd
$
…
Verwenden Sie den Befehl echo, um den Wert $ORACLE_SID anzuzeigen.
Sie müssen sich abmelden und wieder anmelden, nachdem Sie den Wert ORACLE_SID im Profilskript geändert haben, damit er in Ihrer Umgebung festgelegt wird.
4. Datenbank starten und Änderungen abschließen
Der letzte Schritt, der ausgeführt werden muss, besteht darin, die Datenbank bis zur Mount-Ebene zu starten und sie mit der Option resetlogs zu öffnen. Starten Sie eine SQLPlus-Sitzung und starten Sie die Datenbank in den Mount-Modus, indem Sie startup mount eingeben. Wenn Sie in Schritt 1 eine PFILE erstellen mussten, lautet der Startbefehl startup pfile=initSID .ora Berg. In unserem Beispiel wäre es also startup pfile=initqa .ora Berg. Öffnen Sie dann die Datenbank mit dem Befehl alter database open resetlogs;. Ein Beispiel für die Bildschirmanzeige finden Sie in Abbildung 4.1.
Abbildung 4.1 Datenbank starten und Protokolle zurücksetzen
$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Produktion am Sa Okt 11 20:02:24 2014
Copyright © 1982, 2011, Oracle, Alle Rechte vorbehalten.
Mit einer Idle-Instanz verbunden.
SQL> startup mount
ORACLE-Instanz gestartet.
Gesamtsystem Globaler Bereich 535662593 Bytes
Feste Größe 1346140 Bytes
Variable Größe 260048292 Bytes
Datenbankpuffer 268435456 Bytes
Redo-Puffer 5832704 Bytes
Datenbank montiert.
SQL> Datenbank ändern Resetlogs öffnen;
Datenbank geändert.
SQL>
…
Starten der Datenbank im Mount-Modus und Öffnen mit der Option resetlogs.
Wenn Sie in Schritt 1 eine PFILE erstellen mussten, müssen Sie die PFILE wieder in eine SPFILE konvertieren. Dies geschieht mit dem Befehl CREATE SPFILE. Geben Sie an der SQL-Eingabeaufforderung den Befehl create spfile from pfile ein.
Fazit
Das Ändern des Datenbanknamens einer Oracle-Datenbank mag kompliziert klingen, kann jedoch mit grundlegenden Systemkenntnissen durchgeführt werden. Nach den in diesem Dokument beschriebenen Verfahren kann ein DBA die Aufgabe mit minimaler Ausfallzeit für die Datenbank ausführen.