BASE DE CONOCIMIENTO

Configurar una conexión Oracle para usar TNSNames.ora o LDAP.ora


Publicado: 29 Nov 2016
Fecha de la última modificación: 15 Sep 2020

Pregunta

Cómo configurar una conexión Oracle para que use TNSNames.ora o LDAP.ora.


Ventajas de configurar las conexiones TNSNames.ora o LDAP.ora.

Los errores de Oracle comunes siguientes se pueden corregir o evitar si configura su conexión de datos para que use TNSNames.ora o LDAP.ora.
  • ORA-12154: TNS: could not resolve the connect identifier specified (no se pudo resolver el identificador de conexión especificado)

  • ORA-12514: TNS listener does not currently know of service requested in connect descriptor (el receptor TNS desconoce servicio solicitado en el descriptor de conexión)

  • ORA-12541: TNS: no listener (sin receptor)

  • ORA-12170: TNS: ocurrió tiempo de espera de conexión

  • ORA-12504: La escucha TNS no recibió el SERVICE_NAME en CONNECT_DATA

Entorno

  • Tableau Desktop
  • Tableau Server
  • Oracle

Respuesta

 
HAGA CLIC PARA EXPANDIR LA SOLUCIÓN

Tableau Desktop en Windows

Paso 1: comprobar si existe un archivo TNSNames.ora en el equipo

De manera predeterminada, el archivo TNSNames.ora se puede encontrar en {directorio de oracle}\network\admin. Por ejemplo, C:\Oracle_Client\network\admin. 
Si no hay un archivo TNSNames.ora presente en el equipo, cree uno con un editor de texto. A continuación se muestra una plantilla potencial para una entrada. Los elementos en paréntesis deben reemplazarse por valores obtenidos del administrador de la base de datos.

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


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

Paso 2: configurar la variable de entorno TNS_ADMIN

  1. Haga clic en Inicio > Panel de control > Sistema.
  2. Haga clic en Configuración avanzada del sistema.
  3. En el cuadro de diálogo Propiedades del sistema, en la pestaña Avanzadas, seleccione Variables de entorno.
  4. En Variables del sistema, haga clic en Nuevo.
  5. En el cuadro de diálogo Nueva variable del sistema, introduzca lo siguiente y después haga clic en Aceptar:
    • Nombre de la variable: TNS_ADMIN.
    • Valor de la variable: el directorio que contiene el archivo TNSNames.ora.
  6. Haga clic en Aceptar en el cuadro de diálogo Variables de entorno y el cuadro de diálogo Propiedades del sistema.
  7. Reinicie el equipo para garantizar el reconocimiento de la nueva variable.

Paso 3: usar el nombre de servicio de red de Oracle en Tableau

  1. Cierre todos los libros de trabajo de Tableau y abra una nueva instancia de Tableau.
  2. En Tableau Desktop, seleccione Conectar a datos > Oracle.
    • Para el Servidor, use el alias "net_service_name" de Oracle registrado en el archivo TNSNames.ora.
    • Escriba su nombre de usuario y contraseña, según sea necesario.

El resto de detalles de conexión del archivo TNSNames.ora se comunican a través de la variable del sistema TNS_ADMIN. Tenga en cuenta que debería dejar la información de nombre de servicio y puerto opcionales en blanco, de lo contrario, puede interferir con la conexión al duplicar información.

HAGA CLIC PARA EXPANDIR LA SOLUCIÓN
Tableau Server 2020.2 y posterior (Windows):


Cree un archivo oracle.properties que contenga el siguiente texto (Ejemplo):

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

Cambie la ruta si fuera necesario para hacer referencia a la ubicación del archivo tnsnames.ora dentro del sistema de archivos del host.La doble barra diagonal inversa "\\" es intencionada y obligatoria aunque las rutas \\ no funcionarán si se copian y pegan directamente en el explorador de archivos de Windows.El archivo oracle.properties solo funcionará correctamente cuando haya una doble barra diagonal inversa en este contexto.

Coloque el archivo en la siguiente ubicación:C:\ProgramData\Tableau\Tableau Server\data\tabsvc\vizqlserver\Datasources (o en una ruta equivalente si se emplea una ubicación de la instalación alternativa). Compruebe que ha creado la carpeta si no existe todavía.

Cuando se creen los archivos y carpetas, compruebe que Ejecutar como usuario se proporciona con los permisos adecuados para el archivo y, a continuación, reinicie Tableau Server.

Obtenga más información sobre los archivos de propiedades JDBC aquí: https://kb.tableau.com/articles/howto/Customizing-JDBC-Connections?lang=es-es


En Mac

Paso 1:

  1. Cierre Tableau Desktop si está abierto.
  2. Asegúrese de que ha descargado e instalado los controladores de Oracle para Mac de la página de Controladores de Tableau.
  3. Copie cualquier archivo LDAP.ora o TNSNames.ora existente que contenga información de conexión en /etc: 
  • En Finder, seleccione Ir>Ir a carpeta y, a continuación, escriba /etc.
  • Copie el archivo .ora en /etc.

Paso 2: configurar la variable de entorno TNS_ADMIN

  1. Inicie Terminal y escriba el comando siguiente: 

    sudo nano /etc/launchd.conf

    Nota: Nano es un editor basado en texto que siempre se encuentra en los equipos Mac.

  2. Escriba su contraseña cuando se le solicite.

  3. Escriba lo siguiente:

    launch setenv TNS_ADMIN /etc

  4. Pulse Ctrl-X y, a continuación, Y, luego pulse Intro para guardar los cambios y salir de Nano.
  5. Reinicie su Mac.

Paso 3: comprobar que se ha establecido la variable TNS_ADMIN 

  1. Inicie Terminal y escriba el comando siguiente: 

    export

  2. Podrá ver una lista de todas las variables del sistema. Busque:

    declare -x TNS_ADMIN="/etc"

  3. Confirme que la resolución DNS funciona para el nombre de host indicado en el archivo .ora haciendo ping al nombre de host en Terminal o Utilidad de red. Utilice un nombre de dominio completamente calificado como nombreservidor.dominio.com, en lugar de un nombre de servidor sencillo.
Ahora, debería poder iniciar Tableau Desktop en su Mac y conectar con la base de datos Oracle proporcionando solo el nombre de servidor del archivo TNSNames.ora o LDAP.ora. 
 
HAGA CLIC PARA EXPANDIR LA SOLUCIÓN
En Linux

Resumen de los pasos:

  1. Copie el archivo tnsnames.ora en una ubicación a la que pueda acceder un usuario de Tableau
  2. Configure los permisos del archivo.
  3. Actualice la variable de entorno TNS_ADMIN, si es necesario, para que se asigne al directorio usado en el paso (1).

Paso 1: Copie el archivo tnsnames.ora en un directorio que pueda utilizar un usuario sin privilegios (tableau)

2019.3.x y versiones posteriores:
Copie el archivo tnsnames.ora en el directorio /etc.
2019.2.x y versiones anteriores:
De forma predeterminada, un usuario sin privilegios recibe el nombre "tableau".Todos los procesos de Tableau Server se ejecutan con esta cuenta y debería poder localizar el archivo tnsnames.ora para usarlo.
Si ya ha instalado el conector de Oracle, se recomienda que copie el archivo en el directorio /opt/tableau/tableau_driver/oracle.
Puede confirmar que el usuario puede acceder al directorio usando "su" para conmutar entre la cuenta y el directorio.Por ejemplo:
sudo su tableau
cd /opt/tableau/tableau_driver/oracle
Si al realizar estos pasos aparece el error "Permiso denegado", debe actualizar los permisos del directorio que utilice.

Paso 2: Configurar los permisos del archivo tnsnames.ora

Para la versión 2019.2.x y anteriores, siga estos pasos:
  1. Vaya a la ruta de archivo donde se encuentra el archivo tnsnames.ora.
  2. Conceda permisos al archivo ejecutando el comando chmod 666 tnsnames.ora.
  3. Compruebe los permisos del archivo con el comando siguiente: ls -l.
Nota: La ruta de entorno no debe tener una barra diagonal final. Si el formato de la ruta no es correcto, los usuarios pueden encontrarse el error ORA-12154.

2019.3 y versiones posteriores:
Como tabsvc no está presente en Linux, los pasos anteriores no se pueden aplicar. En su lugar, coloque el archivo tsnames.ora en el directorio /etc del equipo Linux. No hace falta ninguna variable de entorno.

2020.2 y posteriores:

Cree un archivo de propiedades /var/opt/tableau/tableau_server/data/tabsvc/vizqlserver/Datasources/oracle.properties con el siguiente texto:

Ejemplo: oracle.net.tns_admin=/etc

Cambie la sección de/etc si fuera necesario para señalar a la ruta del archivo tnsnames.ora dentro del sistema de archivos.

Obtenga más información sobre los archivos de propiedades JDBC aquí: https://kb.tableau.com/articles/howto/Customizing-JDBC-Connections?lang=es-es
 

Paso 3: Configure la variable de entorno TNS_ADMIN para que se asigne al directorio usado en el paso (1)

Para la versión 2019.3.x y superiores: puede omitir este paso ya que no se requiere una variable de entorno.
2019.2.x y versiones anteriores:
  1. En un editor de texto, abra el archivo que coincida con su versión de Tableau Server:
    • Tableau Server 10.5.x: /etc/systemd/system/tabsvc_0.service
    • ​​Tabelau Server 2018.1.x - 2019.2:  /var/opt/tableau/tableau_server/.local/share/systemd/user/tabsvc_0.service
  2. Añada la siguiente línea, en la que "/path/to/file-folder" corresponde al directorio en el que copió tnsnames.ora en el paso 1:
Environment=TNS_ADMIN=/path/to/file-folder.
  1. Guarde los cambios en el archivo.

Nota: La ruta del entorno no debe contener una barra diagonal final; si el formato de la ruta es incorrecto, puede que los usuarios vean el error ORA-12154.

Pasos opcionales

Encontrar archivos tnsnames.ora

Si el cliente Oracle está instalado su servidor, el archivo tnsnames.ora se encontrará en el siguiente directorio: $ORACLE_HOME/network/admin.
Puede comprobar si el archivo existe con los siguientes comandos:

echo $ORACLE_HOME 
imprime la ruta del archivo.

sudo find / -iname tnsnames.ora
 incluye la lista de ubicaciones de los archivos tnsnames.ora en su sistema de archivos.

Nota: no es necesario que instale el cliente de Oracle para usar tnsnames.ora con Tableau Server. Este paso le ayudará a trabajar con cualquier tipo de instalación.

Crear un archivo tnsnames.ora desde cero

Si no se encuentra el archivo tnsnames.ora en el equipo y no tiene uno para copiarlo desde el equipo del cliente, puede crear uno usando un editor de texto.Tenga en cuenta estas restricciones:

  • El archivo tnsnames.ora distingue mayúsculas de minúsculas y todas las letras deben escribirse en minúscula. 

  • En el archivo no debe usarse el espaciado con tabulaciones.

A continuación se muestra una posible plantilla para una entrada. Los elementos en paréntesis deben reemplazarse por valores obtenidos del administrador de la base de datos.
Nota: aunque el archivo TNSNames.ora no requiera la entrada ADDRESS_LIST en un equipo Windows o Mac, el archivo tnsnames.ora sí requiere esta variable en los equipos Linux.
 

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

Por ejemplo: 

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

Nota: si tiene SSL configurado en Oracle, consulte los pasos adicionales que se muestran a continuación.

Información adicional

Pasos de configuración adicionales si tiene SSL configurado en Oracle

Configurar ORACLE_HOME y TNS_ADMIN para Oracle (con SSL configurado en 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


Comente sobre este artículo... Foro de comentarios
¿Fue de ayuda este artículo para resolver el problema?