bayannur 发表于 2011-2-15 16:27:32

如何将一个用户下所有函数的执行权限赋予另外一个用户

在网上查了,grant execute on functionname touser 是将一个函数执行权限赋予一个用户,但是这种方法不实用,一是只能一个一个授权,另外一个是新增函数又要再次授权。有一个简便的方法吗?

kimm_yong 发表于 2011-2-15 18:46:08


SELECT   'grant execute on ' || owner || '.' || object_name || ' to 目标用户;'
FROM   dba_objects
WHERE   owner = UPPER ('源用户')
         AND object_type IN
                  (UPPER ('package'),
                   UPPER ('type'),
                   UPPER ('PROCEDURE'),
                   UPPER ('FUNCTION'));

用DBA用户执行结果

bayannur 发表于 2011-2-15 19:26:00

回复 kimm_yong 的帖子

这个方法我想过,但是如果有新的function又要赋值。能一次解决吗?

kevin.zhang 发表于 2011-2-16 08:15:59

没有很好的办法,因为这正是ORACLE的安全原则:最小权限原则。
当然,你可以授予那个用户execute any package, procedure等的权限,但是明显不符合你的要求。

bayannur 发表于 2011-2-16 09:45:51

回复 kevin.zhang 的帖子

为什么表、存储过程、包都能用any,function反而不能呢。奇怪啊
谢谢你!
页: [1]
查看完整版本: 如何将一个用户下所有函数的执行权限赋予另外一个用户