Recientemente me ha llegado a mi ‘mail’ una duda sobre el mismo error (ORA-01031: privilegios insuficientes) al crear una vista materializada en otro esquema.
Tras remitirle aquí, el remitente me decía que persistía el error. Al ver el DDL de la creación de la vista materializada caí en la cuenta de que el problema era otro:era una vista materializada ‘REFRESH ON COMMIT’. Pues bien, para este tipo de vistas se necesita un privilegio específico:
ON COMMIT REFRESH create a refresh-on-commit materialized view on any table in the database
Y lo vemos aquí:
CARLOS@XE.localhost> CREATE MATERIALIZED VIEW MY_MV
2 NOCACHE
3 LOGGING
4 NOPARALLEL
5 BUILD IMMEDIATE
6 REFRESH ON COMMIT
7 AS
8 SELECT * FROM OTHERUSER.THE_TABLE;
SELECT * FROM OTHERUSER.THE_TABLE
*
ERROR en línea 8:
ORA-01031: privilegios insuficientes
CARLOS@XE.localhost> CREATE MATERIALIZED VIEW MY_MV
2 NOCACHE
3 LOGGING
4 NOPARALLEL
5 BUILD IMMEDIATE
6 -- REFRESH ON COMMIT
7 AS
8 SELECT * FROM OTHERUSER.THE_TABLE;
Vista materializada creada.
CARLOS@XE.localhost> DROP MATERIALIZED VIEW MY_MV;
Vista materializada borrada.
CARLOS@XE.localhost> GRANT ON COMMIT REFRESH TO CARLOS;
Concesión terminada correctamente.
CARLOS@XE.localhost> CREATE MATERIALIZED VIEW MY_MV
2 NOCACHE
3 LOGGING
4 NOPARALLEL
5 BUILD IMMEDIATE
6 REFRESH ON COMMIT
7 AS
8 SELECT * FROM OTHERUSER.THE_TABLE;
Vista materializada creada.
CARLOS@XE.localhost>
Saludos.
Carlos.
19 Agosto 2009 a las 12:36 |
Hola Carlos,
Me alegra ver que escribes de nuevo sobre Oracle
Me pregunto cuanto tiempo dedicó la persona con la duda a buscar su solución. Si usas Google:
http://www.google.es/search?q=create+materialized+view+another+user
y seleccionas el primer link (que lleva a la documentación oficial de Oracle), no hay más que buscar dentro de la página “another user” y se ve éste y otros privilegios necesarios para las distintas casuísticas que pueden darse.
Por lo que he visto últimamente en foros, se opta cada vez más por preguntar antes de buscar.
En cualquier caso, gracias por el apunte.