Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:upgrade_11g_windows_2008

Oracle Datenbank 11g 11.2.0.1 auf aktuelleste Release 11.2.0.4 + Patch unter Windows 2008 upgraden

Vorbereitung:

Genereller Ablauf:

  • Download Oracle RDBMS Software 11.2.0.4 + letzter Patch Stand
  • Installation der Oracle Software in ein neues Oracle Home
  • Pre Installation Scripts und Vorbereitungen
  • Downtime Start
  • Listener in neues Home umziehen
  • Datenbank in neues Homes umziehen und upgraden
  • Downtime End

Software

Über Oracle Support Portal folgende Patche laden:

  • p13390677 (11.2.0.4 DB Version) für Windows x86 64bit
  • p6880880 ((MSWIN x86 64 - OPatch Patch Set)
  • p19651773 (MSWIN x86 64 - WINDOWS DB BUNDLE PATCH 11.2.0.4.10)

Über den „View Digest“ in der Download Maske den MD5 Hash merken!

Software 11.2.0.4 + Patch Installation

Software bereitstellen und auspacken

Software auf den DB Host kopieren (zum Beispiel nach d:\install ) , MD5 Checksum der zip Archive überprüfen und auspacken.

Hier in der Windows Powershell:

#MD5 Hash ermitteln
 
[Reflection.Assembly]::LoadWithPartialName("System.Web")
[System.Web.Security.FormsAuthentication]::HashPasswordForStoringInConfigFile("p13390677_112040_MSWIN-x86-64_1of7.zip","MD5")
 
C5A0CAB903EF4995C6EB052A43F24787
 
[System.Web.Security.FormsAuthentication]::HashPasswordForStoringInConfigFile("p13390677_112040_MSWIN-x86-64_2of7.zip","MD5")
 
20CC44FE26729FC98725DC3D287E2187
 
[System.Web.Security.FormsAuthentication]::HashPasswordForStoringInConfigFile("p6880880_112000_MSWIN-x86-64.zip","MD5")
 
53A3DB3FE3A22188A9620DB514A4157B
 
[System.Web.Security.FormsAuthentication]::HashPasswordForStoringInConfigFile("p19651773_112040_MSWIN-x86-64.zip","MD5")
 
1C9576953D0F62F1B7621B05A600D5BF
 
 
# Database Software
unzip p13390677_112040_MSWIN-x86-64_1of7.zip
unzip p13390677_112040_MSWIN-x86-64_1of7.zip
 
#Patch 
 
mkdir patch
 
unzip '.\p19651773_112040_MSWIN-x86-64.zip' -d patch
 
# Opatch muss nicht entpacket werden, wird später direkt in das neue Oracle Home ausgepackt

Software installieren und Patchen

Die Software 11.2.0.4 installieren - im aktuellen Fall eine SE Edition - in ein neues Oracle Home wie „D:\oracle\product\11.2.0.4\dbhome_1“ .

Setup aufrufen und wie gewohnt Software („Install database software only“!) in der zuvor ermittelten Version installieren, bei einer EE Edition darauf achten auch die entsprechenden Optionen der DB (falls im Einsatz) wieder mit zu installieren.

Umgebungsscripte anpassen

Auch in der Windows Welt sollte die Wartung der Datenbank hauptsächlich über die Command Shell durchgeführt werden.

Zum Setzen der dazu notwendigen Umgebungsvariablen empfehle ich die https://orapowershell.codeplex.com/, nach der Software Installation muss hier nun die XML Konfiguration für ein neues Oracle Home angepasst werden.

OPatch p6880880_112000_MSWIN-x86-64.zip einspielen

Vor einem Patch der neuen Software muss der Patch Installer auf die aktuellste Version aktualisiert werden.

Powershell öffnen und Umgebung auf das neue Oracle Home einstellen:

# mit der OraPowerShell setdb
# oder alternativ manuell
 
set-item -path env:ORACLE_HOME -value D:\oracle\product\11.2.0.4\dbhome_1
 
echo $ENV:ORACLE_HOME
D:\oracle\product\11.2.0.4\dbhome_1
 
 
#alte Version pürfen
 
cd $ENV:ORACLE_HOME\OPatch
.\opatch version
OPatch Version: 11.2.0.3.4
 
 
cd d:\install
 
mv $ENV:ORACLE_HOME\OPatch $ENV:ORACLE_HOME\OPatch_OLD
 
unzip .\p6880880_112000_MSWIN-x86-64.zip -d $ENV:ORACLE_HOME
 
 
# Neue Version überprüfen
 
cd $ENV:ORACLE_HOME\OPatch
 
.\opatch version
OPatch Version: 11.2.0.3.6
Patch WINDOWS DB BUNDLE PATCH 11.2.0.4.10 - PSU Oktober 2014 - einspielen

Prüfen ob der „Oracle MTS Recovery Service“ und der „Distributed Connection Coordinator“ ausgeschaltet sind!

Mit Opatch den Patch in das neue Software Home einspielen:

Powershell Beisiel:

# mit der OraPowerShell setdb
# oder alternativ manuell
 
set-item -path env:ORACLE_HOME -value D:\oracle\product\11.2.0.4\dbhome_1
 
D:\install\patch\19651773
 
# Da opatch.bat noch ein DOS Schell Script ist, besser in der CMD Shell aufrufen
 
cmd.exe /c $ENV:ORACLE_HOME\OPatch\opatch apply
 
#Fragen beantworten
Email address/User Name:
 
You have not provided an email address for notification of security issues.
Do you wish to remain uninformed of security issues ([Y]es, [N]o) [N]:  Y
 
..
Is the local system ready for patching? [y|n]
y
User Responded with: Y
...
 
OPatch succeeded.
 
cd $ENV:ORACLE_HOME\OPatch
 
.\opatch lsinventory
 
..
Patch  19651773     : applied on Wed Dec 31 11:04:16 UTC 2014
Unique Patch ID:  18139602
Patch description:  "WINDOWS DB BUNDLE PATCH 11.2.0.4.10:(19651773)"
..

"Alte" Datenbank prüfen und vorbereiten

Auf ungültige Objekte prüfen

In der Datenbank vor dem Upgrade sollten KEINE Datenbank Objekte ungültig sein. So weit wie möglich mit der Entwicklung zusammen aufräumen und reparieren.

Auf keinen Fall dürfen aber Objecte des SYS oder SYSTEM Users ungültig sein! Ursachen dafür suchen und fixen! Zur Not den Oracle Support dafür einschalten!

 SELECT object_name
      , object_type
      , owner
  FROM dba_objects 
 WHERE STATUS='INVALID'
/

Script siehe auch invalid.sql

Mit „@?\rdbms\admin\utlrp.sql“ ungültige SYS Objekte bei Bedarf neu übersetzen.

Papierkorb leeren

Gelegentlich können alte und eigentlich gelöschte Objekte durch Abhängigkeiten den Upgrade Prozess stark stören, daher Papierkorb auf jeden Fall vor dem Upgrade löschen!

purge DBA_RECYCLEBIN;

Statistiken neu aufbauen

Die Performance des Upgrades läßt sich erheblich durch passende Statistiken auf dem Data Dictionary steigern.

Neue Statisken anlegen:

 EXECUTE dbms_stats.gather_dictionary_stats;

PreUpgrade Scripts ausführen und Anweisungen befolgen

Neue DOS/Powershell Session öffnen/ Umgebung auf die „alte“ DB setzen und das PreUpgrade Script utlu112i.sql aus der NEUEN Umgebung ausführen.

# set the enviroment
# setdb with oraPowerShell
 
sqlplus / as sysdba
 
SYS>@D:\oracle\product\11.2.0.4\dbhome_1\RDBMS\ADMIN\utlu112i.sql

Besonders auf die Anweisungen in der WARNING Section achten

Wie:

WARNING: --> Database is using a timezone file older than version 14.
.... After the release migration, it is recommended that DBMS_DST package
.... be used to upgrade the 11.2.0.1.0 database timezone version
.... to the latest version which comes with the new release.

Neue init.ora im neuen Oracle Home anlegen und bei Bedarf anpassen

Auf die Hinweise vom utlu112i.sql zuvor achten und einen eine init.ora mit den angepassten Werte und OHNE „_“ Parameter erzeugen

# set the enviroment
# setdb with oraPowerShell
 
sqlplus / as sysdba
 
SQL>create pfile='D:\oracle\product\11.2.0.4\dbhome_1\database\initVDS.ora' from spfile;

Datei öffnen und die Parameter wie „*.compatible='11.2.0.4.0'“ anpassen.

Spfile aus der Init.ora im neuen Oracle Home erzeugen

Ein spfile kann auch per SQL*Plus aus einer bestehenden init.ora ohne DB Instance erzeugt werden.

# Umgebung auf das Neue Home gesetzt!
 
sqlplus /nolog
 
SYS>create spfile='D:\oracle\product\11.2.0.4\dbhome_1\database\SPFILEVDS.ORA' from pfile='D:\oracle\product\11.2.0.4\dbhome_1\database\initVDS.ora';
 
File created.

Prüfen ob die Datei da auch ist!

Password Files in das neuen Oracle Home kopieren

cp D:\oracle\product\11.2.0\dbhome_1\database\PWDVDS.ora D:\oracle\product\11.2.0.4\dbhome_1\database

Downtime Begin

Monitoring für die DB/Application auf Wartung setzen

Nun beginnt die eigentliche Downtime für die produktive Datenbank.

Anwendungen wie gewohnt stoppen und DB mit „shutdown immediate“ sauber stoppen.

sqlplus / AS sysdba
 
shutdown immediate

Listener umziehen

  • Listener im alten Home stoppen bzw. den Dienst stoppen
    lsnrctl stop 
  • Listener.ora in das neue Home kopieren
    cp D:\oracle\product\11.2.0\dbhome_1\network\admin\listener.ora D:\oracle\product\11.2.0.4\dbhome_1\network\admin\listener.ora
  • In Administrativer Powershell Session den alten Service entfernen
    cmd /c sc delete OracleOraDb11g_home1TNSListener
    [SC] DeleteService SUCCESS
  • In Administrativer Powershell Session den neuen Listener starten, damit wird auch der neue Service angelet
    # Umgebung auf das neue Home setzen
    # Fehler kann ignoriert werden, bedeutet das der Dienst noch nicht existiert und nun angelegt wird.
    
    cd $ENV:ORACLE_HOME/bin
    
    ./lsnrctl start
    
    Starting tnslsnr: please wait...
    
    Failed to open service <OracleOraDb11g_home2TNSListener>, error 1060.
    TNSLSNR for 64-bit Windows: Version 11.2.0.4.0 - Production
    

Windows Service im neuen Oracle Home anlegen

Alten Service im alten Home löschen und neuen Service anlegen

# Umgebung auf das alte Home setzen
 
#zuvor Datenbank stoppen! falls noch nicht gestoppt
oradim -SHUTDOWN -SID VDS -SHUTTYPE inst -SHUTMODE immediate
 
# Dienst löschen
oradim -DELETE -SID VDS
 
 
 
# Umgebung auf das neue Home setzen
 
#Dienst wieder anlegen
#aber vorerstmal nicht die Instance gleich mitstarten!
 
oradim -NEW -SID VDS -STARTMODE auto -SHUTMODE immediate -SPFILE

Datenbank aus dem neuen Home im Upgrade Mode starten und Upgrade durchführen

Upgrade Script @catupgrd.sql
# Umgebung auf das neue Home setzen
 
cd $ENV:ORACLE_HOME/rdbms/admin
 
sqlplus  / as sysdba
 
SQL>startup upgrade
 
SQL>spool d:\temp\upgrade_11_2_0_4.log
 
 
SQL>@catupgrd.sql
 
 
 
...
Upgrade Script runs ~30 to 45 minutes
..
 
sqlplus / as sysdba
 
SQL>startup

Ungültige Objekte neu übersetzen:

SQL>@?/rdbms/admin/utlrp.sql

Fixed Object Statisiken neu anlegen ~ 5min

SQL>EXECUTE dbms_stats.gather_fixed_objects_stats;
Post Upgrade Script catuppst.sql

Dauer ~2min

SQL> @?/rdbms/admin/catuppst.sql
Post Upgrade Script utlu121s.sql
SQL> @?/rdbms/admin/utlu112s.sql
-- auf ungültige Optionen achten und Ursache über Support Portal suchen und  "reparieren"

Darauf achten das alle DB Optionen auch gültig sind!

Probleme

Package DRIOPT und Oracle TEXT „INVALID“!

Fehlermeldung nach dem Recomplile: „Failed Check for package body DIROPT“

ALTER PACKAGE CTXSYS.DRIOPT COMPILE;

grant select on SYS.DBA_INDEXES to ctxsys;
grant select on SYS.DBA_TRIGGERS to ctxsys;
grant select on SYS.DBA_PART_KEY_COLUMNS to ctxsys;
grant select on SYS.DBA_SEGMENTS to ctxsys;

@?/rdbms/admin/utlrp.sql
     

Support Node:

  • The STATUS Of Oracle Text In DBA_REGISTRY=INVALID; CTXSYS.DRIOPT Package Body Is INVALID - Compilation Errors = ORA-942 PLS-364: loop index variable 'COL' use is invalid (Doc ID 1499153.1)

Alert.log prüfen

adrci
 
show alert

Auto Start testen

Steht noch genügend Zeit in der Downtime zur Verfügung, kann nun die Maschine neu gestartet werden um auch den Autostart aller Dienste zu prüfen.

Vor dem Reboot auch prüfen ob der Service für die Datenbank und den Oracle Listener auf „Automatic“ steht und die Registriy Keyes für einen Autostart auch gesetz sind (⇒ siehe auch Start der Oracle Instance unter Windows ).

Bei Bedarf DB vor dem Reboot stoppen und Alert log etc. aufräumen.

adrci
 
adrci>show homes
 
adrci> set home <home von oben>
 
adric>purge -age 0

Trace Verzeichniss um Diag Home der DB löschen

Downtime beendet

Testen ob die DB im Listener registiert ist und Remote sich die Applikation wieder anmelden kann.

Funktioniert alles, kann die Applikation neu gestartet werden.

Nacharbeiten

Workload Statistiken neu berechnen bzw. anlegen

Workload Statisik siehe auch ⇒ Statistiken anlegen und überwachen

Start während der laufenden Arbeitszeit

EXECUTE DBMS_STATS.gather_system_stats('Start');   

Stoppen ca. 1h später

EXECUTE DBMS_STATS.gather_system_stats('Stop');
 
 
column sname format a20
column pname format a20
column pval2 format a20
SELECT
 sname
 , pname
 , pval1
 , pval2
 FROM
sys.aux_stats$;

I/O Statistiken neu berechnen bzw. anlegen

I/O Calibarate ausführen (Ohne i/O Calibrate Informationen wird in der 11.2.0.4 Release Auto DOP nicht mehr vom Optimizer angewandt!)

SET pagesize 300
SET linesize 150
 
COLUMN name       format a35
COLUMN start_time format a25
COLUMN end_time   format a25
 
 
SELECT * 
  FROM  sys.RESOURCE_IO_CALIBRATE$
/
 
SELECT * 
   FROM GV$IO_CALIBRATION_STATUS
/
 
prompt ...
prompt ... CHECK that ALL disks are ON async IO!
prompt ...
 
SELECT COUNT(*)
     , i.asynch_io 
  FROM v$datafile f
     , v$iostat_file i
 WHERE f.file#          = i.file_no
   AND i.filetype_name  = 'Data File'
 GROUP BY i.asynch_io  
 /
 
prompt ...
prompt ... CHECK that ALL disks are ON async IO!
prompt ...
 
 
SET serveroutput ON
SET timing ON
SET TIME ON
 
-- set the Count of Disk on the count of luns behind the ASM disks 
--
DECLARE
  lat  INTEGER;
  iops INTEGER;
  mbps INTEGER;
BEGIN
  dbms_resource_manager.calibrate_io (  
		  num_physical_disks    => 36 -- set this value to your Disk Count!
		, max_latency           => 10
		, max_iops              => iops
		, max_mbps              => mbps
		, actual_latency        => lat
	);	
 
  dbms_output.put_line('max_iops = ' || iops);
  dbms_output.put_line('latency  = ' || lat);
  dbms_output.put_line('max_mbps = ' || mbps);
END;
/
 
 
SET timing off
SET TIME off
 
 
 
COLUMN START_TIME          format a21    heading "Start|time"			
COLUMN END_TIME 			   format a21    heading "End|time"
COLUMN MAX_IOPS 			   format 9999999 heading "Block/s|data block" 
COLUMN MAX_MBPS 			   format 9999999 heading "MB/s|maximum-sized read" 
COLUMN MAX_PMBPS 			   format 9999999 heading "MB/s|largeI/0" 
COLUMN LATENCY 				format 9999999 heading "Latency|data block read" 
COLUMN NUM_PHYSICAL_DISKS  format 999     heading "Disk|Cnt"
 
 
SELECT to_char(START_TIME,'dd.mm.yyyy hh24:mi') AS START_TIME
	,to_char(END_TIME,'dd.mm.yyyy hh24:mi') AS END_TIME 			
	,MAX_IOPS 			
	,MAX_MBPS 			
	,MAX_PMBPS 			
	,LATENCY 				
	,NUM_PHYSICAL_DISKS
  FROM dba_rsrc_io_calibrate
/

Backup Scripte prüfen / anpassen und neues Backup erstellen - Monitorring Scripte prüfen

Das Backup Script prüfen und bei Bedarf anpassen!

Ein neues Backup erstellen!

Monitorring Scripte prüfen

DATA_PUMP_DIR prüfen

Nach einem Upgrade war der DIRECTORY_PATH vom DATA_PUMP_DIR wieder auf den Default gestellt.

Prüfen!

Die alte Software vollständig wieder entfernen

Ein einfaches Löschen des alten Oracle Homes reicht nicht aus, die Einträge im Oracle Inventory und in der Registry sollten auch entfernt werden.

Achtung: Falls gestartet zuvor den „Distributed Transaction Coordinator“ stoppen, der hält die „oci.dll“ im alten Home noch offen! Um zu prüfen ob noch Datein im alten Pfad offen, sind diesen kurzfristig umbenennen, zum beispiel mit einem führenden „_“

Dazu steht im Alten Home unter D:\oracle\product\11.2.0\dbhome_1\deinstall ein „deinstall.bat“ Script zur Verfügung:

#Umgebung auf das alte Home Umgebung setzen
 
cd $ENV:ORACLE_HOME\deinstall
 
./deinstall.bat

In meine Fall musste ich das Script mehr als einmal aufrufen, damit es zum Schluss tatsächlich wie erwartet funktioniert hat.

Über Dos Shell aufgerufen, ohne Umgebungs-Settings:

# ohne gesetzte Umgebung 
 
D:\oracle\product\11.2.0\dbhome_1\deinstall\deinstall.bat
 
# Reste danach noch weglöschen!

Dokumentation:

Quellen

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
"Autor: Gunther Pipperr"
dba/upgrade_11g_windows_2008.txt · Zuletzt geändert: 2015/01/12 13:00 von Gunther Pippèrr