BASE DE CONNAISSANCES

Configuration d'une connexion Oracle pour qu'elle utilise TNSNames.ora ou LDAP.ora


Date de publication : 29 Nov 2016
Date de dernière modification : 27 Jul 2020

Question

Comment configurer une connexion Oracle pour qu'elle utilise TNSNames.ora ou LDAP.ora.


Avantages à configurer des connexions TNSNames.ora ou LDAP.ora.

Les erreurs Oracle courantes suivantes peuvent être corrigées ou évitées en configurant votre connexion de données de manière à utiliser TNSNames.ora ou LDAP.ora.
  • ORA-12154 : TNS: could not resolve the connect identifier specified (TNS : impossible de résoudre l'identificateur de connexion spécifié)

  • ORA-12514 : TNS listener does not currently know of service requested in connect descriptor (TNS : le processus d'écoute ne connaît pas actuellement le service demandé dans le descripteur de connexion)

  • ORA-12541 : TNS: no listener (TNS : pas de processus d'écoute)

  • ORA-12170: TNS:Connect timeout occurred (une expiration de la connexion s'est produite)

  • ORA-12504 : L'écouteur TNS n'a pas reçu le SERVICE_NAME dans CONNECT_DATA

Environnement

  • Tableau Desktop
  • Tableau Server
  • Oracle

Réponse

Avant d'effectuer la procédure ci-dessous, vérifiez que Oracle Net Services a été installé sur l'ordinateur hébergeant Tableau Desktop ou Tableau Server.

Pour installer Oracle Net Services, exécutez le programme d'installation du logiciel client Oracle Database et choisissez le composant « Oracle Net Services » à installer. Le logiciel client Oracle Database est disponible sur le support d'installation ou en téléchargement sur le site Web Oracle Technology Network.

Pour en savoir plus sur Oracle Net Services, consultez Introduction à Oracle Net Services
 
CLIQUER POUR DÉVELOPPER LA SOLUTION
Sur Windows

Étape 1 : Vérifier si votre ordinateur contient un fichier TNSNames.ora.

Par défaut, le fichier TNSNames.ora se trouve dans le répertoire {oracle directory}\network\admin, par exemple C:\Oracle_Client\network\admin
Si votre ordinateur ne contient aucun fichier TNSNames.ora, créez-en un à l'aide d'un éditeur de texte. Voici un modèle possible d'entrée. Il est nécessaire de remplacer les éléments entre parenthèses par les valeurs que votre administrateur de base de données vous a transmises.

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


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

Étape 2 : Définition de la variable d'environnement TNS_Admin.

  1. Sélectionnez Démarrer > Panneau de configuration > Système.
  2. Sélectionnez Paramètres système avancés.
  3. Dans la boîte de dialogue Propriétés du système, sur l'onglet Avancé, sélectionnez Variables d'environnement.
  4. Sous Variables système, cliquez sur Nouveau. 
  5. Dans la boîte de dialogue Nouvelle variable système, entrez ce qui suit, puis cliquez sur OK :
    • Nom de la variable : TNS_ADMIN 
    • Valeur de la variable : répertoire contenant le fichier TNSNames.ora.
  6. Cliquez sur OK dans la boîte de dialogue Variables d'environnement et dans la boîte de dialogue Propriétés système.
  7. Redémarrez votre ordinateur pour vous assurer que la nouvelle variable est reconnue.

Étape 3 : Utilisation du nom du service Oracle Net dans Tableau.

  1. Fermez tous les classeurs Tableau et ouvrez une nouvelle instance de Tableau.
  2. Dans Tableau Desktop, sélectionnez Se connecter aux données > Oracle.
    • Pour le serveur, entrez le nom « net_service_name » oracle enregistré dans le fichier TNSNAmes.ora.
    • Entrez votre nom d'utilisateur et votre mot de passe selon vos besoins.

Le reste des détails de connexion du fichier TNSNames.ora est communiqué via la variable système TNS_ADMIN. Notez que vous devriez laisser vides le nom du service en option et les informations de port. Ils risquent sinon d'interférer avec la connexion en dupliquant les informations.

CLIQUER POUR DÉVELOPPER LA SOLUTION
Sur Mac

Étape 1 :

  1. Fermez Tableau Desktop s'il est ouvert. 
  2. Vérifiez que vous avez téléchargé et installé les pilotes Oracle pour Mac depuis la page Pilotes de Tableau.
  3. Copiez un fichier LDAP.ora ou TNSNames.ora existant contenant des informations de connexion sur /etc : 
  • Dans le Finder, sélectionnez Aller > Aller au dossier, puis tapez /etc.
  • Copiez le fichier .ora sur /etc.

Étape 2 : Configurez la variable d'environnement TNS_Admin

  1. Démarrez le terminal et entrez la commande suivante :

    sudo nano /etc/launchd.conf

    Remarque : Nano est un éditeur basé texte qui est toujours disponible sur les ordinateurs Mac.

  2. Entrez votre mot de passe à l'invite.

  3. Entrez la commande suivante :

    launch setenv TNS_ADMIN /etc

  4. Appuyez sur Ctrl-X, puis Y, puis sur Entrée pour enregistrer vos modifications et quitter Nano.
  5. Redémarrez votre Mac.

Étape 3 : Vérifiez que la variable TNS_ADMIN a été définie : 

  1. Démarrez le terminal et entrez la commande suivante :

    export

  2. Vous verrez s'afficher la liste de toutes les variables système. Recherchez :

    declare -x TNS_ADMIN="/etc"

  3. Vérifiez que la résolution DNS fonctionne pour le nom d'hôte répertorié dans le fichier .ora en envoyant un ping au nom d'hôte dans l'utilitaire du terminal ou du réseau. Utilisez un nom de domaine qualifié complet, par exemple nomserveur.domaine.com, au lieu d'un simple nom de serveur. 
Vous devriez maintenant pouvoir démarrer Tableau Desktop sur votre Mac et vous connecter à la base de données Oracle, en fournissant seulement le nom du serveur à partir du fichier TNSNames.ora ou LDAP.ora.
 
CLIQUER POUR DÉVELOPPER LA SOLUTION
Sur Linux

Résumé des étapes :

  1. Copiez le fichier tnsnames.ora sur un emplacement auquel l'utilisateur tableau a accès
  2. Définissez les autorisations sur le fichier.
  3. Mettez à jour la variable d'environnementTNS_ADMIN, si nécessaire, de manière à pointer vers le répertoire à partir de l'étape (1).

Étape 1 : Copier le fichier tnsnames.ora sur un répertoire auquel l'utilisateur sans privilège (tableau) peut accéder

Pour 2019.3.x et versions ultérieures :
Copiez le fichier tnsnames.ora sur le répertoire /etc.
Pour 2019.2.x et versions antérieures :
Par défaut , l'utilisateur sans privilège est appelé « tableau ». Tous les processus Tableau Server sont exécutés avec ce compte et doivent être capables de localiser le fichier tnsnames.ora pour l'utiliser.
Si vous avez déjà installé le connecteur Oracle, nous vous recommandons de copier le fichier sur le répertoire /opt/tableau/tableau_driver/oracle.
Vous pouvez vérifier que le répertoire est accessible par l'utilisateur en utilisant « su » pour basculer sur le compte et sur le répertoire. Par exemple :
sudo su tableau
cd /opt/tableau/tableau_driver/oracle
Si ces résultats entraînent une erreur « autorisation refusée », vous devez mettre à jour les autorisations sur le répertoire que vous utilisez.

Étape 2 : Définir les autorisations pour le fichier tnsnames.ora

2019.2.x et antérieur, suivez la procédure ci-dessous :
  1. Accédez au chemin d'accès du fichier où se trouve le fichier tnsnames.ora.
  2. Accordez des autorisations pour le fichier en exécutant la commande : chmod 666 tnsnames.ora
  3. Vérifiez les autorisations de fichier à l'aide de la commande suivante : ls -l
Remarque : le chemin d'environnement ne doit pas avoir de barre oblique finale. Si le format du chemin est incorrect, les utilisateurs peuvent rencontrer une erreur ORA-12154.

2019.3 et ultérieur :
Étant donné que tabsvc n'est plus présent sur Linux, la procédure ci-dessus n'est plus applicable. Au lieu de cela, placez le fichier tsnames.ora dans le répertoire /etc sur l'ordinateur Linux. Aucune variable d'environnement n'est nécessaire.

Étape 3 : Définir la variable d'environnement TNS_ADMIN de manière à pointer vers le répertoire à partir de l'étape (1)

Pour 2019.3.x et versions ultérieures : vous pouvez ignorer cette étape. Aucune variable d'environnement n'est requise.
Pour 2019.2.x et versions antérieures :
  1. Dans un éditeur de texte, ouvrez le fichier correspondant à votre version de Tableau Server :
    • Tableau Server 10.5.x -- /etc/systemd/system/tabsvc_0.service
    • ​​Tableau Server 2018.1.x - 2019.2 --  /var/opt/tableau/tableau_server/.local/share/systemd/user/tabsvc_0.service
  2. Ajoutez la ligne suivante, où « /path/to/file-folder » correspond au répertoire sur lequel vous avez copié le fichier tnsnames.ora à l'étape 1 :
Environment=TNS_ADMIN=/path/to/file-folder
  1. Enregistrez les modifications apportées au fichier.

Remarque : le chemin d'environnement ne doit pas avoir de barre oblique finale. Si le format du chemin est incorrect, les utilisateurs peuvent rencontrer une erreur ORA-12154.

Étapes facultatives

Trouver les fichiers tnsnames.ora

Si le client Oracle est installé sur votre serveur, le fichier tnsnames.ora se trouve dans le répertoire suivant : $ORACLE_HOME/network/admin.
Vous pouvez vérifier si ce fichier existe avec les commandes suivantes :

echo $ORACLE_HOME 
imprimera le chemin d'accès du fichier.

sudo find / -iname tnsnames.ora
 référence les emplacements de tous les fichiers tnsnames.ora sur votre système de fichiers.

Remarque : il n'est pas nécessaire que le client Oracle soit installé pour utiliser tnsnames.ora avec Tableau Server. Cette étape est simplement conçue pour vous aider à travailler avec toute installation existante.

Création d'un nouveau fichier tnsnames.ora depuis le début

Si aucun fichier tnsnames.ora n'est présent sur cet ordinateur et que vous n'en avez aucun à copier depuis la station de travail d'un client, vous pouvez en créer un avec un éditeur de texte. Gardez à l'esprit les restrictions suivantes :

  • Le nom de fichier tnsnames.ora est sensible à la casse et doit être entièrement en minuscules. 

  • Le fichier ne doit pas utiliser l'espacement par tabulation.

Voici un modèle possible d'entrée ci-dessous. Il est nécessaire de remplacer les éléments entre parenthèses par les valeurs transmises par votre administrateur de base de données.
Remarque : un fichier TNSNames.ora sur un ordinateur Windows ou Mac peut ne pas exiger l'entrée ADDRESS_LIST. Par contre, le fichier tnsnames.ora sur un ordinateur Linux requiert cette variable.
 

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

Par exemple :

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

Remarque : si vous avez configuré SSL sur Oracle, consultez les étapes supplémentaires ci-dessous.

Informations supplémentaires

Étapes de configuration supplémentaires si SSL est configuré sur Oracle

Configuration de ORACLE_HOME et TNS_ADMIN pour Oracle (avec SSL configuré sur 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


Discuter de cet article... Forum de commentaires
Cet article vous a-t-il permis de résoudre le problème ?