Oracle APEX应用跨Schema访问:视图应创建在A还是B Schema中?
Oracle APEX跨模式数据访问:视图创建位置分析
视图是否必须与数据所属模式同位置?
不需要。Oracle支持在任意模式中创建引用其他模式对象的视图,前提是创建视图的用户拥有对目标模式中对象的SELECT权限(比如模式A要创建引用B表的视图,需要先让B给A授予对应表的SELECT权限,或者通过角色授予)。
在模式A还是B创建视图更合理?
分两种场景讨论:
优先考虑在模式B中创建视图的情况
- 权限管控更安全:只需要给模式A授予对B中视图的
SELECT权限,无需直接开放B的底层表权限,能限制A只能访问视图定义的特定数据,避免误操作或越权访问。 - 逻辑复用与集中维护:如果还有其他应用需要访问B中的这部分数据,在B中创建的视图可以直接复用,不用每个应用都重复定义。后续B中表结构变更时,只需要调整B内的视图,所有依赖该视图的应用都会自动生效,减少维护成本。
- 数据源逻辑统一:视图作为数据访问的入口,和底层表放在同一模式,能让数据源的访问逻辑更集中,便于B模式的管理员统一管理数据对外暴露的方式。
适合在模式A中创建视图的情况
- 应用专属逻辑:如果这个视图是A应用独有的,只服务于该APEX应用的特定业务需求,放在A模式下能让应用的所有对象(表、视图、过程等)集中管理,不需要依赖B模式的管理员配合修改视图。
- 简化应用配置:APEX应用运行在A模式下,直接使用本模式的视图,不需要在SQL中频繁写
B.视图名的前缀,代码更简洁。
总结
没有绝对的最优解,核心看你的权限策略、数据复用需求和维护习惯。多数企业场景下,优先选择在数据所属的模式B中创建视图,能更好地保障数据安全和维护效率。
内容的提问来源于stack exchange,提问作者Clayton Kuhn
相关产品推荐
相关产品推荐

