I nomi Oracle TNS non vengono visualizzati quando si aggiunge una nuova connessione a SQL Developer


93

Sto cercando di connettermi a un database Oracle con SQL Developer.

Ho installato i driver .Net Oracle e ho inserito il tnsnames.orafile in
C:\Oracle\product\11.1.0\client_1\Network\Admin

Sto usando il seguente formato in tnsnames.ora:

dev =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.XXX.XXX)(PORT = XXXX))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = idpdev2)
    )
  )

In SQL Developer, quando provo a creare una nuova connessione, nessun nome TNS viene visualizzato come opzione.

C'è qualcosa che mi manca?

Risposte:


176

SQL Developer cercherà nella seguente posizione in questo ordine un file tnsnames.ora

  1. $ HOME / .tnsnames.ora
  2. $ TNS_ADMIN / tnsnames.ora
  3. Chiave di ricerca TNS_ADMIN nel registro
  4. /etc/tnsnames.ora (non Windows)
  5. $ ORACLE_HOME / network / admin / tnsnames.ora
  6. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME_KEY
  7. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME

Per vedere quale SQL Developer sta utilizzando, emettere il comando show tnsnel foglio di lavoro

Se il tuo file tnsnames.ora non viene riconosciuto, usa la seguente procedura:

  1. Definisci una variabile ambientale chiamata TNS_ADMIN per puntare alla cartella che contiene il tuo file tnsnames.ora.

    In Windows, questo viene fatto accedendo a Pannello di controllo > Sistema > Impostazioni di sistema avanzate > Variabili d'ambiente ...

    In Linux, definire la variabile TNS_ADMIN nel file .profile nella directory home.

  2. Conferma che il sistema operativo sta riconoscendo questa variabile ambientale

    Dalla riga di comando di Windows: echo% TNS_ADMIN%

    Da linux: echo $ TNS_ADMIN

  3. Riavvia SQL Developer

  4. Ora, in SQL Developer fare clic destro su Connessioni e selezionare Nuova connessione ... . Seleziona TNS come tipo di connessione nella casella a discesa. Le tue voci da tnsnames.ora dovrebbero ora essere visualizzate qui.

1
Per me: $ HOME / .tnsnames.ora non ha funzionato ... invece ho usato $ HOME / tnsnames.ora. Nota anche: dovrai andare su Strumenti -> Preferenze, cercare "tns" e puntare la directory su $ HOME
Ryan Delucchi

Nonostante questo sia nelle note di rilascio per la versione 1.5 per sviluppatori SQL, ho scoperto che su Ubuntu 12.04 LTS solo il 5 ha funzionato . Prova questi passaggi per verificare se questo è il tuo caso: forums.oracle.com/message/2769285#2769285 . Degno di nota : l'autore ha avuto il problema su Win Vista.
LAFK dice Reinstate Monica

Ha funzionato per me in Windows. Registrare le cose per sempre FTW!
Isaac

L'impostazione di TNS_ADMIN non ha funzionato per me. Invece, ho cercato nel computer tutti i file TNSNAMES e ho aggiornato il contenuto di tutti loro. Non ho idea del motivo per cui Windows 7 Sql Developer ha continuato a utilizzare altri file TNSNAMES in una vecchia cartella.
Ben

1
Nota: $TNS_ADMINla DIRECTORY non è il .orafile effettivo
geneorama

30

Apri SQL Developer. Vai su Strumenti -> Preferenze -> Database -> Avanzate Quindi imposta esplicitamente la directory Tnsnames

Il mio TNSNAMES era impostato correttamente e potevo connettermi a Toad, SQL * Plus ecc. Ma dovevo farlo per far funzionare SQL Developer. Forse si trattava di un problema di Win 7 perché anche l'installazione era un problema.


La risposta accettata non ha funzionato per me, ma questo ha funzionato (Windows Server 2008R2)
Josh Werts,

Ho avuto lo stesso problema, ma SQL Developer ha anche cercato in% userprofile% \ tnsnames.ora prima di% TNS_ADMIN% \ tnsnames.ora, ed è lì che avevo il file tnsnames.ora aggiuntivo.
MBWise

15

In SQLDeveloper sfoglia Tools --> Preferences, come mostrato nell'immagine sottostante.

inserisci qui la descrizione dell'immagine

Nelle opzioni delle preferenze inexpand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directory cui è presente tnsnames.ora .
Quindi fare clic su Ok .
come mostrato nel diagramma sottostante.

inserisci qui la descrizione dell'immagine

Hai fatto!

Ora puoi connetterti tramite le opzioni TNSnames .


Non riesco a trovare "Databse: Advanced" ==> la mia versione è 1.5.5
Tarek El-Mallah

1
Per le versioni precedenti alla 2.1 o se non hai specificato una directory Tnsnames su 2.1 o versioni successive, segui le indicazioni fornite nella risposta @JasonAnderson .
Chandra Sekhar

Non ho l'opzione Directory Tnsnames in Strumenti-> Preferenze-> Databaes-> menu Parametri avanzati. Sto usando SqlDeveloper v1.1.3
Ahmedov

14

Puoi sempre trovare la posizione del file tnsnames.ora utilizzato eseguendo TNSPING per verificare la connettività (9i o successivo):

C:\>tnsping dev

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 08-JAN-2009 12:48:38

Copyright (c) 1997, 2005, Oracle.  All rights reserved.

Used parameter files:
C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = XXX)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = DEV)))
OK (30 msec)

C:\>

A volte, il problema è con la voce che hai inserito in tnsnames.ora, non che il sistema non riesca a trovarlo. Detto questo, sono d'accordo che avere un set di variabili di ambiente tns_admin sia una buona cosa, poiché evita gli inevitabili problemi che sorgono quando si determina esattamente quale file tnsnames viene utilizzato in sistemi con più case Oracle.


come posso installare lo strumento tnsping?
Kiquenet

Nell'installazione del client è presente una casella di controllo per Strumenti database o qualcosa di simile.
DCookie

2

I passaggi menzionati da Jason sono molto buoni e dovrebbero funzionare. Tuttavia, c'è una piccola svolta con SQL Developer. Memorizza nella cache le specifiche di connessione (host, nome del servizio, porta) la prima volta che legge il file tnsnames.ora. Quindi, non invalida le specifiche quando la voce originale viene rimossa dal file tnsname.ora. La cache persiste anche dopo che SQL Developer è stato terminato e riavviato. Questo non è un modo così illogico di gestire la situazione. Anche se un file tnsnames.ora è temporaneamente non disponibile, SQL Developer può comunque effettuare la connessione purché le specifiche originali siano ancora vere. Il problema arriva con la loro prossima piccola svolta. SQL Developer considera i nomi dei servizi nel file tnsnames.ora come valori con distinzione tra maiuscole e minuscole quando risolve la connessione. Quindi, se avevi un nome di voce ABCD. world nel file e lo hai sostituito con una nuova voce denominata abcd.world, SQL Developer NON aggiorna le sue specifiche di connessione per ABCD.world - tratterà abcd.world come una connessione completamente diversa. Perché non mi sorprende che un prodotto Oracle tratti come distinzione tra maiuscole e minuscole il contenuto di un formato di file sviluppato da Oracle che è espressamente insensibile al maiuscolo / minuscolo?


@allen: sai come forzare la cancellazione di questo elenco? In tal caso, rispondi a stackoverflow.com/q/6412559/168646
David Oneill,

1

In Sql Developer, vai su Strumenti-> preferenze-> Datababae-> avanzate-> Imposta la directory Tnsname sulla directory contenente tnsnames.ora


0

Nessuna delle modifiche di cui sopra ha fatto alcuna differenza nel mio caso. Potrei eseguire TNS_PING nella finestra di comando ma SQL Developer non è riuscito a capire dove fosse tnsnames.ora.

Il problema nel mio caso (Windows 7 - 64 bit - Enterprise) era che il programma di installazione Oracle puntava il collegamento del menu Start alla versione sbagliata di SQL Developer. Sembra che ci siano tre istanze di SQL Developer che accompagnano il programma di installazione. Uno è in% ORACLE_HOME% \ client_1 \ sqldeveloper \ e due sono in% ORACLE_HOME% \ client_1 \ sqldeveloper \ bin \.

Il programma di installazione ha installato un collegamento del menu di avvio che puntava a una versione nella directory bin che semplicemente non funzionava. Mi chiedeva una password ogni volta che avessi avviato SQL Developer, non ricordavo le scelte che avevo fatto e visualizzato un elenco vuoto quando ho scelto TNS come meccanismo di connessione. Inoltre, non ha il campo Directory TNS nelle impostazioni avanzate del database a cui si fa riferimento in altri post.

Ho lanciato il vecchio collegamento Start e installato un collegamento a% ORACLE_HOME% \ client_1 \ sqldeveloper \ sqldeveloper.exe. Quella modifica ha risolto il problema nel mio caso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.