web-dev-qa-db-ja.com

ORA-01031:ビュー選択時の権限が不十分です

異なるスキーマのテーブルを含むビューを実行しようとすると、ORA-001031不十分な権限がスローされます。これらのテーブルには、ビューが作成されたスキーマに対する実行権限があります。ビューのSQLステートメントを実行すると機能します。私は何が欠けていますか?

29
Igor Zelaya

テーブルの所有者は、SELECTステートメントを実行しているユーザーに、基になるテーブルに対するSELECTアクセスを許可する必要があります。

grant SELECT on TABLE_NAME to READ_USERNAME;
19
Steve K

最後に、私はそれを動作させました。スティーブの答えは正しいですが、すべての場合に当てはまりません。そのビューが3番目のスキーマから実行されている場合、失敗します。それが機能するには、付与オプションを追加する必要があります。

GRANT SELECT ON [TABLE_NAME] TO [READ_USERNAME] WITH GRANT OPTION;

そうすれば、[READ_USERNAME]は、ビューに対する選択特権を別のスキーマに付与することもできます。

35
Igor Zelaya

Q.「付与オプション」はいつ必要ですか?

A. 3番目のスキーマからビューを実行しているとき。

例:スキーマDSDSWにはview_nameというビューがあります

a) that view selects from a table in another schema  (FDR.balance)
b) a third shema  X_WORK  tries to select  from that view

典型的な付与:dsdw.view_nameのselectをdsdw_select_roleに付与します。 dsdw_select_roleをfdrに付与します。

ただし、fdrはdsdw.view_nameからselect count(*)を取得します。 1行目のエラー:ORA-01031:権限が不十分です

助成金を発行:

grant select on fdr.balance to dsdw with grant option;

現在fdr:dsdw.view_nameからcount(*)を選択します。 5列

4
oracledba

要約しておこう。

異なる所有者のオブジェクトを含むビューを作成する場合、他の所有者はビューの所有者に「付与オプション付き」を付与する必要があります。したがって、ビューの所有者は他のユーザーまたはスキーマに付与できます。

例:User_aはmine_aというテーブルの所有者ですUser_bはyours_bというテーブルの所有者です

User_bがmine_aとyours_bを結合したビューを作成したいとします

ビューを正常に機能させるには、user_aが「mine_aでのselectを付与オプションでuser_bに付与する」必要があります

その後、user_bはそのビューでの選択を全員に許可できます。

4

ストアドプロシージャを介してビューにアクセスする場合、実行許可はビューにアクセスするには不十分です。 selectを明示的に付与する必要があります。

単にこれを入力してください

すべてを一般に認める。

1
akshay

ストアドプロシージャを介してビューにアクセスする場合、実行許可はビューにアクセスするには不十分です。 selectを明示的に付与する必要があります。

1
dacracot

ビューを使用するには、ユーザーは適切な権限を持っている必要がありますが、その基本オブジェクトではなく、ビュー自体に対してのみです。ただし、ビューの基礎となるオブジェクトのアクセス権限が削除されると、ユーザーはアクセスできなくなります。この動作は、ユーザーがビューをクエリするときに使用されるセキュリティドメインがビューの定義者のものであるために発生します。基礎となるオブジェクトの特権がビューの定義者から取り消されると、ビューは無効になり、誰もビューを使用できなくなります。したがって、ユーザーがビューへのアクセスを許可されている場合でも、定義者の権限がビューの基礎となるオブジェクトから取り消された場合、ユーザーはビューを使用できない場合があります。

Oracleドキュメント http://docs.Oracle.com/cd/B28359_01/network.111/b28531/authorization.htm#DBSEG98017

0
Van Gogh