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
。