如何在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.

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...