Domanda

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

Ho installato i driver .Net oracle e ho posizionato il file tnsnames.ora su
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, i nomi TNS non vengono visualizzati come opzioni.

C'è qualcosa che mi manca?

È stato utile?

Soluzione

Lo sviluppatore SQL 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 sviluppatore SQL sta usando, emetti il ??comando show tns nel foglio di lavoro

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

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

    In Windows, puoi farlo accedendo al Pannello di controllo > Sistema > Impostazioni di sistema avanzate > Variabili d'ambiente ...

    In Linux, definisci la TNS_ADMIN nel file .profile nella tua home directory.

  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 sviluppatore SQL

  4. Ora in SQL Developer fai clic con il tasto destro su Connessioni e seleziona Nuova connessione ... . Seleziona TNS come tipo di connessione nella casella a discesa. Le voci da tnsnames.ora ora dovrebbero essere visualizzate qui.

Altri suggerimenti

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

Il mio TNSNAMES è stato impostato correttamente e ho potuto connettermi a Toad, SQL * Plus ecc., ma dovevo farlo per far funzionare SQL Developer. Forse è stato un problema di Win 7 in quanto è stato difficile installare anche.

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

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 fatto in tnsnames.ora, non che il sistema non riesca a trovarlo. Detto questo, concordo sul fatto che avere una variabile d'ambiente tns_admin impostata sia una buona cosa, poiché evita gli inevitabili problemi che sorgono nel determinare esattamente quale file tnsnames viene utilizzato in sistemi con più case Oracle.

In SQLDeveloper cerca Strumenti - > Preferenze , come mostrato nell'immagine seguente.

inserisci qui la descrizione dell'immagine

Nelle Preferenze opzioni espandi Database - > seleziona Avanzate - > sotto " Directory Tnsnames " - > Sfoglia la directory dove tnsnames.ora presente.
Quindi fai clic su Ok .
come mostrato nel diagramma seguente.

inserisci qui la descrizione dell'immagine

  

Hai fatto!

Ora puoi connetterti tramite le opzioni TNSnames .

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. Lo sviluppatore SQL considera i nomi dei servizi nel file tnsnames.ora come valori con distinzione tra maiuscole e minuscole durante la risoluzione della connessione. Pertanto, se nel file era presente un nome ABCD.world e lo si sostituiva con una nuova voce denominata abcd.world, lo sviluppatore SQL NON aggiornava le specifiche di connessione per ABCD.world: considererà abcd.world come un diverso connessione del tutto. Perché non mi sorprende che un prodotto Oracle tratterà con distinzione tra maiuscole e minuscole il contenuto di un formato di file sviluppato da Oracle che fa distinzione tra maiuscole e minuscole?

In Sql Developer, passa a Strumenti- > preferenze- > Datababae- > advanced- > Imposta la directory Tnsname sulla directory che contiene tnsnames.ora

Nessuna delle precedenti modifiche ha fatto alcuna differenza nel mio caso. Potrei eseguire TNS_PING nella finestra di comando ma SQL Developer non è riuscito a capire dove si trovasse 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 errata di SQL Developer. Sembrano esserci 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 al menu di avvio che puntava a una versione nella directory bin che semplicemente non funzionava. Richiedeva una password ogni volta che avviavo SQL Developer, non ricordavo le scelte che avevo fatto e visualizzavo un elenco vuoto quando sceglievo 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 ho installato un collegamento su% ORACLE_HOME% \ client_1 \ sqldeveloper \ sqldeveloper.exe. Quella modifica ha risolto il problema nel mio caso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top