Upgrade von 11gR1 auf 11gR2 11.2.0.3.x mit PSU
Beim letzten Upgrade eines Real Application Cluster von 11gR1 auf 11gR2 sind wir auf mehrere Probleme gestossen, die sich durch folgende Tricks beseitigen lassen.
Fileprotection Probleme beim PSU
Ab Oracle 11gR2 wird der PSU automatisiert sowohl als ROOT als auch als ORACLE eingespielt, leider sind einige Filesprotections im PSU nicht korrekt dafür vorbereitet.
Lösungsvorschlag
als ROOT, der PSU liegt in /tmp
mkdir /tmp/PSU
cd /tmp/PSU
unzip /tmp/p*.zip
chmod -R 777 *
Platz Probleme in den verschiedenen zu patchenden Oracle Homes
In jedem zu patchenden ORACLE_HOME müssen mindestens noch 2-3GB Speicherplatz zur Verfügung stehen, wenn das ORACLE_HOME der Grid Infrastruktur und der Datenbank Software im gleichen Filesystem liegen, benötigt man entsprechende 5-6GB.
Datenbank ORACLE_HOME wird nicht gepached
OPatch findet - auch wenn die ORACLE_HOMEs in der oratab angegeben sind - die ORACLE_HOMEs der Datenbank nur, wenn diese in der Cluster Registry stehen. Wenn man zum Zeitpunkt des Patcheinspielens noch keine Datenbank im Cluster hat, kann man einfach eine definieren und nach dem einspielen des Patches wieder löschen.
1) Datenbank einlegen
srvctl add database -d TEMPDB -o <pfad_auf_oracle_home>
2) Patch einspielen
3) Datenbank wieder löschen
srvctl remove database -d TEMPDB
ORACLE_HOMEs älterer Datenbankversionen
Wenn ORACLE_HOMEs von älteren Datenbankversionen (zb: 11gR1 oder 10gR2) installiert sind, muss man auch in diesen ORACLE_HOMEs OPAtch auf 11.2.0.3 (oder höher) patchen. Wenn man dies nicht macht, gibt es beim einspielen des PSU mittels "opatch version check" einen Fehler und dann wird das einspielen des PSU abgebrochen.
PATH Environmentvariable
Damit das einspielen des PSU fehlerfrei funktioniert, muss /<grid_home>/OPatch im Pfad sein, sonst findet OPatch sich im Laufe der verschiedenen Aufrufe sich selbst nicht mehr.
Sonstige Fileprotection Probleme
Beim Einspielen des PSU muss sichergestellt werden, dass unter jedem Benutzer (ROOT, GRID, ORACLE,...) Zugriff auf verschiedene Programme und Verzeichnisse haben. Dies ist praktisch nur dann möglich, wenn man die Fileprotection wie folgt ändert:
chmod 777 auf das "opatch" executable
chmod 777 auf alle $ORACLE_HOME/cfgtoollogs/opatch (Datenbanken und GRID)
Einspielen des PSU
Wenn man alle diese Probleme umschifft hat, dann funktioniert das einspielen des PSU wirklich mit folgenden Aufrufen:
als ROOT:
opatch auto /tmp/PSU -ocmrf /tmp/ocm.rsp -oh <pfad_auf_grid_home>
bzw
opatch auto /tmp/PSU -ocmrf /tmp/ocm.rsp -oh <pfad_auf_datenbank_home>