为其他架构的物化视图调用 DBMS_MVIEW.REFRESH 的特权

问题描述

我目前正在尝试使用其他模式 (MYSCHEMA_DML) 刷新模式 MYSCHEMA 的物化视图。当我尝试打电话时

BEGIN DBMS_MVIEW.REFRESH('MYSCHEMA.MV_MYVIEW');END;

我的输出中有以下错误:

ORA-06512: à "SYS.DBMS_SNAPSHOT_KKXRCA",ligne 3020
ORA-06512: à "SYS.DBMS_SNAPSHOT_KKXRCA",ligne 2432
ORA-06512: à "SYS.DBMS_SNAPSHOT_KKXRCA",ligne 88
ORA-06512: à "SYS.DBMS_SNAPSHOT_KKXRCA",ligne 253
ORA-06512: à "SYS.DBMS_SNAPSHOT_KKXRCA",ligne 2413
ORA-06512: à "SYS.DBMS_SNAPSHOT_KKXRCA",ligne 2976
ORA-06512: à "SYS.DBMS_SNAPSHOT_KKXRCA",ligne 3263
ORA-06512: à "SYS.DBMS_SNAPSHOT_KKXRCA",ligne 3295
ORA-06512: à "SYS.DBMS_SNAPSHOT",ligne 16
ORA-06512: à ligne 1
01031. 00000 -  "insufficient privileges"
*Cause:    An attempt was made to perform a database operation without
           the necessary privileges.
*Action:   Ask your database administrator or designated security
           administrator to grant you the necessary privileges

我的用户对视图具有以下权限:

  • 选择
  • 改变
  • 删除
  • 插入
  • 更新

显然,这还不够:(我做了一些研究,我发现为了刷新而添加的唯一特权似乎是

GRANT ALTER ANY MATERIALIZED VIEW to MYSCHEMA_DML;

这似乎有点过分了。我是否可以授予我的用户以刷新我的视图的任何其他权限?

解决方法

问题已解决,感谢@MarmiteBomber :

我已经在我的第一个模式 MYSCHEMA 中创建了一个过程

create or replace procedure REFRESH_MV_MYVIEW
 as
 begin
 DBMS_MVIEW.REFRESH('MYSCHEMA.MV_MYVIEW');
 end;

然后为 MYSCHEMA2 授予执行权限。

但是。由于物化视图的查询是在另一个模式上进行选择,我必须明确地将 SELECT 授予用户 MYSCHEMA(他只有一个角色的权限)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...