• ベストアンサー
  • すぐに回答を!

dba_で始まるシステム表を検索するには

  • 質問No.5348990
  • 閲覧数286
  • ありがとう数0
  • 回答数3

お礼率 44% (8/18)

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

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

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

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

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

質問者が選んだベストアンサー

  • 回答No.1
  • ベストアンサー

ベストアンサー率 45% (49/107)

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

【必要な権限】
select any dictionary

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

その他の回答 (全2件)

  • 回答No.3

ベストアンサー率 66% (115/174)

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

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

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

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

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

ベストアンサー率 24% (755/3136)

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

GRANT SELECT_CATALOG_ROLE TO TEST01;

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

SELECT * FROM SYS.DBA_ROLES;

SYS.DBA_?????と指定してください
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ