Wir haben kürzlich einige Fehler in unserem Warnprotokoll des Formulars erhalten
301598: Tue Jul 16 03:58:29 2013
301599: ORA-01555 caused by SQL statement below
301600: SELECT * FROM RELATIONAL(<owner>.<table>)
Ich weiß, wie man mit ORA-01555-Fehlern umgeht, aber ich bin noch nie auf so etwas gestoßen SELECT * FROM RELATIONAL
. Ich habe reingeschaut DBA_OBJECTS
, aber es gibt keine solche Funktion / Operator / was auch immer.
Beim Googeln nach 'SELECT * FROM RELATIONAL' wurden nur Fragen zu ORA-01555 zurückgegeben.
Meine Frage lautet also: Was bedeutet das Schlüsselwort RELATIONAL hier?
relational
ein sehr schwieriges Wort ist, nach DB-Dokumentation zu suchen.Antworten:
Es scheint träge zu sein. Ich habe dies auf XE 11 getestet und festgestellt, dass es nichts tut.
quelle
Ich glaube, dies war ein veralteter Alias für die heutige TABLE-Funktion für Pipeline-Funktionen, aber jetzt kann ich meine Referenz, die dies sagt, nicht finden.
quelle
Laut diesem Blog-Artikel
RELATIONAL
weist der spezifische Hinweis das Abfrageoptimierungsprogramm anEin zweiter Artikel in der Oracle Community besagt dies
Ich denke, dies ist nur ein Problem einer lang laufenden Abfrage, die durch den ORA-01555-Fehler aufgedeckt wird, während intern ein Abfragehinweis verwendet wird, der nicht dokumentiert ist.
quelle
Wie Durette zeigt, ist dies eine nutzlose Besetzung. Die meisten Tabellen sind RELATIONAL, und das ist die Standardeinstellung. Oracle unterstützt jedoch auch OBJECT-Tabellen (siehe die Syntax in den CREATE TABLE-Dokumenten von Oracle ), in der der Grund für die interne Syntax erläutert wird. Es gibt keinen Grund, RELATIONAL in einer Abfrage zu verwenden, aber es gibt auch keinen Grund, warum dies fehlschlägt. Sie sollten sich auf die allgemeinen Korrekturen für ORA-01555 konzentrieren. ORA-01555 bedeutet normalerweise, dass Ihre UNDO-Segmente nicht ausreichen, um die Änderungsrate in Ihrer Datenbank zu verarbeiten.
Können Sie diesen Fehler bei Bedarf reproduzieren? Wie protokolliert die fehlerhafte Abfrage, bevor sie fehlschlägt? Oder ist Ihre eigentliche Frage: "Wie finde ich die SQL, die diesen Fehler verursacht hat?"
Außerdem haben Sie Ihre Oracle-Version und Patch-Version nicht angegeben.
quelle
Die Zeile unter "ORA-01555 verursacht durch SQL-Anweisung unten" ist die SQL-Anweisung, die das UNDO zum Austauschen veranlasst.
RELATIONAL ist also keine Oracle-Sache, sondern ein von einem Benutzer erstelltes Objekt. Es ist eine Funktion mit dem Parameter owner.table.
quelle