=====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!