Already 4 years we plan the upgrade from 11c to a new supported version.
Somehow, on the one hand business projects were more important, on the other hand the exact technical procedure was not clear.
All databases have to be migrated, but some software vendors did not offer support at all.
The requirements diverged: consolidation to save costs versus dedicated environments to manage security and operations more easily.
When we finally knew how we wanted to proceed, technical details quickly threw the planning off course.
The target platform became 12c, 18 and now 19c
At some point, however, the threat of the final loss of support for 11g and the accumulating other requirements put the necessary pressure on the implementation.
This presentation will show you how and why we proceeded in this way and how we finally reached the finish line.
Maybe our experiences will help some of you to finally take the step!
4. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Was mache ich?
Torsten Kleiber
So ware-Architekt, DevOps
Kreditpla orm
Seit 21 Jahren bei der IKB
24 Jahre Erfahrung
PL/SQL
Forms & Reports
ADF
SOA Mediator
Architektur & Infrastruktur
Fusion Middleware
Development Tools
Development Lifecycle
seit dem Projekt ein halber DBA
Kontakt
Our way to 19cOur way to 19c
4
5. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Im Anfang war das Wort … Projektskizze
Ausgangslage 2016:
Premier Support für 11.2 ist seit 1.1.2015 beendet
Extended Support nur bis 31.5.2017 kostenfrei
Interner Provider wünscht Datenbank-Update
Bisher: Eine Bank ist kein So warehaus!
November 2016: Budgetplanung für 2017
Ab 31.5.2017 Kosten für den Extended Support
Diese kann man reduzieren und ROI ausrechnen
Und nebenbei auch das Risiko minimieren
Teamleiter erstellt Projektskizze für Migra on nach 12c:
KreDa & in Datenbank "konsolidierte" Anwendungen
5 TEUR / 200 MT intern / 3 Monate / 1 Monat Frozen Zone
Our way to 19cOur way to 19c
5
6. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Starten! Womit noch mal gleich?
2017: Projekt ist genehmigt, Übergabe an Projektleiter
Analyse Lifecycle Server: End of Life → neue Server!
Analyse Zer fizierungen zw. Datenbank, OS, So ware:
11g < / 12c >= SLES 12 → neue Server, kein Inplace Upgrade!
3rd Party SW: teilweise nicht upgradefähig → Trennung!
Analyse Dependencies
4 Server, 15 x 11.2 Instanzen (9 KreDa), 2 x 12.1 Instanzen
11.2 Instanzen teilen sich das Oracle-Home (Shared Services)
ca. 20 weitere Anwendungen aus 5 Teams
diverse Schemas, die nicht direkt zugeordnet werden können
Hilfe!!!
Our way to 19cOur way to 19c
6
7. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
"Vorstudie"-ren geht über Probieren
Vorarbeiten leisten
Abschaltungen verringern Analyse- und Migra ons-Umfang
Festlegung Umfang und Planung für eigentliche Migra on
passenden Zeitpunkt für Migra onen definieren
Our way to 19cOur way to 19c
7.1
8. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Anwendungen und Datenbanken iterativ bereinigen
Abschaltungen wegen Restrukturierung der Bank
Auslagerung von Datensicherungen auf Band
Migra onen nach MS SQL Server
verbleibende Anwendungen auf Alt-Umgebung
nicht mehr benö gte Schemas/User sperren und später löschen
nicht zugeordnete Rollen löschen
Tablespaces ohne Objekte
Datenbankdateien ohne Zugriff
Datenbankobjekte, die nicht in VCS exis eren
tnsnames.ora bereinigt
Our way to 19cOur way to 19c
7.2
10. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Architekturauswahl
5 Alterna ven:
1. Shared Server für alle Applika onen wie bisher
2. dedizierte Datenbank-Instanz für KreDa auf Shared Server
3. dedizierter Datenbank-Server für KreDa, Rest Shared Server
4. dedizierter Datenbank-Server für KreDa, Rest Downscaled
Shared Server
5. dedizierte Datenbank-Server für KreDa & Marktdaten
a. incl. Unicode Migra on
b. Konsolidierung KreDa Instanzen wegen Unicode
c. Rest dedizierte Instanzen auf Shared Server
Our way to 19cOur way to 19c
7.4
11. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Projektantrag für Migration nach Xc
5 zu migrierende Anwendungen, KreDa ist die komplexeste
Zielversion jeweils aktuelle verfügbare und zer fizierte Version
Ablösen der Server, die den Life Cycle überschri en haben
Umstellung des Zeichensatzes auf Unicode, wo möglich
Zusammenfassung von Datenbanken, wenn möglich
Architekturanpassungen z.B. wegen Revision und No alltest
164 TEUR / 395 MT intern / 9 Monate / 2 Monate Frozen Zone
Our way to 19cOur way to 19c
7.5
12. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Mühsam ernährt sich das Projekt-Hörnchen
April 2018: Projekt ist genehmigt und gestartet
Projektvertrag/Projektleiter Provider lange nicht fixiert
Last-Test- wird zur Migra ons-Test-Umgebung
Auswahl von KreDa als komplexeste Anwendung für den Test
CSSCAN → Database Migra on Assistant for Unicode (DMU)
Neue Anforderung: Deployment-Prozess wegen Revision ändern
Prüfung Parallelisierung
itera ve Test-Migra onen
Abschluss des Projektvertrags
Extended Support for 11.2.0.4 extended un l 12/2018
Projekt pausiert
Änderung Deployment-Prozess
Our way to 19cOur way to 19c
8
13. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Früh übt sich … lange
Dezember 2018: Wiederaufnahme des Projekts, 18c ist da
Server werden nicht in Time geliefert
Pake erung Entwicklungstools: Client, SQL Navigator/Developer
Fehler wiederholen sich in Itera onen → Dokumenta on Ablauf
Weitere Testläufe incl. Zeitmessung für finale Migra onsplanung
März 2019: Management-Eskala on
Mai 2019: 19c ist da (Long Term Support)
Wiederholung DMU, Zer fizierung, Aufräumarbeiten (Skrip ng!)
Markdaten-Anwendung nun vor KreDa
Juli 2019 Rollout Entwicklungstools
Oktober/November 19 Entwicklertest auf Test-Migra on
Konflikt mit Fachprojekt - Projekt pausiert erneut
Our way to 19cOur way to 19c
9.1
14. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Ablauf - einmalige Vorbereitungen
1. Template PDB$SEED nur mit benö gten Op onen erstellen
2. zusätzliche CDB/PDB WE8ISO8859P15 als
3. Ziel-Server installieren und konfigurieren
4. Datenbank-So ware installieren
5. CDB AL32UTF8 vorbereiten
a. NLS_LANG=AMERICAN_AMERICA.UTF8
b. SQL Net Encryp on, gefordert vom Betriebsprüfer
c. SQLNET.ALLOWED_LOGON_VERSION_CLIENT/SERVER=8
wg. Forms/Reports 11g
d. max_string_size=extended / utl32k.sql
Clone-Source
Our way to 19cOur way to 19c
9.2
15. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Ablauf - Vorbereitungen pro Migrations-Lauf
1. PDB löschen, wenn vorhanden
2. Anlegen der PDB als Clone aus der WE8ISO8859P15 PDB
3. Anlegen Objekte mit neuer Struktur (Tablespaces, Links,
Directories)
4. Grants für diese Objekte und FGA/RLS
5. Audit, Recycle Bin, Sta s ken für DMU-Lauf abschalten/leeren
6. DMU Repository/Client installieren, Zugriff per X-Server
Our way to 19cOur way to 19c
9.3
16. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Ablauf - Migration pro Migrations-Lauf
1. Datei-basierter Full Export im Restricted Mode
2. Selek ver Import (Exclude Tablespaces / Directories / Sta s ken
sowie Schemas / Rollen / Kontexte außerhalb KreDa)
3. SYS-Grants an KreDa vergeben
4. Checks
5. ACL’s auf Ziel-Server migrieren
6. Recompile
7. DMU Konver erung
8. A er Logon Trigger: nls_length_seman cs=char in User Sessions
9. komple es Deployment (Datenbank, ADF, Forms/Reports, SOA)
10. Nacharbeiten (Queues starten, Refresh Materialized Views …)
11. Umstellung Jobsteuerungssystem
12. Automa sche Tests (utPLSQL, JUnit, Selenium)
Our way to 19cOur way to 19c
9.4
18. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
ACL: Zuweisen ACL
Anlegen eines Datenbank-Links mit DBA-Berech gung auf Altumgebung (o)
Ausführen mit einem User mit DBA-Berech gung auf Neuumgebung (n)
Kapselung in PL/SQL Block mit Dynamischem SQL zur Ausführung, hier für Lesbarkeit vernachlässigt
Our way to 19cOur way to 19c
9.6
19. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Ablauf - DMU Konvertierung
1. VPD Policies / SYS-Tablespace Logging deak vieren
2. Bulk Cleansing → Migrate to character length seman cs
3. Scan: Blockierende Objekte ändern/löschen/leeren
a. Types / Views / Check Constraints mit Umlauten
b. Tabellen mit ANYTYPE Spalten
c. Tabellen-Kommentare
d. Prüfen, Ändern & Dokumen eren weiterer Objekte
4. Konver erung → Behandeln von Fehlern → Skip/Con nue
5. Wiederanlage Objekte / Granten
6. mit utlirp.sql/utlrp.sql
7. VPD Policies / SYS-Tablespace Logging ak vieren
Invalidate & Recompile PLSQL
Our way to 19cOur way to 19c
9.7
20. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Umstellung Jobsteuerungssystem
Vorbereitung auf Umgebungskopie
Serverwechsel
SSH Keys
Keypass
neue Parameter für CDB und PDB sta SID in Skripten
connect / as sysdba → alter session set container=${PDB}
neuer OS-User / neue Verzeichnis Struktur
Fehler z.B. bei cd löscht komple en Verzeichnisbaum
Prozesse erwarten genau diesen User oder das Verzeichnis
NLS-Session Einstellungen beibehalten!
Our way to 19cOur way to 19c
9.8
21. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Umstellung Zugriff bestehende Systeme
Neue Datenbanken → selber Service-Name
Alte Datenbanken → neuer Service-Name, weniger umzustellen
Mounts auf Datenbank
diverse tnsnames/sqlnet.ora
Variablen im Jobsteuerungsystem
Re-Installa on Applica on Server ADF, Forms/Reports, SOA
Anpassungen JDeveloper ADF, SOA
Quelldatenbank herunterfahren oder migrierte User dort sperren
Our way to 19cOur way to 19c
9.9
22. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Was länger währt wird unendlich gut
Fachprojekt verzögert sich auf unbes mmte Zeit / Corona
März 2020: Übernahme aller Migra onstä gkeiten ab dem Import
März 2020: Testmigra onen Entwicklung, Abnahme, Produk on
April 2020: finale Migra on Entwicklung & Entwicklertest
Mai 2020
Frozen Zone beginnt
finale Migra on Abnahme
Fachabteilungstest
parallel Fehlerbesei gung
Our way to 19cOur way to 19c
10.1
23. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Probleme und Lösungen - Export & Import
ORA-01466: Tabellendefini on hat sich geändert: Tasks
deak vieren / Export im Restricted Mode
Import hängt mit SQL*Net message from dblink ALTER VIEW,
message from dblink → Drop View auf fehlende Objekte auf Link
Func on Based Indizes verhindern tw. Datenimport → löschen
oder ändern, bei Import ausschließen, später anlegen
ORA-02298 nicht ak vierbare FK’s → expdp consistent=yes
ORA-01843: not a valid month:
→ Refresh-Groups droppen oder anpassen
ORA-06508: PL/SQL: could not find program unit being called →
Func on Based Index ru Package auf
ORA-00955: name is already used by an exis ng object →
PS_TXN_PK, Bug USING INDEX REVERSE?
01.01.4000 in next_date von Jobs
Our way to 19cOur way to 19c
10.2
24. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Probleme und Lösungen - Versions-Upgrade
ORA-29516: Aurora Asser on Failure → Installa on OJVM
ORA-01417: Tabelle darf mit max. einer anderen Tabelle durch
Outer-Join verbunden werden → SQL anpassen
ORA-03113: end-of-file on communica on channel bei CREATE
OR REPLACE <PACKAGE> → erst droppen
ORA-04045/ORA-00600 bei utl_recomp.recomp_parallel 1 View in
SQL Developer → SQL Plus
Bug 30796980:
→ Workaround: remove -cleargrants
ORA-30372: fine grain access policy conflicts with materialized
view → USING TRUSTED CONSTRAINTS
VPD: Materialized Views nach Refresh leer → Policy Funk on:
Dauer dropjava/loadjava Java-Klassen 4→74min
if
dbms_mview.i_am_a_refresh then return null; end if;
Our way to 19cOur way to 19c
10.3
25. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Probleme und Lösungen - Unicode
ORA-22998 CLOB or NCLOB in mul byte character set not
supported: SUBSTR → DBMS_LOB.COPY
utl_file Zeichensatz der der Datenbank → Konver erungsrou nen
z.B. WE8MSWIN1252
Bug 29435966: Ora-22813 with Pipelined Func on with Rowtype
without Data Type Cas ng in AL32UTF8 DB +
NLS_LENGTH_SEMANTICS=CHAR → Patch 29435966 oder
Merge einspielen
Our way to 19cOur way to 19c
10.4
26. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Probleme und Lösungen - ADF, SOA, Forms & Reports
Schwenk Applica on Server auf impor erte Repositories
funk oniert nicht → automa sierte De-/Re-Installa on
ORA-01450 SOA RCU → drop synonym schema_version_registry
Transla onHub, alles funkioniert noch bis auf CLI → Abschaltung
FRM-41072 Gruppe <Recordgroup> kann nicht erstellt werden →
verwendete View-Spalten durch substr definieren
FRM-40505: Abfrage konnte nicht ausgeführt werden
ORA-24920: Spaltengröße für Client zu groß
REP-268836873: Fehler bei der Ausführung des CA-U litys
REP-300: Spaltengröße für Client zu groß
Our way to 19cOur way to 19c
10.5
27. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
To Unicode or Not to Unicode
Unicode für Konsolidierung RCU und Zukun sfähigkeit
max_string_size=extended, um Datenverlust zu vermeiden
Abbrüche mit Forms & Reports bei Zugriffen auf voll gefüllte
Tabellenspalten >= 4000 CHAR mit Sonderzeichen / Umlauten
Unicode-Codierung ist mit 19c und allen verfügbaren Forms und
Reports Versionen technisch ohne Datenverlust nicht umsetzbar
Keine Unicode-Migra on für KreDa solange bis Oracle Forms &
Reports abgelöst oder max_string_size=extended unterstützt
Migra on erfolgt ohne alle Unicode Schri e
2 PDB’s: Nutzdaten (WE8ISO8859P15) & Middleware (AL32UTF8)
weiterhin getrennt, aber in einer CDB (AL32UTF8)
Juni 2020: Neuaufsetzen Entwicklung/Abnahme, Re-Test
August 2020: Go Live
Our way to 19cOur way to 19c
11
28. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Offene Punkte
Hos ng einer Third Party Anwendug
Migra on zweier Klein-Anwendungen
automa siertes Klonen Las est aus Entwicklung
Rückbau von Server / Instanzen nach Migra on / Auslagerung
Our way to 19cOur way to 19c
12
29. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Fazit
Prü Abhängigkeiten und Zer fizierungen
Die Datenbank ist nur ein kleiner Teil der Migra on
Bescha Euch rechtzei g zusätzliche Testumgebungen
Wählt für den Test schnell die komplexeste Anwendung
Entwickelt itera v den Migra onsablauf
Testet gegen alle Umgebungen, achtet auf Durchlaufzeiten
Stellt rechtzei g kompa ble Entwicklungstools bereit
Sucht Euch selbst einen wissenden Partner
Dokumen eren → Skripten → Automa sieren
Sucht nach Eurer gewählten Architektur
Prü und testet Grenzwerte der Ziel-Umgebung
Verkau nicht Euren Provider mi en im Projekt
Rechnet bis zum Schluss mit einer Scope-Änderung
Einschränkungen
Our way to 19cOur way to 19c
13
31. @develishdevelop #DOAG2020 #OurWayToOracleDatabase19c
Fotos
by , by ,
by , by ,
by , by ,
by , by ,
by , by ,
by , by ,
by , by ,
by , by
, by ,
by ,
by , by
, by , by
, by ,
by , by
3 x 3 rubiks cube Karla Hernandez aerial photo of road Andrew Butler asphalt road between trees
Ma Duncan athle c’s on star ng line during day me Nicolas Hoizey black and gold book on gray
concrete floor Yura Timoshenko black traffic light on go signal Paul Volkmer blue and white metal
door closed Paweł Czerwiński dry leaves on black concrete pavement Pop & Zebra electronic wire
lot Massimo Bo uri gray concrete road across brown valley during day me Jesse Bowser light bulb
on black background Alessandro Bianchi person playing puppet dog pixpoetry person si ng on
stack of books while reading Gaelle Marcel photo of male weight li er Filip Mroz red and white
Open signage beside building Casey Horner red love freestanding le ers on gray brick floor Markus
Spiske selec ve focus photo of baby playing ac vity cube Markus Spiske selec ve focus photo of black
and white delete, enter, power bu on, and F12 computer keys u j e s h shallow focus photography of
person in red hooded jacket Sandeep Swarnkar silhoue e of person standing on cliff during sunset
Nicholas Sampson silver laptop computer near notebook STIL STOP signage – Free Road boris
misevic waterfalls surrounded by rock forma on Bruce Timaná white and black kanji text concrete wall
金金 陶 white modern cement building under blue sky Joel Filipe
Our way to 19cOur way to 19c
15