システム パッケージは、初期化パラメータの値に応じて特別に扱われますO7_DICTIONARY_ACCESSIBILITY
。これFALSE
が Oracle 9i 以降のデフォルトである場合、ANY
権限はデータ ディクショナリに適用されません。ドキュメントでは、これを「辞書保護」と呼んでいます。
セキュリティガイドで見つけることができる最も近いもの -こことここ- 例としてのみ表を参照してください。
ただし、Oracle サポート ノート 174753.1 には、ディクショナリ保護が優先されることが明示的に記載されていgrant any object privilege
ます。それを引用することはできませんが、あなたが見ていることを説明しています。アクセスできる場合は、調べてみる価値があるかもしれません。
したがって、usr2
できるようにする唯一の方法grant execute on sys.dbms_lock to usr1
は、DBA が行うことgrant execute on sys.dbms_lock to usr2 with grant option
です。
Ben が言うように、DBA にパーミッションを直接付与してもらうか、付与された権限に をusr1
追加する必要があります。または、呼び出しの周りにラッパー プロシージャを作成し、それに対するアクセス許可を に付与します。with grant option
usr2
usr2
dbms_lock
usr1