oracle创建物化视图的权限,建立物化视图的权限

本文详细介绍了在Oracle数据库中创建物化视图时所需的权限,包括快速刷新、完全刷新以及支持查询重写的物化视图。内容涵盖不同场景下的权限需求,如基表在当前用户下、不在当前用户下以及在其他用户下创建物化视图的情况,并提供了相应的授权解决方案。
摘要由CSDN通过智能技术生成

首先,重新构造测试环境:

SQL> CONN YANGTK/YANGTK@TEST4

已连接。

SQL> DROP USER TEST CASCADE;

用户已丢弃

SQL> DROP USER MVIEW_OWNER CASCADE;

用户已丢弃

SQL> CREATE USER TEST IDENTIFIED BY TEST DEFAULT TABLESPACE YANGTK;

用户已创建

SQL> GRANT CREATE SESSION TO TEST;

授权成功。

SQL> GRANT UNLIMITED TABLESPACE TO TEST;

授权成功。

SQL> GRANT CREATE TABLE TO TEST;

授权成功。

SQL> GRANT CREATE MATERIALIZED VIEW TO TEST;

授权成功。

建立快速刷新的物化视图也是建立物化视图,必然需要建立物化视图的最基本的权限。因此,这里只讨论需要快速刷新的物化视图的特点。

第一种情况:基表在当前用户下。这种情况建立快速刷新的物化视图不需要额外的权限。如果一个物化视图需要快速刷新,则比较建立物化视图日志,而物化视图的建立需要CREATE TABLE权限。不过这个权限已经包含在建立物化视图所需的权限中了。因此,上面给了CREATE TABLE和CREATE MATERIALIZED VIEW两个权限,就可以建立快速刷新的物化视图了。

SQL> CONN TEST/TEST@TEST4

已连接。

SQL> CREATE TABLE T (ID NUMBER PRIMARY KEY, NAME VARCHAR2(30));

表已创建。

SQL> CREATE MATERIALIZED VIEW LOG ON T;

实体化视图日志已创建。

SQL> CREATE MATERIALIZED VIEW MV_T REFRESH FAST AS SELECT * FROM T;

实体化视图已创建。

下面讨论第二种情况,基表不在当前用户中:

SQL> CONN YANGTK/YANGTK@TEST4

已连接。

SQL> DROP TABLE T;

表已丢弃。

SQL> CREATE TABLE T (ID NUMBER PRIMARY KEY, NAME VARCHAR2(30));

表已创建。

SQL> CREATE MATERIALIZED VIEW LOG ON T;

实体化视图日志已创建。

SQL> GRANT SELECT ON T TO TEST;

授权成功。

SQL> CONN TEST/TEST@TEST4

已连接。

SQL> CREATE MATERIALIZED VIEW MV_T1 REFRESH FAST AS SELECT * FROM YANGTK.T;

CREATE MATERIALIZED VIEW MV_T1 REFRESH FAST AS SELECT * FROM YANGTK.T

*

ERROR 位于第 1 行:

ORA-12018: 在创建"TEST"."MV_T1" 的代码时出现以下错误

ORA-00942: 表或视图不存在

SQL> CREATE MATERIALIZED VIEW MV_T1 AS SELECT * FROM YANGTK.T;

实体化视图已创建。

现在已经可以看到快速刷新的物化视图和完全刷新的物化视图的区别了。对于完全刷新的物化视图,权限已经足够了,但是对于快速刷新的物化视图来说还差一点。

快速刷新的物化视图和完全刷新的物化视图的主要差别在于,是否需要访问物化视图日志,将用户基表的物化视图日志的查询权限授予用户:

SQL> CONN YANGTK/YANGTK@TEST4

已连接。

SQL> GRANT SELECT ON MLOG$_T TO TEST;

授权成功。

SQL> CONN TEST/TEST@TEST4

已连接。

SQL> CREATE MATERIALIZED VIEW MV_T2 REFRESH FAST AS SELECT * FROM YANGTK.T;

实体化视图已创建。

第三种情况,这种情况和上面的第二种情况差不多࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值