【发布时间】:2019-05-25 14:44:39
【问题描述】:
我对 oracle 权限有一些问题,我不明白。我需要这个的环境很复杂,但我会用一个更小的例子来描述:
有一个架构 math 带有一个函数和一个公共同义词
数学
-> 函数:math.add
-> 公共同义词:add
然后有一个角色mathematician,其中包括授予执行该功能的权限
数学家
--> grant execute on math.add to mathematician
这个角色被授予另一个架构bob
鲍勃
--> grant math to bob
现在的问题
我可以在 bob 中使用 add,如 select add (1,2) from dual,但我无法在 bob 中创建使用 add 的视图
尝试这样做给了我:
ORA-24344: success with compilation error
ORA-01031: insufficient privileges error
如果我直接将 add 上的执行权限授予 bob grant execute on math.add to bob 它可以工作。
不是缺少创建视图权限什么的,它也将add标记为问题。
如果有人能解释为什么会发生这种情况并引导我解决这个问题,那就太好了。
谢谢!
【问题讨论】:
-
“所有者必须直接授予这些权限,而不是通过角色...”根据文档创建视图时。其中“这些”是指视图的依赖对象。请阅读 Alex Poole 对这篇文章的回答,stackoverflow.com/questions/56189418/…。这应该可以解决您的问题。
标签: sql oracle roles privileges