• ベストアンサー

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

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

  • Oracle
  • 回答数3
  • ありがとう数0

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

  • ベストアンサー
  • 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

  • ORACLE init.oraの設定

    ORACLEのパラメータを変更するために、init.oraの設定を行いたいのですが、以下のコマンドをSQLPLUSで実行するのですがエラーになってしまいます。 どのようにしたら実行できるのでしょうか? 教えてください。 SQL> startup pfile=E:\oracle\admi ORA-01031: 権限が不足しています。 使用環境    ORACLE VERは9.2.0.1.0    OS   XP 宜しくお願いします。

  • オラクル ブロンズ DBA11gの勉強で

    オラクルブロンズDBA11gの勉強をしております。 テキスト通りにOracleの操作をしているのですが、つまづいてしまいました。 DatabaseControlからデータベースの優先資格証明がおこなえないのです。 SYSDBAユーザ:SYS SYSDBAパスワード:Oracleインストール時に設定してSYSのパスワード ホストユーザ名:ログインしているユーザ ホストパスワード:ログインしているユーザのパスワード を入力してテストボタンを押すのですが、「ユーザー○○○としての○○○への接続に失敗しました」 とのエラーメッセージが表示されています。 ログインしているユーザはAdministartorsとora_dbaのグループに所属しています。 なにが問題なのか全くわからない状態です。 どうか教えてください。

  • ORA-14459: GLOBALキーワードがありません。

    ORA-14459: GLOBALキーワードがありません。 以下のSQLを実行したところエラーになりました。 GLOBALキーワードとは何でしょうか?原因を教えてください。 SQL> CREATE TEMPORARY TABLE TEST AS SELECT SYSDATE FROM DUAL; CREATE TEMPORARY TABLE TEST AS SELECT SYSDATE FROM DUAL * 行1でエラーが発生しました。: ORA-14459: GLOBALキーワードがありません。 ORACLE 10g Windows 2008

  • ORAー12560:TNS:protocol adapter error

    初心者です。ORACLE9iをインストールしました。コマンドラインから sqlplus /nolog SQL>connect /as sysdba と実行しますが、ERROR:ORAー12560:TNS:protocol adapter error となり接続出来ません。スタートメニューからSQL Plusを起動しても同エラーとなります。ORACLE関係のサービスは起動しており、ログインユーザはORACLEをインストールしたユーザでORA_DBAグループにも登録されています。OS再起動を実施しても同エラーです。OSはwindows2000Proです。どこをチェックすれば宜しいでしょうか。

  • 表領域の作成について

    表領域を作成してインポートしたら下記のエラーが出力されて困っています。 表領域の作成の仕方が駄目でエラーが出力されてしまったのでしょうか。 下記のCREATE TABLESPACE文で表領域を作成しています。 ---------------------------------------------------------------------- CREATE TABLESPACE "T_DAT" BLOCKSIZE 8192 DATAFILE 'D:\oracle\oradata\ora92\DAT_01.DBF' SIZE 32767M, 'D:\oracle\oradata\ora92\DAT_02.DBF' SIZE 32767M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M SEGMENT SPACE MANAGEMENT AUTO; ---------------------------------------------------------------------- コマンドプロンプトでimpコマンドを実行したら、下記のエラーなどが出力されました。 ---------------------------------------------------------------------- IMP-00003: Oracleエラー1659が発生しました。 ORA-01659: nを超えるMINEXTENTSを表領域T_DATに割当てできません。 IMP-00003: Oracleエラー1658が発生しました。 ORA-01658: 表領域T_DATにセグメント用のINITIALエクステントを作成できません。 ---------------------------------------------------------------------- 何がいけないのかが正直わかりません。 申し訳ありませんがアドバイスいただけませんでしょうか。 宜しくお願いします。

  • Flashback Tableで必要な権限

    OcaleMasterにむけて勉強中です。 Oracle11.2をOracleLinux5にインストールして以下を行いました。 1.ユーザー「test」を作成。権限はconnectロールのみ。 2.sqlplusにtestでログイン(sqlplus test/***) 3.テーブル「t1」を作成/行移動を有効。 4.t1に対し挿入・更新を実行する。 5.flashback tableを実施すると以下のようなエラーが発生しました。 SQL> flashback table test.t1 to scn 1015246; flashback table test.t1 to scn 1015246 * 行1でエラーが発生しました。: ORA-00604: 再帰SQLレベル1でエラーが発生しました。 ORA-01031: 権限が不足しています。 6.testにflashback any tableシステム権限/sysdba権限を付与 7.sqlplusにtestで再度ログイン(sqlplus test/***) 8.flashback tableを実施するとやはり同様のエラーが発生しました。 9.sqlplusにsysdbaでtestで再度ログイン。(sqlplus test/*** as sysdba) 10.flashback tableを実施すると成功しました。 参考書などの記載を見る限り、基本的に自分のテーブルであれば権限は不要と思ったのですが(少なくともSYSDBAでないと不可というものではないはず!?)、No5、No8でエラーとなってしまったのは、どこに問題があったものでしょうか。 何か情報ありましたら教えてください。

  • 参照権限の付与方法

    環境は、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; のように、全ての表、ビューを参照権限を与えることはできるでしょうか?

  • sqlのエラーハンドリングについて質問です。

    シェルからsqlplusを実行し、そのsqlplusで発生したエラーをハンドリングするために、 出力内容をORACLEエラーコード(ORA-xxxxx)、SQLPLUSエラーコード(SP2-xxxxx) で検索して判定しています。 また、SQLで何らかのエラーが発生した際に処理を終了させるために、 SQL実行前に whenever sqlerror exit; whenever oserror exit; を定義しています。 何らかのエラーが発生した際は、ORACLEエラーコード(ORA-xxxxx)、SQLPLUSエラーコード(SP2-xxxxx) が出力されるため、エラーハンドリングは可能と考えているのですが、 sqlplusのstartコマンドでsqlファイルを実行した場合のみ、エラーコードが出 力されないため、ハンドリングできません。 ■実行例 SQL> start 存在しないsqlファイル O/Sメッセージ:No such file or directory 切断しました。 試しにwhenever oserror exit;の記述を削除したところ SP2-0130が出力されエラーハンドリングできました。 whenever oserror exit; の記述があるとエラーコードが出力されないのはなぜでしょうか??

  • SQLのSP2-エラーについて

    SQLの実行に失敗した際に出力される「SP2-」で始まるエラーは何があるか調べています。「ORA-」や「PLS-」のようにエラーメッセージ集のようなドキュメントはないのでしょうか。OTNで探したのですが見つかりませんでした。

  • ロール(オブジェクト権限)について

    オラクルのパージョンは「9.2.0.1.0」です。 オブジェクト権限を指定したロールをパッケージから参照する事はできないのでしょうか。 対象のスキーマにはオブジェクト権限を指定したロールを付与していますがパッケージで下記のエラーが発生して困っています。 「ORA-00942: 表またはビューが存在しません。」 どのようにすればいいのか、恥ずかしながらわかりません。 どなたかご教授お願いできませんでしょうか。 些細な事でも構いませんので宜しくお願いします。