2011-01-31 12 views
3

私はビューを作成しようとしていますが、別のスキーマのテーブルを参照するビューを作成できないという問題がありました。Oracle:スキーマ間でビューを作成していますか?

例えば、私が行うことができます。

select count(*) from otherschema.othertable; 

をし、私が行うことができます。

create view foo as select count(*) as bar from oneofmytables; 

しかし、私はしようとした場合:

create view foo as select count(*) as bar from otherschema.othertable; 

私は "不十分な権限" のエラーが表示されます。どんな追加の特権が必要ですか?

答えて

8

他のユーザーのテーブルに直接許可を与えていますか?それとも役割を介してですか?他のテーブルを参照するオブジェクト(ビュー、プロシージャなど)を作成するためには、権限を直接付与する必要があります。迅速なSQLでのテスト、* Plusの

SQL> set role none; 
SQL> select count(*) from otherschema.othertable; 

としてそれが失敗した場合、問題はあなたが役割を経由して、テーブルの上に権限が付与されているということです。

+0

どちらも良い、正解ですが、私は問題を確認することが容易にできたので、これを選んだのです。ありがとう! – chris

5

otherschema.othertableroleを経由して直接grantで選択権を与えられたと思います。

この場合、otheruserとして接続し、次にgrant select on othertable to <your-schema>を接続します。

+0

そして、ビューが第3のスキーマから選択されると予想される場合は、WITH GRANT OPTIONをGRANTに追加してください。 –

1

私はあなたのDBAは、任意のビュー

特権を作成し、あなたに

を付与する必要がありますと信じています。サイトのセキュリティ制限によっては、これを許可してもしなくてもかまいません。私は通常そうではありません

関連する問題