• ベストアンサー

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

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

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

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

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

パッケージやストアドプロシジャ、ストアドファンクションでは、 ロール経由のオブジェクト権限は無効だと思いますけど・・。

edo_1972
質問者

補足

回答、ありがとうございます。 > パッケージやストアドプロシジャ、ストアドファンクションでは、 > ロール経由のオブジェクト権限は無効だと思いますけど・・。 試しにスキーマに直接、GRANTでオブジェクト権限を付与したら正常にコンパイルできました。 こういう場合はスキーマに直接、GRANTするのが一般的なのでしょうか。 申し訳ありませんが再度、ご教授お願いできませんでしょうか。 宜しくお願いします。

その他の回答 (2)

回答No.3

>こういう場合はスキーマに直接、GRANTするのが一般的なのでしょうか 一般的だと思いますよ。 権限を付与するか、シノニムを定義するぐらいしか方法はないと思いますよ。

  • ishi7474
  • ベストアンサー率32% (71/216)
回答No.1

"スキーマ名.表名"の形式で指定しても、ORA-00942が発生しますか。

edo_1972
質問者

補足

回答、ありがとうございます。 > "スキーマ名.表名"の形式で指定しても、ORA-00942が発生しますか。 はい、エラー(ORA-00942)が発生しています。 パッケージの記述を確認したら、"スキーマ名.表名"で記述してありました。 こういう場合はどのように権限を付与するの一般的なのでしょうか。 申し訳ありませんが再度、ご教授お願いできませんでしょうか。 宜しくお願いします。

関連するQ&A

  • 異なるスキーマのビューを元にしたマテリアライズドビューの作成

    「所有していないマテリアライズド・ビューのマスター表にアクセスする場合は、各表に対するSELECTオブジェクト権限またはSELECT ANY TABLEシステム権限が必要です。」 ということから、selectオブジェクト権限をつけた『ビュー』をもとに、マテリアライズドビューの作成はできないのでしょうか? 例)Aスキーマが所有するTESTビュー表をもとに、Bスキーマでマテリアライズドビューを作成する。 create materialized view mview as select * from A.TESTビュー; create materialized view 権限は付与しました。 A.TESTビューに対するSELECTオブジェクト権限は付与しました。 結果としては、表またはビューがありません。とエラーがでます。 しかし、Aスキーマが所有するテーブルに対しては、問題なくマテリアライズドビューの作成はできます。 異なるスキーマの『ビュー』を元にマテリアライズドビューの作成は できない。といった記述はないのですが、実際に作成ができません。 ご教授ください。

  • 参照権限の付与方法

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

  • Oracleでオブジェクト権限を調べるディクショナリは?

    Oracleであるユーザーtest_usr1がSample_tblというテーブルについて、test_user2に対してたとえばselectとupdateする権限を付与した場合、test_user2のオブジェクト権限を調べる場合、どのディクショナリで調べたらいいのでしょうか。 基本的な質問で恐縮ですが、よろしくお願いいたします。 Oracle 8.1.7のリファレンス・マニュアルを調べましたが、ここには載っていないようです。

  • オラクルのユーザ、ロール、権限の位置づけについて

    オラクルブロンズ取得を目指して勉強しています。とても基本的なことで、いまいち分からないことがあるのですが・・・以下のユーザ、ロール、権限、表領域とも呼べるべきものの位置付けがはっきりしません。 ・SYS ・SYSTEM ・SYSAUX ・SYSDBA ・SYSMAN ・SYSOPER ・DBA DBAなんかはまるでユーザかのように書かれているあいまいな参考書もあり、初心者には混乱の元です。そこで整理してみたんですが、以下のような感じで間違いないでしょうか? ●表領域:SYS、SYSTEM、SYSAUX ●ユーザ:SYS、SYSTEM、SYSMAN ●スキーマ:SYS、SYSTEM、SYSMAN ●権限:SYSDBA、SYSOPER、DBA ●ロール:SYSDBA、SYSOPER、DBA

  • Oracle 10g 他スキーマの参照権限をはずす方法

    Oracle 10g 他スキーマの参照権限をはずす方法 ユーザを2個作成したら、ユーザ名と同一のスキーマが2個できました。 デフォルトで他スキーマの参照権限がついているようです。 この権限をはずす事はできますでしょうか。 以下のSQLでははずせませんでした。 REVOKE ALL ON YAMADA.* TO TANALA;

  • Oracle 参照用ユーザー作成

    Oracle 9i で新規で参照専用のユーザーを作成しています。 が、うまく作成できなかったため質問したいと思います。 現在、下記のようなデータベース、ユーザー名となっています。 データベース :A ユーザー :A これに対して、以下のユーザーを作成しました。 ユーザー :B ロール :CONNECT システム権限 :select any table execute any procedure この状態で、データベースAに対してユーザーBへ接続はできますが、 SELECT文を実行しても、”ORA-00942:表またはビューが存在しません”メッセージが表示されます。 そこで、BのロールをDBAにしたり、オブジェクト権限に、データベースAの表に対して 使用可能な権限としてSELECTを指定したりしたのですが、やはり同様のメッセージが表示されました。 データベースAの表を見れていない状況だと思うのですが、どのように、Aの表を参照するよう 設定してやるのかがわかりません。 何が不足しているのかご教授下さい。 よろしくお願い致します。

  • ロールの設定

    Oracleで言う GRANT 付与したい権限 TO ロール名 のようなコマンドを探しています。 Enterprise Managerで権限を与えて スクリプトの作成を実行しても それらしきコマンドは生成されませんでした。 よろしければご回答くださいませ。

  • Oracle 10g 権限付与

    はじめまして Oracle10gで、今度新しいデータベースが始動します。 問題なのが、管理者向けに発行するIDと、一般ユーザ向けに発行するIDの違いです。 管理者には参照・更新、参照権限付与・更新権限付与。 一般ユーザには参照、更新(それぞれテーブルごとに申請を出してもらう)、管理者から権限をもらう。 という仕組みになりました。 月に3度から4度、新しいテーブルができます。そのたびにgrantオプション付で管理者に権限付与するのも大変です。 select anyでは、テーブルごとの切り分けができません。 Oracle10gには詳しくないのですが(そもそもOracleにそんなに詳しくないのですが)、何かOracle10gの新機能など、使えそうなものはないでしょうか。 よろしくお願いいたします。

  • DBリンク経由の参照について

    サーバ【A】のスキーマ【あ】にDB【テーブル1】があります。 サーバ【A】のスキーマ【い】に、【あ】からセレクト権限を与えた所、【い】から【テーブル1】を参照できるようになりました。 次に、 サーバ【B】からサーバ【A】にDBLINKをはりました。 (tnspingで接続されているのを確認済)。 これで、 サーバ【B】のスキーマ【あ】からDBLINK経由で【テーブル1】を参照できるようになりました。 しかし、サーバ【B】のスキーマ【い】から【テーブル1】が参照できません。 私としては、スキーマ同士の権限を与え、DBLINKが正しく繋がっているので、参照できるのでは??と思うのですが、 何度やっても、 --------------------------------------------------------------- ORA-04043: オブジェクト"【あ】"."【テーブル1】"は存在しません。 --------------------------------------------------------------- が表示されてしまいます。 原因として何が考えられるでしょうか…?? 説明不足だったらすみません。 何か考えられる可能性があったら教えて下さい。

  • データベースオブジェクトの考え方がわからない

    DBの勉強を始めたばかりで概念的にわからないことがありましたので、ご教授ください。 "データベースオブジェクト"という言葉についてです。 参考書を見ると、「表やビュー表などの、データベースで扱われるオブジェクトのこと」とあります。 このオブジェクトは表でいうとどの部分をさしているのでしょうか? #インスタンスというのもこのオブジェクトに含まれるという認識でしょうか。。 又、扱われるオブジェクトの種類は、データベースの種類により異なるとあるのですが、 例えば、OracleとPostgresSQLではどのような点が違うのでしょうか?