Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/11/2007, 08:22
Avatar de matanga
matanga
 
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años, 1 mes
Puntos: 85
Re: ¿Privilegios necesarios para insert en una tabla con propietario diferente?

Hola,

Mira el follon que se arma ahora, para ver si entiendo bien el escenario, donde estan los objetos y quien ejecuta que,

Usuario1.Tabla_destino
Usuario1.Procedimiento_de_insert_sobre_Tabla_desti no

Usuario2.Ejecuta_el_Procedimiento_de_insert_sobre_ Tabla_destino

Si este es el escenario, solo necesitas dar permisos de ejecucion a Usuario2 sobre el Procedimiento_de_insert_sobre_Tabla_destino.

Ahora, si

Usuario1.Tabla_destino

Usuario2.Procedimiento_de_insert_sobre_Tabla_desti no
Usuario2.Ejecuta_el_Procedimiento_de_insert_sobre_ Tabla_destino

Y, si el Procedimiento_de_insert_sobre_Tabla_destino no esta compilado, es decir en estado invalido, entoces pueden pasar dos cosas:

1. El Usuario2 no tiene permisos de insert sobre Tabla_destino.
2. El Usuario2 tiene permisos de insert sobre Tabla_destino, pero lo tiene a treves de un ROL, en este caso no va a funcionar porque Oracle valida los permisos en tiempo de compilacion y no en tiempo de ejecucion, y como los ROLES pueden cambiar, no da al procedimiento como valido y no lo compila.

Por ultimo, si el procedimiento esta compilado, es decir en estado valido, entoces pueden pasar dos cosas:

1. El Usuario2 no tiene permisos de insert sobre Tabla_destino, y el sql que inserta los datos esta dentro de un SQL dinamico y por eso compila, pero cuando lo ejecutes debe levantar una exception por privilegios insuficientes.
2. El Usuario2 tiene permisos de insert sobre Tabla_destino, pero no inserta nada por alguna razon de logica en el codigo del procedimiento :)

Lo mejor sera postear quien es propietarios de que, quien ejecuta y ver el codigo del procedimiento tambien puede ayudar.

Saludos