• ベストアンサー

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

御世話になります。 TEST01というユーザーでオラクルに接続して下記のSQL文を実行したら 下記のエラーメッセージが出力されました。 [実行したSQL] SELECT * FROM DBA_ROLES; [出力されたエラーメッセージ] ORA-00942: table or view does not exist ネットで調べていたら「dba_ で始まるシステム表の検索は、権限が必要です」という記事を目にしました。 どの権限、またどのように付与すればいいのでしょうか。 ご存知の方がいましたらアドバイス宜しくお願いします。

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

  • ベストアンサー
  • uresiiwa
  • ベストアンサー率45% (49/107)
回答No.1

以下の感じで良いと思います。 【必要な権限】 select any dictionary 【付与する方法】 1.SYSユーザ、もしくはSYSTEMユーザ、DBA権限を持った任意のユーザで接続 2.grant select any dictionary to test01;

その他の回答 (2)

  • 3rd_001
  • ベストアンサー率66% (115/174)
回答No.3

検索できるようにするのは、他の方の回答でよいです。 しかし、ディクショナリには以下の種類があり、それぞれ参照可能な範囲が違ります。 dba_ :DB全体 all_ :自分の所有物及び権限付与された物 user_ :自分の所有物のみ 本当に「TEST01」というユーザにDB全体のディクショナリ情報を見せてもよいのでしょうか。そういう作業はDBA権限を持つ管理者ユーザでやるべきではないでしょうか。 また、ある処理でどうしてもDBA_XXXを参照しなければならないのであれば、個別のディクショナリにSelect権限を与えることで、権限を最小限にした方がよい気がします。

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.2

「SELECT_CATALOG_ROLE」が必要です。 管理者権限を持つユーザ、たいていはSYSかSYSTEMですが、から、そのユーザにGRANTしてください。 GRANT SELECT_CATALOG_ROLE TO TEST01; DBA_で始まる表、VIEWはスキーマ指定してください。 SELECT * FROM SYS.DBA_ROLES; SYS.DBA_?????と指定してください

関連するQ&A