1

セットアップ: Oracle 11g で実行する 2 つのスクリプト ツリーがあります。1 つのセットは正しいインスタンス構成を保証し、すべての DBA プロキシ アカウントが dbadmin アカウントに接続するようにします。もう 1 つのセットはデータベース環境を構築および変更します。

問題: DBADMIN アカウントにプロキシすると、2 番目のスクリプト セットが正常に実行されます。データのロードを許可するプロシージャは、適切なスキーマの下で問題なく作成され、データをロードするスクリプトは、SYS AS SYSDBA として実行された場合に問題なく実行されますが、プロシージャを作成した直後に DBADMIN として実行しようとすると、I が呼び出されますPLS-00904: insufficient privilege to access object schema.package呼び出しごとに取得します。GRANT EXECUTE ON schema.package TO DBADMIN(もちろん)予想されるORA-01749: you may not GRANT/REVOKE privileges to/from yourselfエラーが生成されるため、スクリプトを作成することさえできません。

もっと簡単に言えば:

(DBADMINとして:)

 ...
CREATE OR REPLACE PACKAGE BODY other_schema.package_name IS
 ...
PROCEDURE add_data(...)
 ...

(成功し、テスト可能に動作しています)(後で、同じ親スクリプトによって呼び出された別のスクリプトで、まだDBADMINとして:)

BEGIN
   other_schema.package_name.add_data(...);
   ...

(上記の PLS-00904 を発生させます - 権限が不十分です)

DBADMINアカウントにまだ作成していないパッケージへのEXECUTEアクセスを与える方法、またはDBADMINがスクリプトストリーム全体を停止せずに自分自身にアクセスし、ログアウトしてSYS AS SYSDBAとして再度ログインしてGRANTする方法についてのアイデアはありますか? (ここでの要点は、最初の「このスクリプト ツリーを実行する」以外の手動ステップをゼロにし、SYS AS SYSDBA を使用する前に 1 回だけにすることです。)

4

1 に答える 1

4

DBADMIN に EXECUTE ANY PROCEDURE 権限を付与できます。これにより、他のユーザーが所有するプログラムを実行するための手順を実行できます。

他の ANY プロシージャと同様に、これは非常に強力であり、安易に許可するべきではありません。(実際、これは最も強力な ANY 特権の 1 つです)。

于 2012-08-01T16:04:35.710 に答える