2012-09-27 59 views
10

Tenemos un DBMS Oracle (11g) y la siguiente configuración:Cómo SELECCIONAR en Oracle utilizando un DBLINK ubicado en un esquema diferente?

  • dos esquemas "MYUSER" y "SCHEMA_B"
  • usuario "MYUSER" puede acceder
  • A DB de usuario "MYUSER" "SCHEMA_B "y ha leído permisos en sus mesas
  • Un enlace DB pública 'db_link' ubicado en 'SCHEMA_B'
  • el db_link está trabajando cuando se utiliza el DB de usuario 'SCHEMA_B' directamente

Pregunta: Cuando se inicia sesión como "MYUSER", ¿cuál es la sintaxis correcta para acceder a las tablas mediante el enlace de base de "SCHEMA_B"? ¿Es posible hacerlo en absoluto?

ya he intentado varias constelaciones, todos los cuales no funcionó:

select * from [email protected]"DB_LINK" 
select * from [email protected]"SCHEMA_B"."DB_LINK" 
select * from [email protected]_B."DB_LINK" 
select * from [email protected]_B.DB_LINK 
select * from [email protected]_LINK 
select * from "SCHEMA_B"[email protected]_LINK 

El mensaje de error que recibo es: ORA-02019. 00000 - "descripción de la conexión para la base de datos remota no encontrada"

¡Gracias por cualquier sugerencia!

Respuesta

11

No creo que sea posible compartir un enlace de base de datos entre más de un usuario, pero no todos. Son privados (para un solo usuario) o públicos (para todos los usuarios).

Una buena forma de evitar esto es crear una vista en SCHEMA_B que exponga la tabla a la que desea acceder a través del enlace de la base de datos. Esto también le dará un buen control sobre quién puede seleccionar desde el enlace de la base de datos, ya que puede controlar el acceso a la vista.

hacer como esto:

create database link db_link... as before; 
create view mytable_view as select * from [email protected]_link; 
grant select on mytable_view to myuser; 
+0

Para compartir un enlace de base de datos para todos los usuarios utilizan la directiva 'público'. CREAR ENLACE DE BASE DE DATOS PÚBLICA ... – Rusty1

Cuestiones relacionadas