新建立一个用户为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 的权限啊!
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 的权限啊!
create view权限可以让用户在当前模式下创建视图
用户a在自己的模式创建视图,用的是create view的权限
select * from b.tables使用的是select on b.tables 的权限
还是你试图在别的用户下创建视图却没有create any view的权限?
或是你查询了别的用户的表却没有那个表的查询权限?
你的a用户是在自己的schema里创建对象,不需要any的权限
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> 上面的例子 有谁可以解释下,为什么会出现这样的情况吗?