Skip to main content

Oracle Database 19c support with FirstSpirit 2020-12 (was EAP with 2020-06)

Comments

7 comments

  • Zendesk API User
    Author: tpilz - 10/26/2020 14:34

    Hallo Community,

    ich versuche gerade unsere Entwicklungsstage auf einen neuen Host zu wechseln (von Windows auf Linux). Da sich bei dieser Aktion auch die Oracle 19c Migration mit anbietet, versuche ich diese gerade durchzuführen. Mein bisheriger Ansatz scheint dafür aber nicht zu funktionieren:


    0. FS-Version: 2020-06
    1. Konfiguration der neuen Oracle DB gemäß Vorgabe in der EAP-Dokumentation

    2. Konfiguration des DB Layer in der fs-database.conf

    <oracledb>.jdbc.layerclass=de.espirit.or.impl.oracle.Oracle19cLayer

    3. Verwendung des ojdbc8:19.3.0.0 Treibers im <fsroot>/shared/lib-isolated/ Verzeichnis

    4. Snapshot Backup im alten Windows System -> übertragen auf das Linux System -> Projekt-Import über Enterprise Backup

    -> Das Recovery des Backups bricht ab, Meldung "Incompatible Database Layers"

    Der Hintergrund warum ich ein Enterprise Backup Recovery wähle, und keinen simplen Projektimport -> die FS_ID´s müssen auf jeden Fall nach der Aktion identisch sein.

    Kann mich evtl. jemand hier abholen und mir einen Migrationsweg mitteilen bei dem ich erfolgreich auf Oracle 19c umsteige und die FS_IDs nach dem Recovery/Import gleich bleiben?

    Vielen Dank vorab und viele Grüße

    Thomas

    0
  • Zendesk API User
    Author: hoebbel - 10/27/2020 11:54

    Hallo Thomas,

    kann es sein, dass die Datenbank Layer unterschiedliche Namen haben auf den beiden Systemen?

    Klappt es, wenn dieselben Namen für die Layer gewählt werden? Die exakten Namen kann man beispielsweise in der <FirstSpiritROOT>/conf/fs-database.conf prüfen.

    Hinweis: Die Namen stehen sowohl am Anfang in der Liste DATABASES als auch als Prefix in jeder Konfigurationszeile.

    Tipp: Die Datei wird von FirstSpirit gecacht und kann somit nicht bei laufendem Server modifiziert werden. Eine Modifikation der Datei kann dazu führen, dass die Datenbankkonfiguration ungültig wird, insofern rate ich davon ab, diese durchzuführen!

    Ein anderer möglicher Weg (wenn die Datenbank Layer doch gleich benannt sind) könnte so aussehen (zur Übernahme aller Projekte von Windows nach Linux)

    - auf dem Linux System einen FirstSpirit Server installieren.

    - Oracle 19c Datenbank anbinden (Layername identisch zu dem Oracle-Layer entsprechenden auf dem Windows System wählen)

    - FirstSpirit Linux Server beenden und im Linux Dateisystem das <FirstSpiritROOT>/data Verzeichnis löschen.

    - Windows FirstSpirit Server herunterfahren

    - <FirstSpiritROOT>/data Verzeichnis aus dem Windows System in das Linux System kopieren.

    - Datenbankinhalte manuell auf die Oracle 19c migrieren (an FirstSpirit vorbei)

    Mögliche Alternative zum manuellen Transport: Das Projekt kann auch in Linux neu importiert werden. Das klappt, wenn die Datenbank-Layer Standardlayer sind (also vorgeben, wo genau in der Datenbank die Tabellen angelegt werden) oder wenn man etwas nacharbeitet (hier kann unser Tech Support weiterhelfen)

    - FirstSpirit Linux Server starten

    Sofern keine systemspezifischen Konfigurationen in den Projekten vorgenommen wurden (z.B. hart kodierte Pfade), sollten die Projekte nun ohne ID Veränderungen laufen.

    Viele Grüße,

    Holger

    0
  • Zendesk API User
    Author: rusch - 10/27/2020 12:56

    Ich habe noch zwei Ergänzungen zum Vorschlag von Holger.

    Bei einer manuellen Migration der Datenbankinhalte auf Oracle Database 19c ("an FirstSpirit vorbei"), sollten für den Datenbanklayer die Empfehlungen aus dem Kapitel "Umstellung ohne Änderung der Datenbank" der Migrationsanleitung verwendet werden.

    Die beiden Parameter "jdbc.oracle.CHARACTERSET" und "jdbc.MAXSTRINGLENGTH" dürfen nicht im Datenbanklayer gesetzt werden, da es ansonsten zu Problemen nach einem Speichern des Schemas kommen kann (andere maximale Spaltenlängen für String-Spalten, usw.).

    Der Parameter "jdbc.property.oracle.jdbc.J2EE13Compliant=true" sollte nur dann gesetzt werden, wenn er auch schon vorher im alten Oracle-Datenbanklayer gesetzt war.

    Weiterhin ist es sinnvoll anstelle des "shared/lib-isolated"-Verzeichnisses ein Treiber-FSM-Modul mithilfe der Migrationsanleitung zu erstellen und zu verwenden. Bei der Gelegenheit könnte auch das ojdbc8.jar auf die empfohlene Version 19.7.0.0 aktualisiert werden.

    Viele liebe Güße,

    Sascha

    0
  • Zendesk API User
    Author: tpilz - 10/27/2020 13:04

    Hallo Holger,

    ich habe über den Support ein Video des Importvorganges eingereicht. Im Video ist zu sehen das er beim Recovery im Enterprise Backup einen Dialog anbietet um den bestehenden DB Layer auf einen neuen zu mappen. Der neue Layer ist ein Oracle 19c Layer.
    Dann beginnt der Import, und folgender Fehler ist gleich zu sehen:

    Error: Incompatible layer class: de.espirit.or.impl.oracle.OracleLayer != de.espirit.or.impl.oracle.Oracle19cLayer

    Der Import bricht dann wenig später ab, in der Oracle DB sind keine Tabellen angelegt, und das Projekt muss per löschen entfernt werden.

    Ich gehe davon aus, wenn ich die Oracle Layerclass auf den normalen Layer umbenenne, der Import funktioniert.
    Meine Frage ist nun, ist dies eine korrekte Vorgehensweise, kann ich nach dem Import die Layerclass wieder auf 19c ändern?

    Viele Grüße

    Thomas

    0
  • Zendesk API User
    Author: rusch - 10/27/2020 13:13

    Hallo Thomas,

    leider kann die Layerclass de.espirit.or.impl.oracle.OracleLayer nicht für einen Import in eine Oracle Database 19c genutzt werden.

    Den Grund dafür ist in der Einleitung der Migrationsanleitung aufgeführt:

    "[...]Seit der Version 12c hat Oracle vieles geändert und spricht auch andere Empfehlungen bei

    der Verwendung der Oracle Datenbank aus. Da sich der Treiber und auch die Datenbank

    anders verhalten, mussten wir einen neuen Datenbank-Layer implementieren.[...]"

    Viele liebe Grüße

    Sascha

    0
  • Zendesk API User
    Author: tpilz - 10/27/2020 13:25

    Hallo Sascha, Hallo Holger,

    um es nochmal zusammenzufassen:

    1. Ein automatischer Migrationspfad ist nur vorgesehen wenn das Projekt exportiert und importiert wird / der Import muss dann in einen Oracle19c Layerclass DB Layer erfolgen um die Migration nach 19c erfolgreich abzuschließen.

    2. Das Enterprise Backup erlaubt jetzt und zukünftig kein Recovery eines Backups von Oracle 12/18 auf 19c

    3. Alle Alternativen die es mir ermöglichen würden die IDs im Projekt gleich zu behalten, spielen sich über den /data Ordner kopieren und einer manuellen Migration der Oracle DB ggf. über Oracle eigene Tools ab.

    Habe ich evtl. etwas vergessen / falsch wahrgenommen?

    Vielen Dank und viele Grüße

    Thomas

    0
  • Zendesk API User
    Author: rusch - 10/28/2020 8:03

    Hallo Thomas,

    vielen Dank für die Rückmeldung.

    zu 1)

    Neben dem von Dir aufgeführten Export/Import besteht noch die Möglichkeit den Umzug des Hosts von der Datenbankumstellung zu trennen. In diesem Fall würde das im Kapitel "Umstellung ohne Änderung der Datenbank" der Migrationsanleitung zur Anwendung kommen.

    zu 2)

    Zu dem von Dir beschriebenen Anwendungfall habe ich ein internes Ticket (CORE-12935) zur Prüfung des Szenarios erstellt. Ob und was im beschriebenen Fall möglich ist kann ich aber vor der Prüfung leider nicht sagen.

    zu 3)

    Eine weitere Möglichkeit wäre die Auftrennung von Recovery und Datenbankmigration in zwei Schritte. Eine denkbare Möglichkeit wäre hierbei ein Schema-Export (inkl. Daten) mit der Oracle Database 12c, ein Import gegen die Oracle Database 19c in einem neuen Projekt und anschließender Änderung des Schemas im wiederhergestelltem Projekt. Ich werde mir dieses Szenario bei der Prüfung von 2) auch einmal anschauen und über das Ergebnis berichten bzw. den Migrationsleitfaden ggfs. erweitern.

    Ich hoffe das hilft Dir und beantwortet Deine Fragen.

    Viele liebe Grüße

    Sascha

    0

Please sign in to leave a comment.