我正在尝试创建一个视图,并将问题提炼到无法创建引用来自不同模式的表的视图。
例如,我可以这样做:
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;
我收到“权限不足”错误。我需要什么额外的特权?
答案 0 :(得分:8)
您是否直接授予其他用户的表格?还是通过一个角色?您需要直接授予权限才能创建引用其他表的对象(视图,过程等)。作为快速测试,在SQL * Plus中
SQL> set role none;
SQL> select count(*) from otherschema.othertable;
如果失败,那么问题是您已通过角色授予了对表的权限。
答案 1 :(得分:5)
我猜你已经otherschema.othertable
通过role
而不是通过直接grant
向右选择。
如果是这种情况,您应该以{{1}}身份连接,然后执行otheruser
。
答案 2 :(得分:1)
我相信您的DBA需要授予您
创建任何视图
特权。根据您网站的安全限制,他们可能会或不会允许这样做。我通常不会