数据库中分别存在三个数据库用户:user1,user2
其中user1,user2的角色分别DBA
数据库表tables1属于user1
数据库表tables2属于user2
使用user1,user2也分别创建了view1,view2;view1,view2关联的基表分别是table1,table2table1,table2的SELECT权限都是grant select on tablename to username交叉赋与了user2,user1目前想用user1要创建一个视图view3,view3的基表是view1和view2
直接使用select语句(以下简称SQL文1)可以检索出数据,比如
select * from view1,view2
where ....但是将以上检索结果创建设置为视图时,系统提示权限不足CREATE OR REPLACE VIEW VIEW3 AS
select * from view1,view2
where ....
于是我将view2的检索权限显式的分配与user1:grant select on view2 to user1
结果SQL文1都不能执行了,还请各位指教。
谢谢

解决方案 »

  1.   

    grant create any view to user1
      

  2.   

    grant select on tablename to username with grant option
      

  3.   

    grant create any view to user1
    .....
      

  4.   

    以上方法均测试过
    显式的分配权限后,USER1居然不能检索VIEW2了
      

  5.   

    用强制试图试试  force view
      

  6.   

    用强制试图试试  force view
      

  7.   

    对于你的user1来说有两个方法可以解决:
    第一个方案:创建同义词
       create public synonym view2 for user2.view2;
       接着:
       CREATE OR REPLACE VIEW VIEW3 AS
       select * from view1,view2
       where ....或者是第二个方案
        CREATE OR REPLACE VIEW VIEW3 AS
       select * from view1,user2.view2
       where ....