Inhaltsverzeichnis
Oracle 11g Datenbank in einem 12c Cluster in ein neues Oracle Home verschieben
Aufgabe:
Unter einem 12c Cluster laufen noch 11.2.0.4 Datenbanken, allerdings alle aus dem selben Oracle Datenbank 11g Home.
Die Datenbanken sollen nun in zwei Homes verschoben werden, um Patch Szenarien abbilden zu können.
Dazu wird im ersten Schritt ein neues Oracle Home wie gewohnt installiert und mit dem Patch Stand des alten Homes versehen, damit die Datenbank nach der Verschiebung auch betrieben werden kann!
D.h. gleiche Software Version + gleicher Patch Stand!
Das eigentliche Verschieben
DB Console der Datenbank stoppen und entfernen
Falls die DB Console im Einsatz ist:
emctl stop dbconsole emca -deconfig dbcontrol db -repos drop -cluster
Die DB Console überlebt den Umzug in eine neues Oracle Home in der 11g nicht! (siehe gescheiterten Versuch weiter unten)
Datenbank im alten Home stoppen
srvctl stop databaes -d GPI
Konfiguration aus dem Cluster auslesen
srvctl config database -d GPI Database unique name: GPI Database name: TNG1IF Oracle home: /opt/oracle/product/11.2.0.4/dbhome_1 Oracle user: oracle Spfile: +DATA01/GPI/spfileGPI.ora ....
Da wir ein zentrales SPFile auf der ASM Disk verwenden, brauchen wir nur das Oracle Home umsetzen
Neues Oracle Home setzen
Oracle Home neu setzen mit „srvctl modify database“:
srvctl modify database -d TNG1IF -o /opt/oracle/product/11.2.0.4/dbhome_2 #prüfen ob es auch geklappt hat! srvctl config database -d GPI Oracle home: /opt/oracle/product/11.2.0.4/dbhome_2
# so klappt das nicht !!! mit modify arbeiten!
srvctl setenv database -d GPI -t "ORACLE_HOME=/opt/oracle/product/11.2.0.4/dbhome_2" srvctl getenv database -d GPI -t "ORACLE_HOME" srvctl unsetenv database -d GPI -t "ORACLE_HOME"
Password File / init.ora verschieben
Nun noch auf beiden Knoten die Password Datei und die init.ora der DB unter „dbs“ im alten Home in das neue Home verschieben.
Auf jeden Knoten!
cd /opt/oracle/product/11.2.0.4/dbhome_1/dbs mv *GPI* /opt/oracle/product/11.2.0.4/dbhome_2/dbs cd cd /opt/oracle/product/11.2.0.4/dbhome_2/dbs ls -la
Prüfen, ob da die PWD Datei und init.ora auch wirklich da ist und die Rechte ok sind!
Datenbank wieder starten
srvctl start database -d GPI srvctl status database -d GPI
Im Alert log prüfen, ob auch alles geklappt hat!
adrci adrci> show alert ... Starting up: Oracle Database 11g Release 11.2.0.4.0 - 64bit Production With the Real Application Clusters option. ORACLE_HOME = /opt/oracle/product/11.2.0.4/dbhome_2 System name:Linux .....
Listener prüfen und per SQL*Net anmelden:
#Normaler Listener lsnrctl status LISTENER # je nach dem was da gerade davon auf den jeweiligen Knoten läuft # Scan listener testen! lsnrctl status LISTENER_SCAN1 lsnrctl status LISTENER_SCAN2 lsnrctl status LISTENER_SCAN3 #Über Scan Anmelden mit passenden TNS Alias sqlplus system@GPI
Funktioniert !
Backup und Skripte anpassen
Backup Scripte und Umgebungseinstellung anpassen!
DB Console
Wenn benötigt, die DB Console neu anlegen, ⇒ siehe dazu DB Console für eine Datenbank anlegen
Quellen
Oracle Dokumentation:
- Server Control Utility Reference 12c - https://docs.oracle.com/database/121/RACAD/srvctladmin.htm#RACAD005
Versuch die DB Console zu reparieren, scheitert ....
Leider ist bei der DBConsole zu oft das alten Datenbank Home hinterlegt, das manuelle Anpassen führte nicht zum gewünschten Effekt.
DB Console verschieben (auf allen Knoten!!) und Pfade anpassen:
#altes Home cd /opt/oracle/product/11.2.0.4/dbhome_1 mv *GPI* /opt/oracle/product/11.2.0.4/dbhome_2 #Konfiguration anpassen # nun noch alle obigen kopierten Ordner für die DBConsole durchgehen und dort alle einträge suchen find . -name "*.xml" -exec grep -H dbhome_1 {} \; find . -name "*.properties" -exec grep -H dbhome_1 {} \; #j2ee #altes Home cd /opt/oracle/product/11.2.0.4/dbhome_1/oc4j/j2ee mv *GPI* /opt/oracle/product/11.2.0.4/dbhome_2/oc4j/j2ee/ # %s/dbhome_1/dbhome_2/g #Konfiguration anpassen: cd /opt/oracle/product/11.2.0.4/dbhome_2/oc4j/j2ee/ #konfigfiles finden und dann alle anpassen find . -name "*.xml" -exec grep -H dbhome_1 {} \; # nun noch alle obigen Ordner für die DBConsole durchgehen und dort alle einträge suchen
Das funktioniert leider nicht, d.h. die DB Console überlebt das nicht und muss dann neu angelegt werden!
Da hilft dann nur noch ein:
emca -deconfig dbcontrol db -repos drop -cluster
Und danach manuell alle Verzeichnisse der DB Console löschen!