微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Oracle中的dbms_lock上执行execute?

我需要从用户usr1使用dbms_lock.sleep过程.我不能以sys身份登录,但是我有一个用户usr2的密码,它们具有“授予任何对象权限”权限.但是,当我以usr2登录并尝试发布
grant execute on sys.dbms_lock to usr1

我得到ORA-01031“权限不足”异常.与其他用户的测试包相同.系统包是否被特别处理,还是我错过了什么?

根据初始化参数O7_DICTIONARY_ACCESSIBILITY的值,系统包被特别处理.如果这是FALSE,这是Oracle 9i之后的认值,那么任何权限都不适用于数据字典.文件称之为“字典保护”.

在安全指南herehere中可以找到的最接近的仅仅是以表为例.

然而,Oracle支持说明174753.1明确声明字典保护取代了任何对象权限.我不能引用,但它解释了你所看到的;如果您有访问权限,可能需要查询.

所以,usr2能够将sys.dbms_lock的执行授予usr1的唯一方法是让DBA通过grant选项在sys.dbms_lock到usr2上执行grant执行.

正如Ben所说,你必须要求DBA直接授予usr1的权限,或者将授予选项添加到授予usr2的权限;或者让usr2围绕dbms_lock调用创建一个包装程序,并将权限授予usr1.

原文地址:https://www.jb51.cc/oracle/204913.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐