我们在oracle中面临强制视图的问题。修改了视图的某些基础对象以添加新列。发布当我们使用alter view < view name> compile
编译视图时,我们收到错误
警告:视图因编译错误而改变。
在检查错误时,我们得到了:
ORA-00942: table or view does not exist.
但是当我们执行视图选择查询时,它正在执行正常并提取数据。
有人可以帮我解决视图编译问题吗?
答案 0 :(得分:2)
“我们正在执行视图选择查询,它正在执行正常”
因此,基础查询似乎从另一个模式中的表中选择数据,即不是尝试创建视图的模式,或者以某种其他方式引用另一个模式中的对象。
发生的情况是表所有者将其表的权限授予角色,该角色被授予查询架构。通过角色授予的权限允许我们针对授予的对象编写SQL,但不构建编程对象(PL / SQL,视图等)。为此,表所有者需要直接向查询用户授予权限。
这是Oracle安全模型强加的限制。没有其他解决方法。