Oracle10g 在Oracle 10gR2的过程中调用其他架构的过程的权限

Oracle10g 在Oracle 10gR2的过程中调用其他架构的过程的权限,oracle10g,privileges,Oracle10g,Privileges,Oracle 10gR2中是否有特权,可以通过角色授予用户在其自己的过程和功能中执行一个特定架构的所有包的任何过程/功能?例如,模式user1、user2、user3应该被授予一个角色,该角色允许在为该模式创建的过程下调用模式produser的过程 在任何过程系统级权限上都有一个GRANT EXECUTE,但这太强大了。如果为一个包显式地向用户授予特权,即将produser.package_1上的EXECUTE授予user1,则它可以工作,但它不是动态的,并且希望具有基于角色的特权 我希望有人能

Oracle 10gR2中是否有特权,可以通过角色授予用户在其自己的过程和功能中执行一个特定架构的所有包的任何过程/功能?例如,模式user1、user2、user3应该被授予一个角色,该角色允许在为该模式创建的过程下调用模式produser的过程

在任何过程系统级权限上都有一个GRANT EXECUTE,但这太强大了。如果为一个包显式地向用户授予特权,即将produser.package_1上的EXECUTE授予user1,则它可以工作,但它不是动态的,并且希望具有基于角色的特权

我希望有人能帮助我。如果有什么不清楚的地方,请告诉我


提前感谢:

内置角色或权限无法实现此目的。您需要创建自己的角色并将其授予用户:

create role prod_access;
grant prod_access to user1;
grant prod_access to user2;
...
然后为所有现有包或至少要公开的包授予该角色权限:

grant execute on produser.package_1 to prod_access;

每当您添加一个新的包时,部署的一部分就是将executeon授予角色。如果/当您添加一个新用户时,将您的角色授予他们作为其创建的一部分。

确实尝试过这一点,但由于某些原因,它没有授予模式在其自己的方法中执行这些方法的权限。不过,在虚拟环境中调用其他架构的方法工作得很好。@user3861781-如果我理解你的意思,那是定义者和调用者的权利问题,因为默认情况下,存储过程中不提供来自角色的特权。你说得对。找到它的Oracle指南:。谢谢你的回答。遗憾的是,没有一个简单的方式来授予这些特权。