Acceso a Sinonimo desde procedimiento PL/SQL
No puedo acceder a a un sinonimo desde un procedimiento PL/SQL pero cuando lanzo la misma select como consulta fuera del procedimiento si funciona. ¿Porq?
Un saludo
Un saludo
Muchas veces necesitas tener los permisos los permisos sobre el objeto de manera directa.
Por ejemplo si quieres utilizar una vista del SYS dentro de un procedimiento, tiene que terner permisos directos de select sobre la vista del SYS(no importa que tengas el role de DBA y que por eso si te funcione en SQL Plus).
Por ejemplo si quieres utilizar una vista del SYS dentro de un procedimiento, tiene que terner permisos directos de select sobre la vista del SYS(no importa que tengas el role de DBA y que por eso si te funcione en SQL Plus).
Segun lo que me indicas:
1) He creado permiso de select en la tabla de la BBDD remota.
2) He intentado crear permiso de select para el sinonimo (que es publico) en la BBDD origen pero me dice que la select que ejecuto no esta permitada en una BBDD remota.
GRANT SELECT
ON "PUBLIC"."TABLA" TO "BBDD" WITH GRANT OPTION
Que permiso tengo que dar para poder ejecutar la select?
Un saludo
Pd: Gracias por contestar Rodolfo.
1) He creado permiso de select en la tabla de la BBDD remota.
2) He intentado crear permiso de select para el sinonimo (que es publico) en la BBDD origen pero me dice que la select que ejecuto no esta permitada en una BBDD remota.
GRANT SELECT
ON "PUBLIC"."TABLA" TO "BBDD" WITH GRANT OPTION
Que permiso tengo que dar para poder ejecutar la select?
Un saludo
Pd: Gracias por contestar Rodolfo.
A ver si me explico.
Un DB_LINK ya sea público o privado ataca a un usuario de la base de datos remota, luego alguien que utiliza ese DB_LINK, hereda los permisos que tiene el usuario remoto.
Para utilizar ese DB_LINK hay dos maneras :
1 ) Directamente : SELECT * FROM PROPIETARIO_DE_OBJETO.NOMBRE_DE_TABLA@NOMBRE_DEL_DB_LINK
o
2 ) Via sinonimo : SELECT * FROM NOMBRE_DE_SINONIMO. Para crear el sinonimo ( Por ejemplo privado ), serÃa asà : CREATE SYNONYM USUARIO.NOMBRE_DE_SINONIMO FOR USUARIO_REMOTO.NOMBRE_DE_OBJETO@NOMBRE_DEL_DB_LINK.
Cualquiera de estas dos maneras tiene que funcionar y funciona. Hay una excepción que no se sabe muy bien porque y es con los paquetes de base de datos remotos y es que el sinonimo en la base de datos "origen" en algunos casos ( no en todos, es una cosa rara porque lo detectas cuando te peta ) tiene que apuntar DIRECTAMENTE al usuario remoto DUEÑO del paquete, no a un usuario remoto que tenga un sinonimo que apunte a ese paquete.
No se si me explicado de manera que lo entiendas
Un DB_LINK ya sea público o privado ataca a un usuario de la base de datos remota, luego alguien que utiliza ese DB_LINK, hereda los permisos que tiene el usuario remoto.
Para utilizar ese DB_LINK hay dos maneras :
1 ) Directamente : SELECT * FROM PROPIETARIO_DE_OBJETO.NOMBRE_DE_TABLA@NOMBRE_DEL_DB_LINK
o
2 ) Via sinonimo : SELECT * FROM NOMBRE_DE_SINONIMO. Para crear el sinonimo ( Por ejemplo privado ), serÃa asà : CREATE SYNONYM USUARIO.NOMBRE_DE_SINONIMO FOR USUARIO_REMOTO.NOMBRE_DE_OBJETO@NOMBRE_DEL_DB_LINK.
Cualquiera de estas dos maneras tiene que funcionar y funciona. Hay una excepción que no se sabe muy bien porque y es con los paquetes de base de datos remotos y es que el sinonimo en la base de datos "origen" en algunos casos ( no en todos, es una cosa rara porque lo detectas cuando te peta ) tiene que apuntar DIRECTAMENTE al usuario remoto DUEÑO del paquete, no a un usuario remoto que tenga un sinonimo que apunte a ese paquete.
No se si me explicado de manera que lo entiendas
En este caso el procediminto no es remoto. El procedimiento esta en la BBDD origen q hace la select al sinonimo (q hace referencia a una tabla en una BBDD remota).
Dando permiso de select en la tabla dela BBDD remota me ha permitido compilar el procedimiento, lo que no puedo es hacer un DESC de la tabla desde el procedimiento (tampoco me importa demasiado).
Tendria que probar si realmente recupera datos o no porque es un poco mosqueante que no pueda ver la descripción de los campos de la tabla.
Un saludo
Dando permiso de select en la tabla dela BBDD remota me ha permitido compilar el procedimiento, lo que no puedo es hacer un DESC de la tabla desde el procedimiento (tampoco me importa demasiado).
Tendria que probar si realmente recupera datos o no porque es un poco mosqueante que no pueda ver la descripción de los campos de la tabla.
Un saludo
Es que desde pl-sql no se puede hacer una desc de ninguna tabla.
Hazlo desde cualquier editor de sql, el SQL-PLUS por ejemplo
Hazlo desde cualquier editor de sql, el SQL-PLUS por ejemplo
jc3000 el error es por tema de roles y grants concedidos directa e indirectamente además a partir de la 9i (este último dato no estoy seguro, no se si en 8i ya pasaba, creo que no, y ahora no lo puedo probar)........... échale un vistazo