无法在 oracle 视图中执行具有 public 同义词的函数
Cant execute a function with public synonym in oracle view
我有一些关于 oracle 权限的问题我不明白。我需要它的环境很复杂,但我会用一个较小的例子来描述:
有一个架构 math
,其中包含一个函数和一个 public 同义词
数学
-> 函数:math.add
-> public同义词:add
然后有一个角色mathematician
,其中包括授予执行该功能的权限
数学家
--> grant execute on math.add to mathematician
此角色已授予另一个模式bob
鲍勃
--> grant math to bob
现在的问题
我可以像 select add (1,2) from dual
一样在 bob 中使用 add
但我无法在使用 add
的 bob 中创建视图
尝试让我:
ORA-24344: success with compilation error
ORA-01031: insufficient privileges error
如果我将 add
上的执行权限直接授予 bob grant execute on math.add to bob
,它会起作用。
这不是缺少创建视图权限之类的,它也将 add
标记为问题。
如果有人能解释为什么会发生这种情况并引导我解决这个问题,那就太好了。
谢谢!
非常感谢帕特里克。我试图在 google 和 Whosebug 上找到它,但没有成功。
"The owner must be granted these privileges directly, rather than through a role ..." 根据文档创建视图时。其中 "these" 指的是视图的依赖对象。请阅读 Alex Poole 对此 post、whosebug.com/questions/56189418/… 的回答。这应该可以解决您的问题。
我有一些关于 oracle 权限的问题我不明白。我需要它的环境很复杂,但我会用一个较小的例子来描述:
有一个架构 math
,其中包含一个函数和一个 public 同义词
数学
-> 函数:math.add
-> public同义词:add
然后有一个角色mathematician
,其中包括授予执行该功能的权限
数学家
--> grant execute on math.add to mathematician
此角色已授予另一个模式bob
鲍勃
--> grant math to bob
现在的问题
我可以像 select add (1,2) from dual
一样在 bob 中使用 add
但我无法在使用 add
尝试让我:
ORA-24344: success with compilation error
ORA-01031: insufficient privileges error
如果我将 add
上的执行权限直接授予 bob grant execute on math.add to bob
,它会起作用。
这不是缺少创建视图权限之类的,它也将 add
标记为问题。
如果有人能解释为什么会发生这种情况并引导我解决这个问题,那就太好了。
谢谢!
非常感谢帕特里克。我试图在 google 和 Whosebug 上找到它,但没有成功。
"The owner must be granted these privileges directly, rather than through a role ..." 根据文档创建视图时。其中 "these" 指的是视图的依赖对象。请阅读 Alex Poole 对此 post、whosebug.com/questions/56189418/… 的回答。这应该可以解决您的问题。