Oracle:跨模式创建视图?
Posted
技术标签:
【中文标题】Oracle:跨模式创建视图?【英文标题】:Oracle: Creating view across schemas? 【发布时间】:2011-06-18 19:56:49 【问题描述】:我正在尝试创建一个视图,并将问题归结为无法创建引用来自不同架构的表的视图。
例如,我可以这样做:
select count(*) from otherschema.othertable;
我可以做到:
create view foo as select count(*) as bar from oneofmytables;
但如果我尝试:
create view foo as select count(*) as bar from otherschema.othertable;
我收到“权限不足”错误。我还需要哪些额外权限?
【问题讨论】:
【参考方案1】:您是否直接授予其他用户的表?还是通过角色?您需要直接授予权限才能创建引用另一个表的对象(视图、过程等)。作为快速测试,在 SQL*Plus 中
SQL> set role none;
SQL> select count(*) from otherschema.othertable;
如果失败,那么问题是您已通过角色获得了对表的权限。
【讨论】:
两个很好的正确答案,但我选择了这个,因为它很容易让我验证问题。谢谢!【参考方案2】:我猜你已经通过role
而不是直接通过grant
获得了otherschema.othertable
上的选择权。
如果是这种情况,您应该使用otheruser
连接,然后使用grant select on othertable to <your-schema>
。
【讨论】:
如果希望从第三个模式中选择视图,请将 WITH GRANT OPTION 添加到 GRANT。【参考方案3】:我相信您的 DBA 需要授予您权限
创建任何视图
特权。根据您站点的安全限制,他们可能会或不允许这样做。我一般不会
【讨论】:
以上是关于Oracle:跨模式创建视图?的主要内容,如果未能解决你的问题,请参考以下文章