【发布时间】:2019-01-28 21:16:14
【问题描述】:
我有一个这样定义的视图:
SELECT
pi.Role,
pi.created_date,
pi.last_upd_date,
pi.person_id
FROM
other_schema.table_a pi
WHERE
...;
但是当我编译它时,我得到一个错误:“ORA-01031:权限不足”
如果我尝试运行用于定义视图的 sql(在创建视图之外),它会正确执行。我是否缺少将其作为视图执行的权限?
为清晰而编辑:
CREATE VIEW VIEW_1 AS
SELECT
pi.Role,
pi.created_date,
pi.last_upd_date,
pi.person_id
FROM
other_schema.table_a pi
返回:视图“VIEW_1”已创建。
SELECT * FROM VIEW_1
返回:ORA-04063:视图“VIEW_1”有错误
SELECT
pi.Role,
pi.created_date,
pi.last_upd_date,
pi.person_id
FROM
other_schema.table_a pi
返回:table_a 中的数据
查看视图中的错误时,我看到:“ORA-01031:权限不足”
【问题讨论】:
-
表是否在不同的架构中 - 您没有显示架构前缀,但我猜是这样 - 您对它的选择权限是通过角色授予的,而不是直接授予?跨度>
-
这就是你要找的东西:stackoverflow.com/questions/20595701/…
-
@AlexPoole 您是否建议禁用基于角色的特权,从视图中选择它们在过程中禁用的方式?我想我从来没有读过那个。但是您可能对视图位于另一个模式中是正确的。视图的所有者需要
GRANT SELECT ON thisview TO anthonylynch WITH GRANT OPTION。 -
@MatthewMcPeak - 标题有点令人困惑,但问题主体说错误是在编译/定义(即创建)时,而不是在查询时。不过,澄清会有所帮助。
标签: oracle