日期:2014-05-16  浏览次数:20480 次

创建其他用户下的物化视图报错权限不足

建立物化视图的选项很多,比如刷新方式,刷新模式和是否支持查询重写等。由此涉及到的权限也比较多。而如果在建立物化视图的时候由于缺少权限而报错,ORACLE给出的错误信息仅仅是ORA-01031: 权限不足,而没有清楚的给出是由于缺少哪种权限造成的。

打算通过几篇文章综合描述建立普通的物化视图和建立各种选项的物化视图所需的权限,这篇文章主要介绍物化视图所需的最基本的权限。主要会分为三个不同的情况:基表和物化视图都是当前用户下;基表不在当前用户下;建立其他用户下的物化视图。

相关文章:

建立物化视图所需权限(二):http://blog.itpub.net/post/468/50707

建立物化视图所需权限(三):http://blog.itpub.net/post/468/50838

建立物化视图所需权限(四):http://blog.itpub.net/post/468/51163

?

首先,建立一个新的测试用户,只给CREATE SESSION(保证用户可以登陆到Oracle)和UNLIMITED TABLESPACE(保证用户有足够的空间)权限进行测试。

SQL> CONN YANGTK/YANGTK@TEST4已连接。
SQL> CREATE USER TEST IDENTIFIED BY TEST DEFAULT TABLESPACE YANGTK;

用户已创建

SQL> GRANT CREATE SESSION TO TEST;

授权成功。

SQL> GRANT UNLIMITED TABLESPACE TO TEST;

授权成功。

由于需要建立物化视图的基表,因此先给TEST用户CREATE TABLE的权限。

SQL> GRANT CREATE TABLE TO TEST;

授权成功。

SQL> CONN TEST/TEST@TEST4已连接。
SQL> CREATE TABLE T (ID NUMBER PRIMARY KEY, NAME VARCHAR2(30));

表已创建。

SQL> CREATE MATERIALIZED VIEW MV_T AS SELECT * FROM T;
CREATE MATERIALIZED VIEW MV_T AS SELECT * FROM T
*
ERROR
位于第 1 :
ORA-01031:
权限不足


SQL> CONN YANGTK/YANGTK@TEST4
已连接。
SQL> GRANT CREATE MATERIALIZED VIEW TO TEST;

授权成功。

SQL> CONN TEST/TEST@TEST4已连接。
SQL> CREATE MATERIALIZED VIEW MV_T AS SELECT * FROM T;

实体化视图已创建。

建立物化视图必然需要CREATE MATERIALIZED VIEW权限(在8i及以前版本中,权限的名称是CREATE SNAPSHOT9iSNAPSHOTMATERIALIZED VIEW是同义词)。在上面的例子中,通过授予了CREATE MATERIALIZED VIEW权限,已经建立了最简单的物化视图。但是,是不是仅仅包含CREATE MATERIALIZED VIEW权限就足够了?我们注意到,在开始的时候为了建立基表,还给了CREATE TABLE权限,下面回收这个权限,然后重建物化视图:

SQL> CONN YANGTK/YANGTK@TEST4