ORA-13199 bei DML auf Spalte mit Spatial Indices

Ausgangssituation

Oracle Datenbank mit Spatial Datentype (und Spatial Index Nutzung) – somit nur der Spatial Locator – ohne Spatial Option.

Nach einem Patching von 19.15 auf 19.17 kommt es bei DML auf Spalten mit Spatial Locator und Spatial Indices beim COMMIT zum Fehler ORA-13199. Bei dem Problem könnte es sich um den Bug 33539504 – ORA-13199 „spatial index commit failure“ (Doc ID 33539504.8) handeln, der laut Oracle mit 19.16 behoben sein sollte. Für ältere RUs (19.12 – 19.15) gibt es entsprechende OneOff Patches.

Es kann aber auch ein neues Problem sein, dass durch den Bug-Fix mit 19.16 für alle Datenbanken, die nur den Spatial Locator nutzen, auftritt.

Problemanalyse

Der Auslöser des Problems ist die Oracle interne Prozedur MD_SYS.PRVT_IDX.CMT_IDX_CHNGS welche aus MDSYS.SDO_TXN_JOURNAL_GTT ausließt, welche Änderungen an den Spatial Datentypen erfolgt sind, die dann in den Spatial Indices nachgetragen gehören. Im Tracefile findet man folgende Fehler:

Query execution failed [exception 604]
Query execution failed [-1]

So wie es aussieht, passt das Executable von 19.17 nicht mehr zu den PLSQL Packages, daher muss man die entsprechenden Spatial Scripts (für Locator) laufen lassen. Vermutlich hängt es damit zusammen, dass der Spatial Locator in der DBA_REGISTRY nicht enthalten ist und der datapatch die Scripts somit nicht ausführt.

Workaround

Wer nicht auf einen One-Off Patch seitens Oracle warten kann/möchte, kann ich mir folgendem Workaround behelfen:

connect / as sysdba
alter session set current_schema=MDSYS;
@?/md/admin/32131774_apply.sql
@?/md/admin/sdoutlh.sql
@?/md/admin/sdoutlb.plb
@?/md/admin/prvtsidx.plb
alter session set current_schema=SYS;
@?/rdbms/admin/utlrp

Danach ist das Problem verschwunden. Alternativ kann man auch die Spatial Option zur Datenbank hinzufügen, da diese seit dem 6. Dez 2019 ab Oracle 12.1 in allen Oracle Datenbank Edition kostenlos genutzt werden darf.

Referenzen

Comments

  1. Hallo Christian, danke für die Info.

    Auch ich kenne die Fehlermeldung ORA-13199 (bis inkl. Oracle 19.10 Standard Edition) – bei uns hat sich herausgestellt, dass er dann auftritt, wenn der gleiche Datensätz MEHR ALS EINMAL upgedatet und dann erst commitet wurde.
    Unsere Lösung: Datensatz updaten und dann GLEICH commiten, sodaß der Datensatz NUR EINMAL verändert wird. Das war bei uns in der Applikation möglich.

    lg

  2. Christian Pfundtner

    Hallo Andreas,
    es gibt rund um Spatial und den ORA-13199 in Oracle 19c leider mehr wie nur einen BUG.
    Da es sich um eine Fremdapplikation handelt, ist ein Eingreifen in den Code nicht möglich.
    Beim Debugger des Problems haben wir nur EINEN Datensatz modifiziert und der Fehler ist trotzdem aufgetreten.
    Nachdem das einspielen von Oracle Scripts, die mit 19.15 bzw. 19.17 modifiziert wurden, das Problem behebt, sollte es auch nichts mit den Daten selbst zu tun haben. Oracle führt diese Scripts mit 19.17 einfach nicht (korrekt) aus.
    lg

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

This site uses Akismet to reduce spam. Learn how your comment data is processed.