質問

私は学部課程の学生であり、データベースOracle 10Gモード= XEでユーザーBが所有するストアドプロシージャに対して、ユーザーAに所有権を所有権を付与することにほとんど問題に直面していません。

ストアドプロシージャXYZの所有権を別のユーザーAに付与するためのSQLコマンドを書くのを手伝ってください。

役に立ちましたか?

解決

「所有権の権利」とはどういう意味か理解しているかどうかはわかりません。

ユーザーBがストアドプロシージャを所有している場合、ユーザーBはユーザーにストアドプロシージャを実行する許可を与えることができます

GRANT EXECUTE ON b.procedure_name TO a

ユーザーAは、完全に資格のある名前を使用して手順を呼び出します。

BEGIN
  b.procedure_name( <<list of parameters>> );
END;

あるいは、ユーザーAは、完全に適格な手順名を使用しないようにするために同義語を作成できます。

CREATE SYNONYM procedure_name FOR b.procedure_name;

BEGIN
  procedure_name( <<list of parameters>> );
END;

他のヒント

あなたは私があなたがしていると思うことをすることはできません。

手順で付与できる唯一の特権は、実行とデバッグです。

ユーザーBがユーザーに手順を作成できるようにする場合は、ユーザーBに手順の特権を作成する必要があります。手順を変更してドロップする手順は、ユーザーBの手順を変更またはドロップするために必要な他の適用される特権です。すべての範囲の特権は、ユーザーBを特定のスキーマに制限しないためです。ユーザーBは、これらの特権を認めれば、非常に信頼される必要があります。

編集:

ジャスティンが述べたように、Bが所有する手順のためにAに実行権を与える方法:

GRANT EXECUTE ON b.procedure_name TO a;

Oracleのパッケージとストアドプロシージャは、現在ユーザーに記録されているものではなく、パッケージ/手順所有者の権利を使用してデフォルトで実行します。

したがって、たとえばユーザーを作成するパッケージを呼び出すと、ユーザーの特権を作成する必要がある呼び出しユーザーではなく、パッケージ所有者です。発信者は、パッケージで許可を実行する必要があります。

通話ユーザーの権限を使用してパッケージを実行することを望む場合は、パッケージを作成するときは、authid current_userを指定する必要があります

Oracleのドキュメント「Invoker Rights vs Definer Rights」にはより多くの情報があります http://docs.oracle.com/cd/a97630_01/appdev.920/a96624/08_subs.htm#18575

お役に立てれば。

DBAアカウントで、userBに助成金を使用して手順を作成する権利を与えます grant create any procedure to USERB

手順が見えます

CREATE OR REPLACE PROCEDURE USERB.USERB_PROCEDURE
--Must add the line below
AUTHID CURRENT_USER AS
  BEGIN
  --DO SOMETHING HERE
  END
END

GRANT EXECUTE ON USERB.USERB_PROCEDURE TO USERA

私はこれが非常に古い質問であることを知っていますが、私はそれを少し削ることができることを望んでいます。

SQL> grant create any procedure to testdb;

これは、「testDB」ユーザーにCREATE特権を与えたい場合のコマンドです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top