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

前端之家收集整理的这篇文章主要介绍了如何在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.

猜你在找的Oracle相关文章