Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:upgrade_18c_windows_2016_to_19c

Dies ist eine alte Version des Dokuments!


Umstellen auf Oracle 19c - Upgrade einer Oracle Single Instance Datenbank 18c auf Oracle 19c unter MS Server 2016

Mit Oracle 12c R2 / 18c / 19c ändert sich auch leicht der Upgrade Prozess von älteren DB Versionen inkl. der 12c R1.

Hier ein paar Anmerkungen zum generellen Ablauf mit Hilfe der „preupgrade.jar“ und „dbupgrade.cmd“ Tools beim Upgrade von Oracle 18 auf Oracle 19.


Ablauf

Genereller schematischer Ablauf:

  1. Password vom lokalen ORARUN User auf dem System heraussuchen
  2. DB Software in ein neues Oracle Home entpacken und Oracle Home mit Setup Programm initialisieren
  3. Neues DB Home mit letzten DB Patch patchen
  4. Pre Upgrade Scripte auf der DB in der 18c Umgebung laufen lassen und Anweisungen ausführen, DB für den Upgarade aufräumen/optimieren
  5. DB im alten Home Stoppen
  6. DB Service im neuen Home anlegen
  7. DB Upgrade im neuen Home durchführen
  8. Alle DB Scripte wie Backup / ETL Jobs etc. auf neues DB Home anpassen

Installation Software 19c

Es sollten noch mindestens 7 GB Platz für die Software Installation zur Verfügung stehen.

Ein 4k Display wird nicht unterstützt, hier hilft dann nur die Windows Lupe zu verwenden, oder versuchen die DPI Eigenschaften unter Compatible anzupassen.

Seit der 18c wird das Oracle Home der Datenbank Software komplett kopiert als ZIP File mitgeliefert und die Software wird in das gewünschten Verzeichnis einfach ausgepackt.

Usernamen vom ORARUN User heraussuchen!

Das Setup Programm konfiguriert dann dieses ORACLE_HOME Verzeichnis.

Ablauf:

  • Download der Software Oracle Database 19c (19.3) for Microsoft Windows x64 (64-bit) über das Edelivery Portal ⇒ https://edelivery.oracle.com/ oder https://www.oracle.com/database/technologies/oracle19c-windows-downloads.html
    • Prüfen der Checksum
      -- (3,105,763,999 bytes) (sha256sum - 64d92018207829833bd4d00f1a7fb40c531c8a4a68ded9e430a5d6fbaedaca95)
       
       Get-FileHash .\WINDOWS.X64_180000_db_home\ -Algorithm SHA256
      Algorithm       Hash
      ---------       ----
      SHA256          64D92018207829833BD4D00F1A7FB40C531C8A4A68DED9E430A5D6FBAEDACA95
  • Auspacken der Datei WINDOWS.X64_193000_db_home.zip mit der Oracle 19c Software in eine neues Oracle Home wie „C:\oracle\products\19.3.0.0\dbhome_1“
    mkdir  C:\oracle\products\19.3.0.0\dbhome_1
     
    expand-archive -path 'D:\install\oracle\database\19c\WINDOWS.X64_193000_db_home.zip' -destinationpath 'C:\oracle\products\19.3.0.0.0\dbhome_1'
  • Öffnen einer administrativen Powershell Session und starten der setup.bat Datei im Oracle Home Verzeichnis
     cd C:\oracle\products\19.3.0.0\dbhome_1
     .\setup.bat

Install Wizard Ablauf:

  • „Software only“ Auswahl
  • Single Instance
  • EE oder SE Edition auswählen
  • Bestehenden Oracle Run User verwenden!
  • Auf das richtiges Oracle Base Verzeichnis achten, in meinen Fall „C:\oracle“
  • Mit Install abschließen, die Software in dem Home wird nun konfiguriert

Nach der Software Installation wird geprüft ob ein aktueller Patch für die 19c unter Windows schon zur Verfügung steht.

Siehe dazu Assistant: Download Reference for Oracle Database/GI Update, Revision, PSU, SPU(CPU), Bundle Patches, Patchsets and Base Releases (Doc ID 2118136.2)

Für die 19.3 ist aber noch kein RU oder gar ein RUR verfügbar ( 08.2019) , bzw. bei Windows ist das ja dann immer noch ein Bundle Patch.

Hier ein paar Link zur Oracle Release Strategie ⇒Eleanor Meritt - Oracle Open World 2017 https://static.rainfocus.com/oracle/oow17/sess/1496886539973001Z80G/PF/CON6550-NewReleaseModelForOracleDatabase-v9_1506958121732001IJYT.pptx und https://mikedietrichde.com/2017/10/24/differences-psu-bp-ru-rur/

Sollte der Patch schon verfügbar sein, diesen nun einspielen.


Upgrade der Datenbank

Zuvor immer das Backup der bestehenden Datenbank sicherstellen!

PreCheck durchführen

Das kann alles noch im laufenden Betrieb der Umgebung vorbereitet werden.

Check der bestehenden Datenbank mit dem preupgrade.jar und erzeugen des Fixup Scripts:

# Darauf achten das noch die SID und ORACLE_HOME des ALTEN Homes in der Umgebung gesetzt sind!
# Falls kein Java installiert, das der DB "ausleihen" $ORACLE_HOME/jdk/bin/java.exe
 
cd C:\oracle\products\19.3.0.0\dbhome_1
 
.\jdk\bin\java.exe -jar .\rdbms\admin\preupgrade.jar TERMINAL TEXT
 
 
 
...
==================
PREUPGRADE SUMMARY
==================
  C:\oracle\cfgtoollogs\GPI\preupgrade\preupgrade.log
  C:\oracle\cfgtoollogs\GPI\preupgrade\preupgrade_fixups.sql
  C:\oracle\cfgtoollogs\GPI\preupgrade\postupgrade_fixups.sql
 

Die erzeugten Aussgaben in C:\oracle\cfgtoollogs\GPI\preupgrade\preupgrade.log sorgfältig lesen und möglichst befolgen!

Zusätzlich werden die PreUpgrade und PostUpgrade SQL Scripte erzeugt.

Das preupgrade_fixups.sql MUSS zuvor in der alten DB Umgebung auf der zu migrierenden Datenbank aufgerufen werden!

PreCheck Script ausführen

PreUpgrade Script auf in der „alten“ DB Umgebung als sys ausführen

sqlplus / AS sysdba
 
@C:\oracle\cfgtoollogs\GPI\preupgrade\preupgrade_fixups.sql

Anweisungen befolgen wie DB Statistik neu anlegen!

EXECUTE DBMS_STATS.GATHER_DICTIONARY_STATS;  

Besonderers darauf achten das in Passwörter der DB user die NUR in der Version 10g vorliegen, neu gesetzt werden!

SELECT password_versions,username FROM dba_users WHERE password_versions LIKE '%10G%';

Nach dem Upgrade können sich die User mit NUR 10g PWD nicht mehr an der DB 18c anmelden!


DB Umzug

Password vom ORARUN User heraussuchen! Wird dann später am Anlegen des DB und des Listener Service auf jeden Fall benötigt!

Init.ora und Password Datei in die neue Umgebung nach $ORACLE_HOME\database kopieren

  • listener.ora / tnsnames.ora / sqlnet.ora in das neue Home nach $ORACLE_HOME\network\admin kopieren
    • Pfade in der Listener.ora anpassen!

Datenbank im alten Home stoppen

  1. Datenbank mit shutdown immediate herunterfahren
  2. Alle Oracle Dienste beenden

DB Service im alten Home löschen

Als Administrative Session!

$env:ORACLE_HOME="C:\oracle\products\19.3.0.0\dbhome_1"
 
cd $env:ORACLE_HOME\bin
 
 
oradim -delete -sid GPI
Listener Service im alten Home löschen

Als Administrative Session!

 # mit SC 
 cmd.exe
 sc query  OracleOraDB18Home1TNSListener
 sc stop   OracleOraDB18Home1TNSListener
 sc delete OracleOraDB18Home1TNSListener
Listener Service im neuen Home anlegen in dem von dort der Listener gestartet wird

Listner.ora und tnsnames.ora/sqlnet.ora aus alten Home/network/admin nach NEUES ORACLE_HOME/network/admin kopieren und anpassen

cmd als admin:

# Neues Oracle Home setzen und in das neue Oracle_Home/bin Verzeichnis wechseln!
 
$env:ORACLE_HOME="C:\oracle\products\19.3.0.0\dbhome_1"
 
cd $env:ORACLE_HOME\bin
 
./lsnrctl start

Prüfen ob der Service auch angelegt wurde und ob Autostart richtig gesetzt wurde, default ist manuell!

Problem:

Enter ORARUN's password :
 
TNSLSNR for 64-bit Windows: Version 19.0.0.0.0 - Production
System parameter file is C:\oracle\products\19.3.0.0\dbhome_1\network\admin\listener.ora
Log messages written to C:\oracle\diag\tnslsnr\saturn\listener\alert\log.xml
Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.10.1)(PORT=1521)))
TNS-12546: TNS:permission denied
 TNS-12560: TNS:protocol adapter error
  TNS-00516: Permission denied
   64-bit Windows Error: 13: Permission denied
 
Listener failed to start. See the error message(s) above...

hmm…. Listener auf den SYSTEM User geändert, nun funktioniert es …. so sollte das aber nicht sein!

Siehe auch Listener Fehler bei einer Installation unter Windows 8.1 wie TNS-12546 - TNS-00516 - 64-bit Windows Error: 13: Permission denied

Noch keine Idee was hier falsch läuft.

DB Service im neuen Home anlegen

init.ora/spfile/*.dat und pwd files vom alten Home/database in das neue Home/database legen

Eine Administrative PowerShell öffnen und den DB Service anlegen:

$env:ORACLE_HOME="C:\oracle\products\19.3.0.0\dbhome_1"
 
cd $env:ORACLE_HOME\bin
 
 
oradim -new -sid GPI
 
Enter password for Oracle service user:
Instance created.

Tritt ein „O/S-Error: (OS 5) Access is denied.“ Fehler auf, prüfe ob wirklich eine administrative PowerShell Session gestartet wurde!

Service kontrollieren und nach Bedarf einstellen.

Z.b. Registry prüfen „HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDB19Home1“ ORA_VDS_AUTOSTART auf TRUE setzen, falls Autostart gewünscht.

DB im Upgrade Modus im neuen Home starten

$ENV:ORACLE_SID="GPI"
 
sqlplus / as sysdba
 
startup upgrade
 
exit

Zur Überwachung des Alert Logs der DB diese mit einem Tail in zweiten Fenster anzeigen lassen:

adrci
 
adrci> show homes
ADR Homes:
..
diag\rdbms\gpi\gpi
..
 
adrci> set home diag\rdbms\gpi\gpi
adrci> show alert -tail -f
 
...
Completed: ALTER DATABASE OPEN MIGRATE
...

DB Upgrade mit "dbupgrade.cmd" Script durchführen

Der eigentliche Upgrade wird nun in der 18c über das Script „dbupgrade.cmd“ durchgeführt, das ruft das schon aus der 12c R1 bekannte Perl Upgrade Script auf.

Auch in sehr performanten Umgebungen lag die Laufzeit meist zwischen 40 und 60 Minuten.

Prüfen das ein sqlplus / as sysdba sich sehr schnell anmelden kann! In meinen Fall hat die Verzögerung dazu geführt das sich das Upgrade im ersten Schritt nicht durchführen ließ und im zweiten Versuchen, nach dem Fix des eigentlichen Problemes, NICHT mehr durchführen ließ! DB defekt :-\
 $env:ORACLE_HOME="D:\oracle\product\19.3.0.0\dbhome_1"
 
 cd $env:ORACLE_HOME\bin
 
 mkdir d:\temp\19cUpgrade
 
# pürfen ob sein sqlplus / as sysdba sich ohne Verzögerung anmeldet
# sqlpath evtl. unsetten damit keine eigenen Scripte stören!
# 
 
# Aufrufen:
 
 dbupgrade.cmd -n 4 -l d:\temp\19cUpgrade
 
......
 
Number of Cpus        = 8
Database Name         = GPI
DataBase Version      = 18.0.0.0.0
Parallel SQL Process Count            = 4
Components in [GPI]
    Installed [APEX APS CATALOG CATJAVA CATPROC CONTEXT DV JAVAVM OLS ORDIM OWM SDO XDB XML XOQ]
Not Installed [EM MGW ODM RAC WK]
 
------------------------------------------------------
Phases [0-107]         Start Time:[2019_09_17 20:41:24]
------------------------------------------------------
***********   Executing Change Scripts   ***********
Serial   Phase #:0    [GPI] Files:1    Time: 22s
***************   Catalog Core SQL   ***************
Serial   Phase #:1    [GPI] Files:5    Time: 30s
Restart  Phase #:2    [GPI] Files:1    Time: 3s
***********   Catalog Tables and Views   ***********
 
...
 
 
*****************   Post Upgrade   *****************
Serial   Phase #:103  [GPI] Files:1    Time: 20s
****************   Summary report   ****************
Serial   Phase #:104  [GPI] Files:1    Time: 5s
***   End PDB Application Upgrade Post-Shutdown   **
Serial   Phase #:105  [GPI] Files:1    Time: 6s
Serial   Phase #:106  [GPI] Files:1    Time: 0s
Serial   Phase #:107  [GPI] Files:1     Time: 44s
 
------------------------------------------------------
Phases [0-107]         End Time:[2019_09_17 21:11:57]
------------------------------------------------------
 
Grand Total Time: 1834s
 
 LOG FILES: (d:\temp\19cUpgrade\catupgrd*.log)
 
......

Fehler:catcon::exec_DB_script - line does not match marker

Lösung: meine login.sql hat den Login Vorgang verzögert, das Timiming ist für das Upgarde anscheinend sehr wichtig.

Restart mit -R ⇒ https://mikedietrichde.com/2017/01/24/restarting-a-failed-database-upgrade-with-catctl-pl/

Leider klappt dann ein Restart nicht mehr, das Script behaupted, die DB sei schon upgegarded, nochmals ohne den „-R“ Schalter gestartet.


POST Upgrade Script durchlaufen lassen
sqlplus / as sysdba
 
 
startup
 
@C:\oracle\cfgtoollogs\GPI\preupgrade\postupgrade_fixups.sql
...
 
 
Executing Oracle POST-Upgrade Fixup Script
 
Auto-Generated by:       Oracle Preupgrade Script
                         Version: 19.0.0.0.0 Build: 1
Generated on:            2019-09-17 10:38:56
 
For Source Database:     GPI
Source Database Version: 18.0.0.0.0
For Upgrade to Version:  19.0.0.0.0
 
Preup                             Preupgrade
Action                            Issue Is
Number  Preupgrade Check Name     Remedied    Further DBA Action
------  ------------------------  ----------  --------------------------------
   10.  depend_usr_tables         YES         None.
   11.  old_time_zones_exist      NO          Manual fixup recommended.
   12.  dir_symlinks              YES         None.
   13.  post_dictionary           YES         None.
   14.  post_fixed_objects        NO          Informational only.
                                              Further action is optional.

Auf ungültige Objekte prüfen und bei Bedarf alles neu übersetzen:

sqlplus / AS sysdba
 
@?/rdbms/admin/utlrp

Umgebung Einstellungen / Backup Scripte auf die neue DB anpassen

Default DB Home in eigenen Scripten wie dem Backup anpassen.

NLS Lang prüfen! ( HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDB19Home1\NLS_LANG) bei Bedarf von AMERICAN_AMERICA.WE8MSWIN1252 wieder auf GERMAN_GERMANY.WE8MSWIN1252 setzen.

Umgebung prüfen

Umgebung wie PATH prüfen das alles auf das neue Oracle Home zeigt.

Falls im Einsatz .Net Klassen umziehen

Die .Net Klassen aus dem alten Home deregistrieren und neu aus dem neuen Oracle Home registrieren.

Siehe Oracle 12c PL/SQL - Verwendung von .Net Libraries in PL/SQL - eine ".NET stored procedures" anlegen und aufrufen

Den .NET Framework Extension, Dienst CLR Agent auf das neue Oracle Home umziehen:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraDB12Home1ClrAgent
# ImagePath anpassen an z.B. 

D:\Oracle\product\19.3.0.0.0\dbhome_1\bin\OraClrAgnt.exe agent_sid=CLRExtProc 
max_dispatchers=5 tcp_dispatchers=3 max_task_threads=10 max_sessions=50 
ENVS=\"EXTPROC_DLLS=ONLY:D:\Oracle\product\19.3.0.0.0\dbhome_1\bin\oraclr19.dll\"


Problem - ADRCI Error DIA-49803: Purge not possible due to incompatible schema version.

Nach ein paar Tagen sollen die Logfiles des Listener und der DB mit adrci aufgeräumt werden:

Das Problem: DIA-49803: Purge not possible due to incompatible schema version.

adrci> set home diag\tnslsnr\v65690\listener
adrci> purge -age 0
DIA-49803: Purge not possible due to incompatible schema version.

Lösung:

Als erstes darauf achten, das auch das richtige ADRCI ( das aus dem akteuellen 18'er Home ) gestartet wird!

Danach folgende Node beachten! ⇒ siehe ADRCI Error DIA-49803 - Purge Does Not Work In 12.2 If ADRCI Is Used To Access An Older ADR Home (Doc ID 2341825.1)

Das hat mir aber dann auch nicht weitergeholfen, bei mir hat folgendes geklappt:

adrci> migrate schema
 
Schema migrated.
 
adrci> purge -age 0

Compatible Parameter umstellen

show parameter compatible                           
 
NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
compatible                           string                            12.1.0.2.0
 
 
ALTER system SET compatible='19.3.0.0.0' scope=spfile sid='*';
 
 
-- neu starten
 
startup force

Quellen

Upgrade mit einer Physical Standby Umgebung 18c R2 auf 19c

Genereller Ablauf aus ⇒ https://docs.oracle.com/database/121/SBYDB/upgrades.htm#SBYDB4933

  • Primär - Installation Software 19c in neuen Oracle Home
  • Primär - Patch Software 19c im neuem Oracle Home
  • Standby - Installation Software 18c in neuen Oracle Home
  • Standby - Patch Software 18c im neuem Oracle Home
  • Primär - PreUpgrade Steps für die noch im R1 laufenden Home laufende Datenbank durchführen
  • Primär - Datenbank stoppen
  • Standby - Datenbank stoppen
  • Standby - DB auf neues Home umziehen, Listener aus neuen Home Starten PWD und init File ins neue Home kopieren, DB Service löschen und mit neuen Home neu anlegen, Pfade alle anpassen, wie PATH etc!
  • Standby - Mount der alten Datenbank über Datagard , nur mount Status!
  • Standby - Log shipping von der alten DB prüfen, Redo Apply auf the physical standby database aktivieren/prüfen
  • Primär - Datenbank ins neue Home umziehen, Listener aus neuen Home Starten PWD und init File ins neue Home kopieren, DB Service löschen und mit neuen Home neu anlegen, Pfade alle anpassen, wie PATH etc!
  • Primär - DB Upgarde durchführen
  • Primär - DB öffnen und prüfen Standby in Sync
  • Primär - dgmgrl testen , falls Fehler ORA-16714: the value of property string is inconsistent with the database setting
     SHOW DATABASE orasb 'InconsistentProperties';
    NCONSISTENT PROPERTIES
       INSTANCE_NAME  PROPERTY_NAME    MEMORY_VALUE   SPFILE_VALUE    BROKER_VALUE 
              DGA24L  DATAGUARDSYNCLATENCY       0                        0
     
    -- auf beiden systemen
     
    ALTER SYSTEM SET DATA_GUARD_SYNC_LATENCY=0 scope=BOTH sid='*';

    Parameter siehe DATA_GUARD_SYNC_LATENCY

Optional den COMPATIBLE initialization parameter auf beiden Seiten anpassen


Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
dba/upgrade_18c_windows_2016_to_19c.1568750504.txt.gz · Zuletzt geändert: 2019/09/17 22:01 von gpipperr