无法在oracle视图中执行带有公共同义词的函数

时间:2019-05-24 17:23:58

标签: sql oracle roles privileges

我不了解oracle特权的问题。我需要的环境很复杂,但我将在一个较小的示例中进行描述:


有一个模式math,其中包含一个函数和一个公共同义词

数学

->函数:math.add

->公共同义词:add


然后有一个角色mathematician,其中包括授予执行该功能的特权

数学家

-> grant execute on math.add to mathematician


此角色已授予其他架构bob

鲍勃

-> grant math to bob


现在有问题

我可以像add一样在bob中使用select add (1,2) from dual,但是我不能在使用add的bob中创建视图

这样尝试给我:

ORA-24344: success with compilation error
ORA-01031: insufficient privileges error

如果我同意直接在add上执行以鲍勃grant execute on math.add to bob,则它可以工作。

这不是缺少创建视图特权之类的东西,它也将add标记为问题。

如果有人可以解释为什么会发生并带领我解决这个问题,那将是很好的。

谢谢!

1 个答案:

答案 0 :(得分:0)

非常感谢Patrick。我试图在google和Stackoverflow上找不到成功。


根据文档创建视图时,“必须直接向所有者授予这些特权,而不是通过角色...”。其中“这些”是指视图的从属对象。请仔细阅读Alex Poole对这篇文章的回答,stackoverflow.com/questions/56189418/…。这应该可以解决您的问题。