異なるテーブルを含むビューを作成しようとすると、次のエラーが発生します。1行目のエラー:ORA-01031権限が不十分です。
誰が何が問題になるのか教えてもらえますか?ここで説明した別のスタックオーバーフローの投稿を試してみましたが、それはさまざまなスキーマに関係しています。
私はここに新しいので知らせてください。
私のクエリは次のとおりです:
元の質問:ビューを作成して、従業員ID、従業員名、入社日、部門番号を選択します。
私の解決策:
CREATE VIEW SIMPVIEW AS
SELECT EMPNO, ENAME, HIREDATE,DEPTNO
FROM EMP;
次に、データベーススキーマでCREATE VIEW
コマンドを実行する権限がない可能性があります... SYSDBAアカウントにログインして、コマンドを発行します
GRANT CREATE VIEW TO <dbusername>;
ここで、<dbusername>
は、CREATE VIEW
コマンドへのアクセス権を付与するユーザーの名前に置き換える必要があります。
select * from session_privs
を使用して、ユーザーにVIEW
作成特権があるかどうかを確認できます。
ビューを作成できるようにするには、ビューを作成しているユーザーに、使用されているすべてのオブジェクトに対するSELECT
特権と、前述のCREATE VIEW
特権が付与されている必要があります。エラーが発生しているユーザーにUSER_TAB_PRIVS
へのクエリを実行することでも確認できます。
sQL開発者で上記のクエリを実行したいとき、ビューや、トリガー、パッケージ、プロシージャなどの他のOracleオブジェクトスキーマを作成するための十分な権限がないため、問題が発生しました。 :ORA-01031権限が不足しています」。そのため、これらのクエリとプログラムをすべて実行するには、すべての特権が必要でした。私は自分の問題を解決するために次のステップを踏みました:
a)ウィンドウ実行で、cmdと入力してコマンドプロンプトを開きました。 「sqlplus/nolog」と入力しました。これは、必要な資格情報を提供せずにログインしたことを意味します。
b)基礎となるO/Sについて自分を認証し、DBAとしてデータベースに入力しました。そのために、コマンドプロンプトで次のように入力しました:connect/as sysdba; c)データベースに存在するDBAユーザーを評価しました。そのために私は次のように入力しました:V $ databaseから名前を選択します。 d)ここで、このコマンドの後に進みます。最後に、次のコマンドを入力して、SQL開発者のビューを作成することを自分(scott)に許可しました。 e)最後に、次のように入力して、すべての権限を自分に付与しました。
コマンドプロンプトのスナップショット:添付しました。
最後に、ビューを実行して作成しました。
ユーザーに任意のテーブル権限を選択する必要があります。その後、ビューは正常にコンパイルされます。すべてのオブジェクトに対してユーザーに選択を明示的に付与する必要はありません。