Anonim

Gelegentlich wird beim Ausführen einer SQL-Anweisung ein ora-00942-Fehler angezeigt. Es gibt einige Ursachen, und wie üblich ist die Fehlersyntax nicht die aussagekräftigste. Wenn Sie auf dieses Problem stoßen und wissen möchten, wie Sie den ora-00942-Fehler beheben können, lesen Sie weiter.

Soweit ich weiß, gibt es drei Hauptursachen für den Fehler ora-00942:

  1. Unzureichende Benutzerrechte
  2. Die Tabelle oder Sicht existiert nicht wirklich
  3. Die Tabelle oder Ansicht befindet sich in einem anderen Schema

Ich zeige Ihnen, wie Sie jeden einzelnen ansprechen.

Beheben Sie den Fehler ora-00942

Zunächst ein kleiner Haftungsausschluss. Ich bin kein Datenbankadministrator, ein Windows-Administrator sowie ein Desktop- und Serverhardwaretechniker. Ich weiß, wie man SQL ausführt, aber nicht bis zu einem gewissen Grad und schon gar nicht bis zu dem Niveau, mit dem Probleme behoben werden können. Ich musste einen meiner Oracle DBA-Freunde um Hilfe bitten. Während ich dieses Stück schrieb, waren die cleveren Teile alles seine.

Diese Liste der drei Ursachen für den Fehler ora-00942 ist nicht vollständig. Es gibt anscheinend andere zufällige Ursachen, aber diese drei sind anscheinend die häufigsten.

Unzureichende Benutzerrechte

Eine Hauptursache für den ora-00942-Fehler ist, dass der Benutzer nicht über ausreichende Berechtigungen für den Zugriff auf die betreffende Tabelle verfügt. Sie können dies überprüfen, indem Sie zwei Abfragen ausführen.

- Systemberechtigungen für den Benutzer oder die Rolle auflisten SELECT * FROM dba_sys_privs WHERE grantee IN (& user_role, 'PUBLIC');

- Objektberechtigungen für den Benutzer oder die Rolle auflisten

SELECT Grantee, Eigentümer || '.' || Tabellenname Objekt, Berechtigung, gewährbar FROM dba_tab_privs WHERE Grantee IN (& Benutzerrolle) ORDER BY Grantee, Eigentümer || '.' || Tabellenname, Berechtigung;

Diese beiden zeigen an, ob der betreffende Benutzer über die richtigen Berechtigungen zum Ausführen des Befehls verfügt. Wenn der Benutzer über die richtigen Berechtigungen verfügt, fahren Sie mit dem nächsten fort. Wenn der Benutzer nicht über die richtigen Berechtigungen verfügt, erteilen Sie ihnen diese oder fordern Sie Ihren DB-Administrator dazu auf.

Der ora-00942-Fehler kann auch auftreten, wenn der Benutzer des von Ihnen verwendeten Schemas über INSERT-Berechtigungen, jedoch nicht über SELECT-Berechtigungen verfügt. Überprüfen Sie erneut die Berechtigungsstufe und fügen Sie SELECT zur Liste hinzu, oder bitten Sie einen DB-Administrator, dies zu tun. Anscheinend muss jedem Schema das spezifische SELECT-Privileg erteilt werden, sonst wird der ora-00942-Fehler weiterhin angezeigt.

Die Tabelle oder Sicht existiert nicht wirklich

Diese Ursache des ora-00942-Fehlers kann durch eine falsche Abfragesyntax oder wenn die Tabelle nicht vorhanden ist, verursacht werden. Dies scheint der logische Anfang zu sein, aber ich bin mir sicher, dass das Benutzerrecht die häufigste Ursache für den Fehler ist. Die nicht vorhandene Tabelle oder die falsche Tabellensyntax ist die zweite.

Um zu überprüfen, ob die Tabelle vorhanden ist, überprüfen Sie zuerst die Syntax der Abfrage. Wenn die Syntax korrekt ist, führen Sie diese Abfrage aus.

SELECT Besitzer, Objektname, Objekttyp FROM all_objects WHERE Objekttyp IN ('TABLE', 'VIEW') AND Objektname = 'YOUR_TABLE_NAME';

Geben Sie in der letzten Zeile den tatsächlichen Tabellennamen ein, in dem "YOUR_TABLE_NAME" angezeigt wird. Dies sollte Ihnen definitiv sagen, ob die Tabelle, die Sie abfragen möchten, existiert oder nicht. Wenn keine Tabelle zurückgegeben wird, ist die von Ihnen abgefragte Tabelle im Schema oder in der Datenbank nicht vorhanden.

Wenn das von Ihnen verwendete System über ein Menü "Tabellen" verfügt, können Sie manuell nach der gewünschten Tabelle suchen, die obige Abfrage erledigt jedoch die Aufgabe.

Die Tabelle oder Ansicht befindet sich in einem anderen Schema

Wenn der Benutzer über Berechtigungen verfügt und die Tabelle vorhanden ist und der Fehler "ora-00942" weiterhin angezeigt wird, liegt dies wahrscheinlich am Schema. Wenn Sie mehrere Schemas verwalten, ist es einfach, eine Abfrage für ein Schema auszuführen, das nicht von Ihnen stammt. Wenn Sie beschäftigt sind und es zu tun haben, ist es ein einfacher Fehler.

Überprüfen Sie das Schema manuell, wenn Sie den Schemanamen in der FROM-Zeile Ihrer Abfrage hinzufügen können. Wenn Sie nicht über die richtigen Berechtigungen für das neue Schema verfügen, wird der Fehler ora-00942 erneut angezeigt. Kehren Sie zum ersten Fix für Benutzerrechte zurück, und überprüfen Sie das entsprechende Schema, oder fordern Sie Ihren DBA auf, dies für Sie zu tun.

Wie oben erwähnt, habe ich für dieses Stück einen Oracle DBA-Freund von mir konsultiert, sodass ihm alle Ehre für die harte Arbeit gebührt. Wenn Sie hier Fehler oder Auslassungen finden, sind sie allein meine. Lassen Sie mich in den Kommentaren wissen, wenn ich etwas verpasst oder falsch verstanden habe und ich werde es korrigieren.

Wenn Sie eine andere Möglichkeit zur Behebung des Fehlers ora-00942 kennen, teilen Sie uns dies unten mit!

So beheben Sie den ora-00942-Fehler