質問
異なるスキーマのテーブルを含むビューを実行しようとすると、ORA-001031不十分な権限がスローされます。これらのテーブルには、ビューが作成されたスキーマに対する実行権限があります。ビューのSQLステートメントを実行すると機能します。何が足りないのですか?
解決
テーブルの所有者として、SELECTステートメントを実行しているユーザーに、基になるテーブルに対するSELECTアクセスを許可する必要があります。
grant SELECT on TABLE_NAME to READ_USERNAME;
他のヒント
やっとうまくいきました。スティーブの答えは正しいですが、すべての場合に当てはまりません。そのビューが3番目のスキーマから実行されている場合、失敗します。そのためには、付与オプションを追加する必要があります:
GRANT SELECT ON [TABLE_NAME] TO [READ_USERNAME] WITH GRANT OPTION;
そのようにして、 [READ_USERNAME]
は、ビューに対する選択権限を別のスキーマに付与することもできます
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からcount(*)を選択します。 1行目のエラー: ORA-01031:権限が不十分です
助成金の発行:
grant select on fdr.balance to dsdw with grant option;
現在のfdr: dsdw.view_nameからcount(*)を選択します。 5行
要約をさせてください。
異なる所有者のオブジェクトを含むビューを作成する場合、他の所有者は「付与オプション付き」を付与する必要があります。ビューの所有者に。そのため、ビューの所有者は他のユーザーまたはスキーマに付与できます。...
例: User_aはmine_aというテーブルの所有者です User_bはyours_bというテーブルの所有者です
user_bがmine_aとyours_bを結合したビューを作成したいとしましょう
ビューを正常に動作させるには、user_aが「mine_aの選択を許可オプション付きuser_bに許可する」
を指定する必要がありますその後、user_bはそのビューでの選択を全員に許可できます。
ストアドプロシージャを介してビューにアクセスする場合、ビューにアクセスするには実行許可が不十分です。明示的に選択を許可する必要があります。
ストアドプロシージャを介してビューにアクセスする場合、ビューにアクセスするには実行許可が不十分です。明示的に選択を許可する必要があります。
これを簡単に入力
すべてを公開する;
ビューを使用するには、ユーザーは適切な権限を持っている必要がありますが、ビュー自体に対してのみであり、基礎となるオブジェクトに対しては必要ありません。ただし、ビューの基礎となるオブジェクトのアクセス権限が削除されると、ユーザーはアクセスできなくなります。この動作は、ユーザーがビューを照会するときに使用されるセキュリティドメインがビューの定義者のものであるために発生します。基礎となるオブジェクトの特権がビューの定義者から取り消されると、ビューは無効になり、誰もビューを使用できなくなります。したがって、ユーザーがビューへのアクセスを許可されている場合でも、ビューの基になるオブジェクトから定義者の権限が取り消されている場合、ユーザーはビューを使用できない場合があります。
Oracleドキュメント http://docs.oracle.com/cd/B28359_01 /network.111/b28531/authorization.htm#DBSEG98017