KNOWLEDGE BASE

Errore "ORA-12154" durante la connessione a Oracle quando il file TNSNames.ora non è in uso


Pubblicato: 01 Aug 2014
Data dell'ultima modifica: 09 May 2022

Problema

Quando si utilizza una connessione Oracle che è stata creata su un computer che utilizza LDAP, TNSNAMES o EZCONNECT o in cui tutti e tre i parametri di connessione (Server, Servizio e Porta) sono stati configurati durante la connessione iniziale, la connessione non funzionerà più e potrebbe verificarsi il seguente errore:

"Oracle database error 12154: ORA-12154: TNS:could not resolve the connect identifier specified" (Errore del database Oracle 12154: ORA-12154: TNS: impossibile risolvere l'identificatore di connessione specificato)

Quando cerchi di connettere lo stesso database Oracle utilizzando il nome del servizio dal file TNSNames.ora nel parametro Server, lasciando vuoti i due parametri restanti, la connessione avviene correttamente.

Questo comportamento può verificarsi in caso di:
  • Condivisione di cartelle di lavoro tra computer che eseguono Tableau Desktop, uno dei quali dispone dei file di configurazione precedenti, mente l'altro non ne dispone.
  • Pubblicazione di una connessione live su Oracle da un computer in cui è in esecuzione Tableau Desktop che utilizza uno dei file di configurazione precedenti in un'istanza di Tableau Server che non lo utilizza. (Se la connessione è pubblicata come un'estrazione, funzionerà, ma non verrà aggiornata).

Ambiente

  • Tableau Server
  • Tableau Desktop
  • Oracle

Soluzione

Opzione 1:

Rivolgiti all'amministratore del database Oracle per consentire il tipo di connessione HOSTNAME per il client Oracle sul computer su cui è in esecuzione Tableau Desktop o Tableau Server.

Opzione 2:

La seguente soluzione alternativa può consentire il tipo di connessione HOSTNAME:

  1. Sul computer su cui è in esecuzione Tableau Desktop o Tableau Server, trova il file sqlnet.ora. La cartella contenente il file deve essere specificata nella variabile TNS_ADMIN e deve contenere anche il file TNSNames.ora. Per ulteriori informazioni, vedi "Set the TNS_Admin environment variable" (Configurazione della variabile di ambiente TNS_Admin) in Setting an Oracle Connection to Use TNSNames.ora (Configurazione di una connessione Oracle per l'uso di TNSNames.ora) e Sqlnet.ora nelle domande frequenti di Oracle.
    Nota: se questa cartella non contiene un file sqlnet.ora, crealo.
  2. Nel file sqlnet.ora, modifica la riga NAMES.DIRECTORY_PATH in modo che risulti come la seguente oppure aggiungi la riga riportata di seguito al file sqlnet.ora: 
    NAMES.DIRECTORY_PATH= (LDAP, TNSNAMES, HOSTNAME)
Nota: se questo problema si verifica in un ambiente distribuito Tableau Server, esegui i passaggi sopra riportati su tutti i computer nell'installazione Tableau Server. Includi il nome del servizio e il numero di porta e utilizza il nome di dominio completo (FQDN) nel campo di testo "Server" della finestra di dialogo di connessione.

Causa

Il file sqlnet.ora non consente al driver Oracle di cercare il database utilizzando tutti e tre i parametri di connessione.

Quando TNSNAMES.ora o LDAP.ora sono in uso, consentono di definire le connessioni Oracle e i relativi parametri all'esterno del connettore Tableau. La parte "net_service_name" verrà utilizzata come campo del server, che quando viene immesso insieme alle credenziali recupera il nome del servizio e il numero di porta dal file TNSNAMES/LDAP. I computer che non utilizzano TNSNAMES/LDAP richiedono l'inserimento del nome del servizio e del numero di porta per il corretto funzionamento della connessione. Inoltre, richiedono l'utilizzo di un nome FQDN per il server invece di un nome personalizzato (ad esempio: "oracle.test.tsi.lan" sarebbe l'FQDN, mentre "Oracle_01" potrebbe essere utilizzato come net_service_name)
Con questo articolo hai risolto il problema?