システム パッケージは、初期化パラメータの値に応じて特別に扱われます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 optionusr2usr2dbms_lockusr1