KNOWLEDGE BASE

Impostazione di una connessione Oracle per l'utilizzo di TNSNames.ora o LDAP.ora


Pubblicato: 29 Nov 2016
Data dell'ultima modifica: 15 Sep 2020

Domanda

Come impostare una connessione Oracle in modo che utilizzi TNSNames.ora o LDAP.ora.


Vantaggi della configurazione di connessioni TNSNames.ora o LDAP.ora.

Puoi correggere o evitare i seguenti errori comuni di Oracle configurando la connessione data dati in modo che utilizzi il file TNSNames.ora o LDAP.ora.
  • ORA-12154: TNS: could not resolve the connect identifier specified (TNS: impossibile risolvere l'identificatore connessione specificato)

  • ORA-12514: TNS listener does not currently know of service requested in connect descriptor (Il listener TNS attualmente non è a conoscenza del servizio richiesto nel descrittore connessione)

  • ORA-12541: TNS: no listener (TNS: nessun listener)

  • ORA-12170: TNS:Connect timeout occurred (TNS: timeout connessione)

  • ORA-12504: TNS listener was not given the SERVICE_NAME in CONNECT_DATA (Al listener TNS non è stato assegnato il SERVICE_NAME in CONNECT_DATA)

Ambiente

  • Tableau Desktop
  • Tableau Server
  • Oracle

Risposta

 
FAI CLIC PER ESPANDERE LA SOLUZIONE

Tableau Desktop su Windows

Passaggio 1: verifica l'esistenza di un file TNSNames.ora nel computer. 

Per impostazione predefinita, il file TNSNames.ora è disponibile in {oracle directory}\network\admin. Ad esempio, C:\Oracle_Client\network\admin
Se nel computer non è presente alcun file TNSNames.ora, creane uno mediante un editor di testo. Di seguito è riportato un possibile modello per una voce. Gli elementi tra parentesi devono essere sostituiti da valori ottenuti dall'amministratore del database.

[net_service_name]=
(DESCRIPTION=
  (ADDRESS=[protocol_address_information])
    (CONNECT_DATA= (SERVICE_NAME=[service_name])
     )
  )


Ad esempio:
 
Production =
(DESCRIPTION =
 (ADDRESS = (PROTOCOL = TCP)(HOST = prod.corp.com)(PORT = 1521)
  )
 (CONNECT_DATA =
  (SERVICE_NAME= orcl)
  )
 )

Passaggio 2: Imposta la variabile di ambiente TNS_Admin.

  1. Seleziona Avvio > Pannello di controllo > Sistema 
  2. Seleziona Impostazioni di sistema avanzate
  3. Nella finestra di dialogo Proprietà del sistema, nella scheda Avanzate, seleziona Variabili di ambiente. 
  4. In Variabili di sistema, fai clic su Nuovo. 
  5. Nella finestra di dialogo Nuova variabile di sistema, immetti quanto indicato di seguito, quindi fai clic su OK: 
    • Nome variabile: TNS_ADMIN 
    • Valore variabile: la directory che contiene il file TNSNames.ora.
  6. Fai clic su OK nelle finestre di dialogo Variabili di ambiente e Proprietà del sistema. 
  7. Riavvia il computer per assicurarti che la nuova variabile venga riconosciuta. 

Passaggio 3: Usa il nome del servizio di rete Oracle in Tableau. 

  1. Chiudi tutte le cartelle di lavoro di Tableau e apri una nuova istanza di Tableau.
  2. In Tableau Desktop, seleziona Connessione ai dati > Oracle.
    • Per Server, immetti il "nome_servizio_di_rete" registrato nel file TNSNAmes.ora.
    • Immetti nome utente e password appropriati.

Il resto dei dettagli sulla connessione del file TNSNames.ora vengono comunicati tramite la variabile di sistema TNS_ADMIN. Devi lasciare vuoti il nome del servizio opzionale e le informazioni sulla porta, altrimenti potrebbero interferire con la connessione generando informazioni duplicate.

FAI CLIC PER ESPANDERE LA SOLUZIONE
Tableau Server 2020.2 e versioni successive (Windows):


Crea un file oracle.properties con il seguente testo (esempio):

oracle.net.tns_admin=C:\\Oracle_Client\\network\\admin

Se necessario, modifica il percorso in modo da fare riferimento alla posizione del file tnsnames.ora nel file system host. Le doppie barre rovesciate \\ sono intenzionali e necessarie, anche se i percorsi \\ non funzioneranno se vengono copiati e incollati direttamente in Esplora file di Windows. In questo contesto, il file oracle.properties funzionerà correttamente solo con doppie barre rovesciate.

Posiziona il file nel seguente percorso: C:\ProgramData\Tableau\Tableau Server\data\tabsvc\vizqlserver\Datasources (o un percorso equivalente se viene utilizzata una posizione di installazione alternativa). Assicurati di creare la cartella se non esiste già.

Una volta creati i file e le cartelle, verifica che l'utente Esegui come disponga delle autorizzazioni appropriate per il file e riavvia Tableau Server.

Ulteriori informazioni sui file di proprietà JDBC sono disponibili qui: https://kb.tableau.com/articles/howto/Customizing-JDBC-Connections?lang=it-it


Su Mac

Passaggio 1:

  1. Chiudi Tableau Desktop se è aperto. 
  2. Assicurati di aver scaricato e installato i driver di Oracle per Mac dalla pagina dei driver di Tableau.
  3. Copia un file LDAP.ora o TNSNames.ora esistente contenente le informazioni sulla connessione in /etc: 
  • In Strumento di ricerca, seleziona Vai > Vai alla cartella, quindi digita /etc.
  • Copia il file .ora in /etc.

Passaggio 2: Configura la variabile di ambiente TNS_ADMIN 

  1. Avvia Terminal e digita il comando seguente:

    sudo nano /etc/launchd.conf

    Nota: Nano è un editor basato su testo che è sempre disponibile nei computer Mac.

  2. Digita la password quando richiesta.

  3. Digita quanto indicato di seguito:

    launch setenv TNS_ADMIN /etc

  4. Premi CTRL-X, quindi Y e Invio per salvare le modifiche e uscire da nano.
  5. Riavvia il Mac.

Passaggio 3: Verifica che la variabile TNS_ADMIN sia stata impostata: 

  1. Avvia Terminal e digita il comando seguente:

    export

  2. Visualizzerai un elenco di tutte le variabili di sistema. Cerca:

    declare -x TNS_ADMIN="/etc"

  3. Conferma che la risoluzione DNS funzioni per il nome host presente nel file .ora eseguendo il ping del nome host nel terminale o nell'utilità di rete. Usa un nome di dominio completo, come nomeserver.dominio.com, al posto di un semplice nome server. 
Adesso dovresti essere in grado di avviare Tableau Desktop sul Mac e connetterti al database Oracle, specificando solo il nome del server contenuto nel file TNSNames.ora o LDAP.ora. 
 
FAI CLIC PER ESPANDERE LA SOLUZIONE
Su Linux

Riepilogo dei passaggi:

  1. Copia il file tnsnames.ora in una posizione accessibile dall'utente tableau
  2. Imposta le autorizzazioni per il file.
  3. Aggiorna la variabile di ambiente TNS_ADMIN, se necessario, in modo da fare riferimento alla directory nel passaggio (1).

Passaggio 1: Copia il file tnsnames.ora in una directory accessibile dall'utente senza privilegi (tableau)

Per le versioni 2019.3.x e successive:
Copia il file tnsnames.ora nella directory /etc.
Per le versioni 2019.2.x e precedenti:
Per impostazione predefinita, l'utente senza privilegi è denominato "tableau".Tutti i processi di Tableau Server vengono eseguiti con questo account, che deve essere in grado di individuare il file tnsnames.ora per poterlo utilizzare.
Se hai già installato il connettore Oracle, è consigliabile copiare il file nella directory /opt/tableau/tableau_driver/oracle.
Puoi verificare che la directory sia accessibile dall'utente usando "su" per passare all'account e accedere alla directory.Ad esempio:
sudo su tableau
cd /opt/tableau/tableau_driver/oracle
Se questa procedura genera un errore "autorizzazione negata", devi aggiornare le autorizzazioni per la directory che stai utilizzando.

Passaggio 2: Imposta le autorizzazioni per il file tnsnames.ora

Per 2019.2.x e versioni precedenti, procedi come segue:
  1. Vai al percorso del file tnsnames.ora.
  2. Concedi autorizzazioni al file eseguendo il comando: chmod 666 tnsnames.ora
  3. Verifica le autorizzazioni file con il seguente comando: ls -l
Nota: Il percorso di ambiente non deve contenere una barra finale. Se il formato del percorso è errato, gli utenti potrebbero riscontrare un errore ORA-12154.

2019.3 e versioni successive:
Poiché tabsvc non è più presente in Linux, la procedura precedente non è più applicabile. Posiziona invece il file tsnames.ora nella directory /etc sul computer Linux. Non è necessaria alcuna variabile di ambiente.

2020.2 e versioni successive:

Crea un file /var/opt/tableau/tableau_server/data/tabsvc/vizqlserver/Datasources/oracle.properties con il testo seguente:

Esempio: oracle.net.tns_admin=/etc

Se necessario, modifica / etc in modo da puntare al percorso del file tnsnames.ora nel file system.

Ulteriori informazioni sui file di proprietà JDBC sono disponibili qui: https://kb.tableau.com/articles/howto/Customizing-JDBC-Connections?lang=it-it
 

Passaggio 3: Aggiorna la variabile di ambiente TNS_ADMIN in modo da fare riferimento alla directory nel passaggio (1).

Per le versioni 2019.3.x e successive: puoi saltare questo passaggio (non è richiesta alcuna variabile di ambiente).
Per le versioni 2019.2.x e precedenti:
  1. In un editor di testo, apri il file corrispondente alla tua versione di Tableau Server:
    • Tableau Server 10.5.x -- /etc/systemd/system/tabsvc_0.service
    • ​​Tabelau Server da 2018.1.x a 2019.2 -  /var/opt/tableau/tableau_server/.local/share/systemd/user/tabsvc_0.service
  2. Aggiungi la seguente riga, dove "/percorso/file-cartella" è la directory in cui hai copiato tnsnames.ora nel passaggio 1:
Environment=TNS_ADMIN=/percorso/file-cartella
  1. Salva le modifiche apportate al file.

Nota: Il percorso di ambiente non deve contenere una barra finale; se il formato del percorso è errato, gli utenti potrebbero riscontrare un errore ORA-12154.

Passaggi facoltativi

Individuazione dei file tnsnames.ora

Se il client Oracle è installato sul server, il file tnsnames.ora sarà disponibile nella seguente directory: $ORACLE_HOME/network/admin.
Puoi verificare se il file è presente con i seguenti comandi:

echo $ORACLE_HOME 
consentirà di stampare il percorso del file.

sudo find / -iname tnsnames.ora
elencherà le posizioni di tutti i file tnsnames.ora nel file system.

Nota: Per utilizzare il file tnsnames.ora con Tableau Server, non è necessario installare il client Oracle.Questo passaggio ti consente semplicemente di lavorare con qualsiasi installazione esistente.

Creazione da zero di un nuovo file tnsnames.ora

Se nel computer non è presente alcun file tnsnames.ora e non ne hai uno da copiare da una workstation client, puoi crearne uno mediante un editor di testo. Tieni presenti le seguenti limitazioni:

  • Per il nome del file tnsnames.ora si applica la distinzione tra maiuscole e minuscole. Il nome deve essere composto interamente da lettere minuscole. 

  • Non utilizzare la spaziatura mediante tabulazioni all'interno del file.

Di seguito è riportato un possibile modello per una voce. Gli elementi tra parentesi devono essere sostituiti da valori ottenuti dall'amministratore del database.
Nota: sebbene sia possibile che in un file TNSNames.ora su un computer Windows o Mac non sia richiesta la voce ADDRESS_LIST, per il file tnsnames.ora su un computer Linux è richiesta questa variabile.
 

[net_service_name]=
(DESCRIPTION=
  (ADDRESS_LIST=
    (ADDRESS=[protocol_address_information])
   )
  (CONNECT_DATA= 
    (SERVICE_NAME=[service_name])
   )
 )

Ad esempio: 

Production =
(DESCRIPTION =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = prod.corp.com)(PORT = 1521)
   )
  (CONNECT_DATA = 
    (SERVICE_NAME = orcl)
   )
 )

Nota: Se SSL è configurato su Oracle, vedi i seguenti passaggi aggiuntivi.

Ulteriori informazioni

Passaggi di configurazione aggiuntivi se SSL è configurato su Oracle

Configurazione di ORACLE_HOME e TNS_ADMIN per Oracle (con SSL configurato su Oracle)

sudo su -l tableau
      touch /var/opt/tableau/tableau_server/.config/systemd/tableau_server.conf.d/oracle.conf
      echo "ORACLE_HOME=/u01/app/oracle/product/12.1.0/client_1" | tee -a /var/opt/tableau/tableau_server/.config/systemd/tableau_server.conf.d/oracle.conf
      echo "TNS_ADMIN=/u01/app/oracle/product/12.1.0/client_1/network/admin" | tee -a /var/opt/tableau/tableau_server/.config/systemd/tableau_server.conf.d/oracle.conf 
      chmod 744 /var/opt/tableau/tableau_server/.config/systemd/tableau_server.conf.d/oracle.conf
exit

cd /opt/tableau/tableau_server/packages/scripts.near.xx.xxxx.xxxx/
            sudo ./stop-administrative-services
            sudo ./start-administrative-services
source /etc/profile.d/tableau_server.sh


Commenta questo articolo... Feedback Forum
Con questo articolo hai risolto il problema?