新建立一个用户为A
create user a identifild by a
grant create view to a;
grant connect ,create session to a ;
grant select on b.tables to a;conn a/a create view test 
as
select * from b.tables ;
//成功这里怎么会成功呢?我没有给用户a,create any view 的权限啊!

解决方案 »

  1.   

    为什么说怎么会成功啊?
    create view权限可以让用户在当前模式下创建视图
    用户a在自己的模式创建视图,用的是create view的权限
    select * from b.tables使用的是select on b.tables 的权限
      

  2.   

    提示权限不足,你是用上面成功的代码一模一样地操作的吗?
    还是你试图在别的用户下创建视图却没有create any view的权限?
    或是你查询了别的用户的表却没有那个表的查询权限?
      

  3.   


    你的a用户是在自己的schema里创建对象,不需要any的权限
      

  4.   


    Connected to Oracle Database 10g Release 10.2.0.4.0 
    Connected as cm_admin
     
    SQL> conn cm_admin/cm_admin
    Not logged on
     
    SQL> conn cm_admin/cm_admin@cm
    Connected to Oracle Database 10g Release 10.2.0.4.0 
    Connected as cm_admin
     
    SQL> select * from session_privs where privilege LIKE '%VIEW%';
     
    PRIVILEGE
    ----------------------------------------
    CREATE VIEW
    CREATE ANY VIEW
    DROP ANY VIEW
    CREATE MATERIALIZED VIEW
    CREATE ANY MATERIALIZED VIEW
    ALTER ANY MATERIALIZED VIEW
    DROP ANY MATERIALIZED VIEW
     
    7 rows selected
     
    SQL> SELECT * FROM CM_DATA.ASAS_DATABASE;
     
                 ITEM_ID       ITEM_SOURCE_ID BEGIN_DATE                                                                END_DATE                                                                         LATEST_FLAG CAPTION                                                                          DESCRIPTION
    -------------------- -------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
     
    SQL> CREATE VIEW Z_TEST AS 
      2  SELECT * FROM CM_DATA.ASAS_DATABASE;
     
    CREATE VIEW Z_TEST AS
    SELECT * FROM CM_DATA.ASAS_DATABASE
     
    ORA-01031: insufficient privileges
     
    SQL> 上面的例子 有谁可以解释下,为什么会出现这样的情况吗?