Acceso a Sinonimo desde procedimiento PL/SQL

Raul
19 de Abril del 2005
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

Rodolfo Reyes
19 de Abril del 2005
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).


Raul
19 de Abril del 2005
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.

jc3000
19 de Abril del 2005
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 [email protected]_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 [email protected]_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

Raul
19 de Abril del 2005
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

jc3000
19 de Abril del 2005
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

alopez
19 de Abril del 2005
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

SKUNK
19 de Abril del 2005
si deberia dejarte,prueba a poner nombre_usuario.nombre_tabla, de todos modos el problema puede ser que lo no tengas permisos para manipular la tabla pero si para consultarla.Espero ke te haya servido de ayuda