- ベストアンサー
dba_で始まるシステム表を検索するには
御世話になります。 TEST01というユーザーでオラクルに接続して下記のSQL文を実行したら 下記のエラーメッセージが出力されました。 [実行したSQL] SELECT * FROM DBA_ROLES; [出力されたエラーメッセージ] ORA-00942: table or view does not exist ネットで調べていたら「dba_ で始まるシステム表の検索は、権限が必要です」という記事を目にしました。 どの権限、またどのように付与すればいいのでしょうか。 ご存知の方がいましたらアドバイス宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
以下の感じで良いと思います。 【必要な権限】 select any dictionary 【付与する方法】 1.SYSユーザ、もしくはSYSTEMユーザ、DBA権限を持った任意のユーザで接続 2.grant select any dictionary to test01;
その他の回答 (2)
- 3rd_001
- ベストアンサー率66% (115/174)
検索できるようにするのは、他の方の回答でよいです。 しかし、ディクショナリには以下の種類があり、それぞれ参照可能な範囲が違ります。 dba_ :DB全体 all_ :自分の所有物及び権限付与された物 user_ :自分の所有物のみ 本当に「TEST01」というユーザにDB全体のディクショナリ情報を見せてもよいのでしょうか。そういう作業はDBA権限を持つ管理者ユーザでやるべきではないでしょうか。 また、ある処理でどうしてもDBA_XXXを参照しなければならないのであれば、個別のディクショナリにSelect権限を与えることで、権限を最小限にした方がよい気がします。
- SaKaKashi
- ベストアンサー率24% (755/3136)
「SELECT_CATALOG_ROLE」が必要です。 管理者権限を持つユーザ、たいていはSYSかSYSTEMですが、から、そのユーザにGRANTしてください。 GRANT SELECT_CATALOG_ROLE TO TEST01; DBA_で始まる表、VIEWはスキーマ指定してください。 SELECT * FROM SYS.DBA_ROLES; SYS.DBA_?????と指定してください