=====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 [[dba:install_dbconsole|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!