Oracle数据库视图与权限问题


前几天客户遇上这样一个问题,某个用户A将视图的SELECT给予另一个用户B,但是用户B查询这个视图时,仍然报错:ORA-01031: 权限不足。这是怎么一回事呢?下面来模拟一下这个过程:

  有三个用户test1,test2,test3, 三个用户都具有DBA色色权限。

  用TEST1用户创建一个表T1,并将其查询权限授予TEST2: 

SQL> create table t1 as select * from all_objects;

  表已创建。

  SQL
> grant select on t1 to test2;

  授权成功。

  SQL
> create table t1 as select * from all_objects;

  表已创建。

  SQL
> grant select on t1 to test2;

  授权成功。

  用TEST2用户创建一个视图,视图的基表是TEST1.T1,并将查询权限授予TEST3:

 SQL> create view v_t1 as select * from test1.t1;

  视图已建立。

  SQL
> grant select on v_t1 to test3;

  授权成功。

  SQL
> create view v_t1 as select * from test1.t1;

  视图已建立。

  SQL
> grant select on v_t1 to test3;

  授权成功。

  TEST3用户查询视图TEST2.V_T1:

SQL> select * from test2.v_t1 where rownum<1;

  
select * from test2.v_t1 where rownum<1

  
*

  ERROR 位于第
1 行:

  ORA
-01031: 权限不足

  SQL
> select * from test2.v_t1 where rownum<1;

  
select * from test2.v_t1 where rownum<1

  
*

  ERROR 位于第
1 行:

  ORA
-01031: 权限不足

  可以看到报了权限不足的错误,就算这里TEST3用户有DBA权限。

  这到底是怎么回事呢?

  • 1
  • 2
  • 下一页

相关内容