2012-02-21 21 views
5

Ho 2 connessioni con diverse tabelle in sqldeveloper.query da diverse connessioni oracle in sqldeveloper

diciamo:

ConnectionA con tavoli: A, B, C ConnectionB con tavoli: D, E, F

Ora voglio avere una query che assomiglia a questo:

selezionare aa.name, dd.id da A aa, D dd;

Come posso fare questo?

+2

Le tabelle non sono specifiche del collegamento. Forse vuoi dire schemi? –

+0

In sqldeveloper è possibile creare connessioni che hanno le proprie tabelle – user999379

+4

@ user999379 - Le connessioni non hanno tabelle. Le connessioni consentono di accedere a un determinato database come un particolare utente che possiede un particolare insieme di oggetti (uno schema). La connessione non possiede oggetti. –

risposta

9

Se si desidera interrogare oggetti in due database diversi utilizzando un'unica istruzione SQL, è necessario creare un collegamento al database tra i due database. Un collegamento al database è un oggetto che risiede nel database ed è indipendente dallo strumento Query. In database A, per esempio, è possibile creare il database link

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

E poi, quando ci si connette a una, si potrebbe fare qualcosa di simile

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

viene visualizzato questo errore: Errore SQL: ORA-12154: TNS: impossibile risolvere l'identificativo di connessione specificato – user999379

+0

@ user999379 - Si ottiene questo errore, presumo, quando si esegue l'istruzione 'SELECT'? Quando si crea il collegamento al database, l'alias TNS deve esistere sul database A e deve puntare al database B. L'alias TNS su A che punta a B potrebbe essere diverso dall'alias TNS definito nel sistema locale (in particolare se si utilizzando la denominazione locale con un file tnsnames.ora locale). –

+1

Abbiamo un database "live" e un database "demo" in esecuzione sullo stesso server Oracle DB. Sono entrambi impostati nello stesso file tnsnames.ora. Quindi per me è stato semplice come eseguire questa istruzione sotto la mia connessione live: 'CREATE DATABASE LINK demodb USING 'demodb';' dove demodb è il SID del nostro database demo in tnsnames.ora. Ora posso interrogare le tabelle del database demo dalla mia connessione db live semplicemente aggiungendo @demodb alla fine del nome della tabella. – Baodad

Problemi correlati