Anonim

SQLステートメントの実行時にora-00942エラーが表示されることがあります。 いくつかの原因があり、通常どおり、エラー構文は最も記述的ではありません。 これに直面していて、ora-00942エラーの修正方法を知りたい場合は、先に進んでください。

私の知る限り、ora-00942エラーの主な原因は3つあります。

  1. ユーザー権限が不十分です
  2. テーブルまたはビューは実際には存在しません
  3. テーブルまたはビューは異なるスキーマにあります

それぞれに対処する方法を紹介します。

ora-00942エラーを修正

まず、少しの免責事項。 私はDBAではなく、Windows管理者であり、デスクトップおよびサーバーのハードウェア技術者です。 SQLの実行方法は知っていますが、専門知識はまったくなく、問題をトラブルシューティングできるレベルまでは確かではありません。 私はOracle DBAの友人に助けを求めなければならなかったので、この記事を書いている間、巧妙な部分はすべて彼のものです。

ora-00942エラーの3つの原因のこのリストは完全ではありません。 明らかに他のランダムな原因がありますが、これら3つは明らかに最も一般的です。

ユーザー権限が不十分です

ora-00942エラーの主な原因の1つは、ユーザーが問題のテーブルにアクセスするための十分な権限を持っていないことです。 これを確認するには、2つのクエリを実行します。

-ユーザーまたはロールのシステム権限のリストSELECT * FROM dba_sys_privs WHERE grantee IN(&user_role、 'PUBLIC');

-ユーザーまたはロールのオブジェクト特権をリストする

SELECT被付与者、所有者|| '。' || table_nameオブジェクト、特権、付与可能なFROM dba_tab_privs WHERE被付与者IN(&user_role)ORDER BY被付与者、所有者|| '。' || table_name、特権;

これらの2つは、問題のユーザーがコマンドを実行するための正しい特権を持っているかどうかを示します。 ユーザーに正しい特権がある場合は、次へ進みます。 ユーザーに正しい権限がない場合は、ユーザーに付与するか、DB管理者に依頼してください。

ora-00942エラーは、使用しているスキーマのユーザーにINSERT権限はあるがSELECT権限はない場合にも発生する可能性があります。 再び、特権レベルを確認して、SELECTをリストに追加するか、DB管理者に依頼してください。 どうやら、特定のSELECT特権を各スキーマに付与する必要があります。そうしないと、ora-00942エラーが表示されます。

テーブルまたはビューは実際には存在しません

ora-00942エラーのこの原因は、クエリ構文が正しくないか、テーブルが存在しない場合に発生する可能性があります。 これは論理的な最初の開始点のように思えますが、ユーザー特権がエラーの最大の原因であることは確実です。 テーブルが存在しないか、間違ったテーブル構文が使用されています。

テーブルが存在するかどうかを確認するには、最初にクエリの構文を確認します。 構文が正しい場合、このクエリを実行します。

SELECT所有者、object_name、object_type FROM all_objects WHERE object_type IN( 'TABLE'、 'VIEW')AND object_name = 'YOUR_TABLE_NAME';

その最後の行で、「YOUR_TABLE_NAME」が表示されている場所に実際のテーブル名を挿入します。 これにより、クエリしようとしているテーブルが存在するかどうかが明確にわかります。 テーブルなしで戻る場合、クエリしているテーブルはスキーマまたはデータベースに存在しません。

使用しているシステムに[テーブル]メニューがある場合、必要に応じてテーブルを手動で確認できますが、上記のクエリでジョブが完了します。

テーブルまたはビューは異なるスキーマにあります

ユーザーに権限があり、表が存在し、ora-00942エラーが引き続き表示される場合は、スキーマが原因である可能性があります。 複数のスキーマを管理している場合、自分のものではないスキーマに対してクエリを実行するのは簡単です。 あなたが忙しくてそれに立ち向かうとき、それは作るのが簡単なエラーです。

クエリのFROM行にスキーマ名を追加または追加できる場合は、スキーマを手動で確認します。 新しいスキーマに対する正しい権限がない場合、ora-00942エラーがもう一度表示されます。 最初のユーザー特権の修正に戻り、対応するスキーマを確認するか、DBAに取得してもらいます。

前述のように、私はこの作品について私のOracle DBAのバディに相談しました。 ここでエラーや欠落を見つけた場合、それらは私のものです。 私が何かを逃したか、間違えた場合はコメント欄で教えてください、私はそれを修正します。

ora-00942エラーを修正する他の方法を知っている場合は、以下にそれについて教えてください!

Ora-00942エラーの修正方法