1

Oracleでは、このようなビューを作成しようとしています

create view ddd as
  select * 
    from myschema1.t1 
         join myschema2.t2 
....

このステートメントを実行すると、エラーが発生しますORA-01031 : insufficient privileges。ただし、Query Worksheet でクエリを実行するだけでは機能します。

ステートメントが失敗する理由CREATE VIEWと、ステートメントを成功させるために必要な特権は何ですか?

4

2 に答える 2

2

myschema1.t1およびを参照するビューを作成するにはmyschema2.t2、ビューを所有するユーザーに、ロールを介してではなく、これら 2 つのテーブルへの直接アクセス権を付与する必要があります。私の最初の推測は、ロールを介して基になるテーブルに対する権限が付与されているということです。ロールを無効にしてクエリを再実行することにより、SQL*Plus でこれを確認できます。もしあなたがそうするなら

SQL> set role none;
SQL> select * 
       from myschema1.t1 
            join myschema2.t2 ...

クエリは動作しますか? そうでない場合は、直接ではなく、ロールを介して付与された権限しかありません。ビューへのアクセス権を他のユーザーに付与できるようにする場合は、オブジェクトに対する権限を付与する必要があることに注意してくださいWITH GRANT OPTION

GRANT SELECT ON myschema1.t1 TO <<user that will own the view>> WITH GRANT OPTION;
GRANT SELECT ON myschema2.t2 TO <<user that will own the view>> WITH GRANT OPTION;

基礎となるオブジェクトに対する権限に問題がない場合は、権限が付与されていない可能性がありますCREATE VIEW

于 2012-08-02T15:32:36.037 に答える
1

CREATE VIEWそれはあなたに特権がないように聞こえます。テーブルにアクセスできなかった場合は、ORA-00942: table or view does not exist.

于 2012-08-02T15:25:21.790 に答える