我不了解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
标记为问题。
如果有人可以解释为什么会发生并带领我解决这个问题,那将是很好的。
谢谢!
答案 0 :(得分:0)
非常感谢Patrick。我试图在google和Stackoverflow上找不到成功。
根据文档创建视图时,“必须直接向所有者授予这些特权,而不是通过角色...”。其中“这些”是指视图的从属对象。请仔细阅读Alex Poole对这篇文章的回答,stackoverflow.com/questions/56189418/…。这应该可以解决您的问题。