【问题标题】:Cant execute a function with public synonym in oracle view [duplicate]无法在 oracle 视图中执行具有公共同义词的功能 [重复]
【发布时间】: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


【解决方案1】:

非常感谢帕特里克。我试图在 google 和 Stackoverflow 上找到它,但没有成功。


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多