Newsletter

Workaround: Unpivot mit ORA-00942 oder ORA-00904

Ausgangslage

Kürzlich trat ein Problem mit einem UNPIVOT Operator in der Entwicklung einer Statistik-Abfrage auf

 
Select […]
from VIEW1 unpivot(val for year in ([…]);
 
 
ORA-00942: table of view does not exist
 

Die Abfrage wurde im gleichen Schema ausgeführt wo auch der View sein sollte. Folgendes Select funktionierte zum Beispiel problemlos:

 
select * from VIEW1;
 

Lösung

Eine Recherche ergab anfangs wenig Lösung. Die üblichen Lösungsvorschläge bezogen sich auf Problem mit Arbeiten in unterschiedlichen Schemas oder über Datenbank-Links. Da die Tabelle aber grundsätzlich als vorhanden erkannt wurde musste der Grund woanders liegen. Im Oracle Support habe ich die Lösung gefunden, im Dokument Doc ID 22339954.8.

Laut diesem Dokument handelt es sich hierbei um einen Bug in potentiell allen Datenbankversionen vor 12.2.0.1. Laut diesem Dokument gibt es keinen Workaround. Das Problem kann ich außerdem in langen Laufzeiten äußern selbst wenn keine Fehler auftreten. Die Probleme treten lt. Dokument auf wenn eine Abfrage eine UNPIVOT Operation auf Views mit mehrfachen verschachtelten Abfrageblöcken und/oder einer großen Anzahl von Tabellen macht.

Wir haben einen Workaround gefunden der in unserem Fall das Problem recht leicht und zufriedenstellend gelöst hat:

 
with base as (select /*+ materialize */ * from VIEW1)
Select […]
from base unpivot(val for year in ([…]);
 

DBConcepts

Weitere Beiträge

DBConcepts Adventpunsch

Am Dienstag, den 03.12 findet heuer unser allseits beliebter Adventpunsch statt. Dieses Jahr treffen wir uns wieder im Weihnachtsdorf im Alten AKH (Universitätscampus).Wir haben einen eigens für uns

DBConcepts

Newsletter abonnieren

Wir freuen uns, dass wir Ihr Interesse für den Newsletter geweckt haben! Mit dem Versand dieser Zustimmung erhalten Sie regelmäßig alle aktuellen Informationen!

Vielen Dank für Ihr Interesse an unserem Unternehmen. Derzeit suchen wir niemanden für diese Stelle. Aber wir sind immer an talentierten Menschen interessiert und freuen uns von Ihnen zu hören! Schicken Sie uns einfach Ihren Lebenslauf und eine kurze Nachricht und schreiben Sie an welcher Stelle Sie interessiert sind: recruitment@dbconcepts.com. Wir freuen usn von Ihnen zu hören!