Home > Oracle 12cR2 Datenbank > Alert: Upgradeprobleme mit Spatial

Alert: Upgradeprobleme mit Spatial

Alert: Probleme mit Spatial beim Upgrade von 12.1 auf 12.2.

Durch eine Änderung in den Berechtigungen kommt es beim Upgrade von Oracle 12.1 auf 12.2.0.x zu unerwartet langen Laufzeiten (im Bereich von vielen Stunden!) beim Recompilieren mit utlrp.sql, wenn Spatial Datentypen genutzt werden.

Problemanalyse

Während des Upgrades ändert Oracle die Berechtigungen im Spatial Umfeld. Das führt dazu, dass ALLE Tabellen mit Spatial Datentypen INVALID werden. Durch das Ausführen des Scripts utlrp.sql wird das mittels des folgenden UPDATE Statements korrigiert:

update /*+ no_parallel(t) */ "<SCHEMA_NAME>"."<TABLE_NAME>" t set <SPATIAL_COLUMN> = <SPATIAL_COLUMN>

Man findet auch noch folgendes aktive Statement:

begin dbms_utility.validate(:1,:2,:3,:4); end;

Durch dieses Update entstehen auch viele GB an Archivelogs - bei einigen großen Datenbank sogar im TB Bereich!

Was findet man bei Oracle zu diesem Thema?

Seitens Oracles gibt es dazu die folgende Support Note: UTLRP is running very slow with SDO objects after upgrade on 12.2 (Doc ID 2258213.1)

Dabei handelt es sich um den Bug 25293022 REVOKE EXECUTE GRANT ON SPATIAL TABLE CAN INVALIDATE APPLICATION TABLES, für den es auch Patches gibt.

Leider gibt es seitens Oracle keine Beschreibung für die Vorgehensweise um das Problem zu vermeiden - den Patch muss man exakt zum richtigen Zeitpunkt einspielen!

Korrekte Vorgangsweise für die Problemlösung

Diesen Patch gibt es sowohl für 12.1.0.2 als auch für 12.2.0.1, allerdings muss man die Reihenfolge der Schritte genau einhalten:

  • Installation von 12.2.0.1 Datenbank Software
  • Aktualisieren von OPatch
  • Empfohlen: Einspielen des aktuellen CPU/PSU
  • Einspielen des Patches 25293022
    Der Patch liefert einen korrigierte Version für das Script $ORACLE_HOME/md/admin/sdotpwgo.sql
  • Datenbank Upgrade starten, aber die Ausführung von UTLRP.sql verhindern (manuelles Upgrade - einfach nicht starten, DBUA kann man das RECOMPILE deaktivieren.
  • Datapatch ausführen:
    $ cd $ORACLE_HOME/OPatch
    $ datapatch
  • Erst jetzt $ORACLE_HOME/rdbms/admin/utlrp.sql ausführen

Wenn Sie sich nicht sicher bei der Vorgangsweise sind, helfen wir Ihnen gerne bei der Umsetzung.