Asunto: Error ORA-01720: la opción Otorgar no existe en Oracle
Tengo una base de datos Oracle sobre Window Server 2008 x64, es Oracle 10g x64. Tengo la siguiente casuística:
1. Por un lado un usuario que es propietario de estas tablas: FACTURAS, ALBARANES, CLIENTES, en su esquema FACTURACION (el nombre del usuario también es FACTURACION).
2. Por otro lado tengo un segundo usuario que tiene su propio esquema, llamado FACWEB y al que le he concedido permisos para que vea las tablas del usuario anterior, lo he hecho con:
Código:
grant select on "FACTURACION"."FACTURAS" to "FACWEB"
Este usuario FACWEB tiene en su esquema una vista llamada VTFACTURAS que he creado con:
Código:
create view VTFACTURAS as
select * from facturacion.facturas
Funciona perfectamente, la vista accede a la tabla FACTURAS del otro usuario FACTURACION.
3. Por último tengo un tercer usuario FACWEBLECTURA que debe ser de consulta en el esquema FACWEB (esquema del usuario anterior), este usuario sólo debe tener permisos de consulta (SELECT) para la vista "FACTURAS_CONSULTA". Si intento hacer un:
Código:
grant select on "FACWEB"."VTFACTURAS" TO "FACWEBLECTURA"
Me da el siguiente error:
Failed to commit: ORA-01720: la opción Otorgar no existe para 'FACTURACION.FACTURAS'
¿A qué puede ser debido? lo que quiero es que el usuario FACWEBLECTURA pueda ejecutar la vista VTFACTURAS del esquema FACWEB.
Nota: ya he probado a darle permisos de SELECT al tercer usuario FACWEBLECTURA para la tabla FACTURAS del usuario FACTURACION. Que es la tabla que utiliza la vista, así tampoco funciona y da el mismo error ORA-01720.
Publicado:
Jue Sep 27, 2012 5:00 am
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Error ORA-01720: la opción Otorgar no existe en Oracle
Anuncios
varios escribió:
Tengo una base de datos Oracle sobre Window Server 2008 x64, es Oracle 10g x64. Tengo la siguiente casuística:
1. Por un lado un usuario que es propietario de estas tablas: FACTURAS, ALBARANES, CLIENTES, en su esquema FACTURACION (el nombre del usuario también es FACTURACION).
2. Por otro lado tengo un segundo usuario que tiene su propio esquema, llamado FACWEB y al que le he concedido permisos para que vea las tablas del usuario anterior, lo he hecho con:
Código:
grant select on "FACTURACION"."FACTURAS" to "FACWEB"
Este usuario FACWEB tiene en su esquema una vista llamada VTFACTURAS que he creado con:
Código:
create view VTFACTURAS as
select * from facturacion.facturas
Funciona perfectamente, la vista accede a la tabla FACTURAS del otro usuario FACTURACION.
3. Por último tengo un tercer usuario FACWEBLECTURA que debe ser de consulta en el esquema FACWEB (esquema del usuario anterior), este usuario sólo debe tener permisos de consulta (SELECT) para la vista "FACTURAS_CONSULTA". Si intento hacer un:
Código:
grant select on "FACWEB"."VTFACTURAS" TO "FACWEBLECTURA"
Me da el siguiente error:
Failed to commit: ORA-01720: la opción Otorgar no existe para 'FACTURACION.FACTURAS'
¿A qué puede ser debido? lo que quiero es que el usuario FACWEBLECTURA pueda ejecutar la vista VTFACTURAS del esquema FACWEB.
Nota: ya he probado a darle permisos de SELECT al tercer usuario FACWEBLECTURA para la tabla FACTURAS del usuario FACTURACION. Que es la tabla que utiliza la vista, así tampoco funciona y da el mismo error ORA-01720.
Este error es debido a que estás intentando otorgar privilegios a un usuario sobre una vista que hace referencia a objetos de otro usuario. Efectivamente, como comentas, aunque al tercer usuario le des permisos de SELECT (o lo que quieras) sobre la tabla del primer usuario al que hace referencia la vista del segundo seguirá sin funcionar.
Para solucionar el error ORA-01720 Grant Option Does Not Exist (La opción otorgar no existe) debes otorgarle al segundo usuario FACWEB el privilegio de acceso a la tabla FACTURAS del primer usuario FACTURACION con la opción WITH GRANT OPTION, sería algo así:
Código:
grant select on "FACTURACION"."FACTURAS" to "FACWEB" with grant option;
La opción WITH GRANT OPTION proporciona al usuario FACWEB (segundo usuario) la posibilidad de dar a otros usuarios cualquier privilegio (siempre y cuando él lo tenga). Por ejemplo, en lo que nos comentas, el usuario FACWEB podrá otorgar el privilegio de SELECT al usuario FACWEBLECTURA (tercer usuario) a la tabla FACTURAS del usuario FACTURACION a través de la vista VTFACTURAS del usuario FACWEB.
Publicado:
Jue Sep 27, 2012 5:22 am
varios Magnífico usuario
Registrado: Oct 10, 2006 Mensajes: 2092
Asunto: [RESUELTO]: Error ORA-01720: la opción Otorgar no existe
Anuncios
alonsojpd escribió:
Este error es debido a que estás intentando otorgar privilegios a un usuario sobre una vista que hace referencia a objetos de otro usuario. Efectivamente, como comentas, aunque al tercer usuario le des permisos de SELECT (o lo que quieras) sobre la tabla del primer usuario al que hace referencia la vista del segundo seguirá sin funcionar.
Para solucionar el error ORA-01720 Grant Option Does Not Exist (La opción otorgar no existe) debes otorgarle al segundo usuario FACWEB el privilegio de acceso a la tabla FACTURAS del primer usuario FACTURACION con la opción WITH GRANT OPTION, sería algo así:
Código:
grant select on "FACTURACION"."FACTURAS" to "FACWEB" with grant option;
La opción WITH GRANT OPTION proporciona al usuario FACWEB (segundo usuario) la posibilidad de dar a otros usuarios cualquier privilegio (siempre y cuando él lo tenga). Por ejemplo, en lo que nos comentas, el usuario FACWEB podrá otorgar el privilegio de SELECT al usuario FACWEBLECTURA (tercer usuario) a la tabla FACTURAS del usuario FACTURACION a través de la vista VTFACTURAS del usuario FACWEB.
Muchísimas gracias, he usado el WITH GRANT OPTION y ya se ha resuelto el ORA-01720, ahora me funciona perfectamente.
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A