调用 DBMS_MVIEW.REFRESH 获取其他模式的物化视图的权限
Privilege to call DBMS_MVIEW.REFRESH for a materialized view of an other schema
我目前正在尝试使用其他模式 (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
我的用户对该视图具有以下权限:
- SELECT
- 改变
- 删除
- 插入
- 更新
显然,这还不够 :( 我做了一些研究,我发现为进行刷新而添加的唯一权限似乎是
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 授予 SELECT(他只有一个角色的权限)
我目前正在尝试使用其他模式 (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
我的用户对该视图具有以下权限:
- SELECT
- 改变
- 删除
- 插入
- 更新
显然,这还不够 :( 我做了一些研究,我发现为进行刷新而添加的唯一权限似乎是
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 授予 SELECT(他只有一个角色的权限)