2012-02-21 14 views
5

Tengo 2 conexiones con tablas diferentes en sqldeveloper.consulta de diferentes conexiones de Oracle en sqldeveloper

digamos:

ConnectionA con tablas: A, B, C ConnectionB con mesas: D, E, F

Ahora quiero tener una consulta que tiene el siguiente aspecto:

seleccione aa.name, dd.id de A aa, D dd;

¿Cómo puedo hacer esto?

+2

Las tablas no son específicas de la conexión. ¿Quizás te refieres a esquemas? –

+0

En sqldeveloper puede crear conexiones que tengan sus propias tablas – user999379

+4

@ user999379 - Las conexiones no tienen tablas. Las conexiones le permiten iniciar sesión en una base de datos particular como un usuario particular que posee un conjunto particular de objetos (un esquema). La conexión no posee ningún objeto. –

Respuesta

9

Si desea consultar objetos en dos bases de datos diferentes utilizando una sola instrucción SQL, deberá crear un enlace de base de datos entre las dos bases de datos. Un enlace de base de datos es un objeto que reside en la base de datos y es independiente de la herramienta de consulta. En la base de datos A, por ejemplo, se podría crear el enlace de la base de datos

CREATE DATABASE LINK to_b 
    CONNECT TO username IDENTIFIED BY password 
    USING tns_alias_on_a_pointing_to_b 

Y luego, cuando se conecta a A, que podría hacer algo como

SELECT aa.name, dd.id 
    FROM a aa, 
     [email protected]_b dd 
WHERE aa.some_key = dd.some_key 
+0

me sale este error: Error de SQL: ORA-12154: TNS: no se pudo resolver el identificador de conexión especificado – user999379

+0

@ user999379 - ¿Obtiene este error, supongo, cuando ejecuta la instrucción 'SELECT'? Cuando crea el enlace de la base de datos, el alias TNS necesita existir en la base de datos A y necesita apuntar a la base de datos B. El alias TNS en A que apunta a B puede ser diferente al alias TNS definido en su sistema local (particularmente si usando nombres locales con un archivo local tnsnames.ora). –

+1

Tenemos una base de datos "en vivo" y una base de datos "demo" que se ejecuta en el mismo servidor Oracle DB. Ambos están configurados en el mismo archivo tnsnames.ora. Así que para mí fue tan simple como ejecutar esta declaración bajo mi conexión en vivo: 'CREATE DATABASE LINK demodb USING 'demodb';' donde demodb es el SID de nuestra base de datos de demostración en tnsnames.ora. Ahora puedo consultar las tablas de la base de datos de demostración desde mi conexión de db en vivo con solo agregar @demodb al final del nombre de la tabla. – Baodad

Cuestiones relacionadas