dポイントプレゼントキャンペーン実施中!

環境は、Windows Server 2003、Oracle 9.2.0.6.0
になります。

userAが持っている表、ビューの参照権限を
userBに与えようと思います。

userAでログインし、以下のSQLを発行したところ、
 grant select any table to userB;

以下のエラーが出ました。
 ORA-01031:権限が不足しています。

これは、userAに権限を付与する権限がないのだと
理解しました。

■疑問1
この現象は、userAに権限を付与する権限がない
との理解で正しいでしょうか?
また、userAに「権限を付与する権限」を付与するには
どのようなSQLを発行すればよいでしょうか?

■疑問2
systemユーザでログインし、userBに権限を与える方法も
あると思います。
その場合、以下のSQL文になると思います。
 grant select on userA.testtable to userB

この場合、表、ビュー1つずつ与える必要がありますが、
 grant select any table to userB;
のように、全ての表、ビューを参照権限を与えることはできるでしょうか?

A 回答 (1件)

誤解しているようですが、「SELECT ANY TABLE」権限は


DB上の全てのテーブルを参照できる権限です。

userAのテーブルだけではなく、全てのテーブルが参照できてしまいます。

下記の要件を満たすには個別テーブルに対して権限を与える必要があります。

>userAが持っている表、ビューの参照権限を
>userBに与えようと思います。

面倒であれば、下記URLのようにディクショナリからSQL文を生成します。
http://otn.oracle.co.jp/forum/message.jspa?messa …


>以下のエラーが出ました。
> ORA-01031:権限が不足しています。
>
>これは、userAに権限を付与する権限がないのだと
>理解しました。

「SELECT ANY TABLE」はシステム権限です。
ですので通常DBAが権限を付与します。所有者はSYSです。
「userA」に「SELECT ANY TABLE」を付与しても、また貸しのように
他ユーザに付与できません。

もし、どうしても「userA」から権限を与えたい場合、「userA」に対して「WITH ADMIN OPTION」付きで「SELECT ANY TABLE」を付与します。

しかし、また貸しで権限を付与するのはわかりにくいのでやめた方がよいでしょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>誤解しているようですが、「SELECT ANY TABLE」権限は
>DB上の全てのテーブルを参照できる権限です。
>userAのテーブルだけではなく、全てのテーブルが参照できてしまいます。
そうだったのですね。勘違いしていました。

>「SELECT ANY TABLE」はシステム権限です。
userAはDBA権限を持っていないので、
 ORA-01031:権限が不足しています。
のエラーが出たのですね。納得しました。

>要件を満たすには個別テーブルに対して権限を与える必要があります。
了解しました。ディクショナリビュー等を利用し、1つずつ与えることにします。

お礼日時:2009/04/24 15:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す