暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 在具有Grant选项的视图上授予选择不起作用

askTom 2017-11-10
266

问题描述

嗨,

我有Schema_1,它拥有table_1,table_2,table_3。
Schema_1使用table_1创建View_1,
Schema_1使用表2创建View_2,
Schema_1使用table_3创建View_3。

Schema_2使用View_1、View_2和View_3创建View_4。

然后,当SYSDBA向Schema_3提供以下赠款时

GRANT SELECT ON Schema_2.View_4 TO Schema_3 WITH GRANT OPTION;
GRANT SELECT ON Schema_1.View_1 TO Schema_3 WITH GRANT OPTION; 
GRANT SELECT ON Schema_1.View_2 TO Schema_3 WITH GRANT OPTION; 
GRANT SELECT ON Schema_1.View_3 TO Schema_3 WITH GRANT OPTION; 
GRANT SELECT ON Schema_1.table_1 TO Schema_3;
GRANT SELECT ON Schema_1.table_2 TO Schema_3; 
GRANT SELECT ON Schema_1.table_3 TO Schema_3;


最后使用Schema_3做以下查询:

Select * from Schema_2.View_4;

ERROR at line 1:
ORA-01031: insufficient privileges



你有什么线索吗?

谢谢。

专家解答

你确定你已经在schema 2中创建了视图吗?这也需要对模式1中的视图/表的权限才能工作...

grant create session, create table, create view, unlimited tablespace to s1 identified by s1;
grant create session, create view to s2 identified by s2;
grant create session to s3 identified by s3;

create table s1.t1 (
  x int
);
create table s1.t2 (
  x int
);
create table s1.t3 (
  x int
);
create or replace view s1.vw1 as 
  select * from s1.t1;
create or replace view s1.vw2 as 
  select * from s1.t2;
create or replace view s1.vw3 as 
  select * from s1.t3;
  
create or replace view s2.vw4 as 
  select 'x' dummy from s1.vw1, s1.vw2, s1.vw3;

ORA-00942: table or view does not exist

select * from s2.vw4;

SQL Error: ORA-00942: table or view does not exist

GRANT SELECT ON S1.t1 TO S2;
GRANT SELECT ON S1.t2 TO S2; 
GRANT SELECT ON S1.t3 TO S2;

GRANT SELECT ON S1.Vw1 TO S2 WITH GRANT OPTION; 
GRANT SELECT ON S1.Vw2 TO S2 WITH GRANT OPTION; 
GRANT SELECT ON S1.Vw3 TO S2 WITH GRANT OPTION; 

create or replace view s2.vw4 as 
  select 'x' dummy from s1.vw1, s1.vw2, s1.vw3;

select * from s2.vw4;

no rows selected
  
GRANT SELECT ON S2.Vw4 TO S3 WITH GRANT OPTION;
GRANT SELECT ON S1.Vw1 TO S3 WITH GRANT OPTION; 
GRANT SELECT ON S1.Vw2 TO S3 WITH GRANT OPTION; 
GRANT SELECT ON S1.Vw3 TO S3 WITH GRANT OPTION; 
GRANT SELECT ON S1.t1 TO S3;
GRANT SELECT ON S1.t2 TO S3; 
GRANT SELECT ON S1.t3 TO S3;

conn s3/s3

select * from s2.vw4;

no rows selected

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论