アプリ版:「スタンプのみでお礼する」機能のリリースについて

御世話になります。
TEST01というユーザーでオラクルに接続して下記のSQL文を実行したら
下記のエラーメッセージが出力されました。

[実行したSQL]
SELECT * FROM DBA_ROLES;

[出力されたエラーメッセージ]
ORA-00942: table or view does not exist

ネットで調べていたら「dba_ で始まるシステム表の検索は、権限が必要です」という記事を目にしました。

どの権限、またどのように付与すればいいのでしょうか。
ご存知の方がいましたらアドバイス宜しくお願いします。

A 回答 (3件)

以下の感じで良いと思います。



【必要な権限】
select any dictionary

【付与する方法】
1.SYSユーザ、もしくはSYSTEMユーザ、DBA権限を持った任意のユーザで接続
2.grant select any dictionary to test01;
    • good
    • 0

検索できるようにするのは、他の方の回答でよいです。



しかし、ディクショナリには以下の種類があり、それぞれ参照可能な範囲が違ります。

dba_ :DB全体
all_ :自分の所有物及び権限付与された物
user_ :自分の所有物のみ

本当に「TEST01」というユーザにDB全体のディクショナリ情報を見せてもよいのでしょうか。そういう作業はDBA権限を持つ管理者ユーザでやるべきではないでしょうか。

また、ある処理でどうしてもDBA_XXXを参照しなければならないのであれば、個別のディクショナリにSelect権限を与えることで、権限を最小限にした方がよい気がします。
    • good
    • 0

「SELECT_CATALOG_ROLE」が必要です。


管理者権限を持つユーザ、たいていはSYSかSYSTEMですが、から、そのユーザにGRANTしてください。

GRANT SELECT_CATALOG_ROLE TO TEST01;

DBA_で始まる表、VIEWはスキーマ指定してください。

SELECT * FROM SYS.DBA_ROLES;

SYS.DBA_?????と指定してください
    • good
    • 0

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