BASE DE DADOS DE CONHECIMENTO

Configuração de uma conexão Oracle para usar TNSNames.ora ou LDAP.ora


Publicado: 29 Nov 2016
Data da última modificação: 20 Jul 2023

Pergunta

Como configurar uma conexão do Oracle para usar TNSNames.ora ou LDAP.ora.


Benefícios de configurar as conexões TNSNames.ora ou LDAP.ora.

Os seguintes erros comuns do Oracle podem ser corrigidos ou evitados quando a conexão de dados é configurada para usar o TNSNames.ora ou o LDAP.ora.
  • ORA-12154: TNS: could not resolve the connect identifier specified (ORA-12154: TNS: não foi possível resolver o identificador de conexão especificado)

  • ORA-12514: TNS listener does not currently know of service requested in connect descriptor (ORA-12514: o ouvinte TNS desconhece o serviço solicitado no momento no descritor de conexão)

  • ORA-12541: TNS: no listener (ORA-12541: TNS: sem ouvinte)

  • ORA-12170: TNS:Connect timeout occurred (ORA-12170: TNS: tempo limite de conexão ocorrido)

  • ORA-12504: TNS listener was not given the SERVICE_NAME in CONNECT_DATA (ORA-12504: o ouvinte TNS não recebeu SERVICE_NAME em CONNECT_DATA)

Ambiente

  • Tableau Desktop
  • Tableau Server
  • Oracle

Resposta

CLIQUE PARA EXPANDIR A SOLUÇÃO
Tableau Desktop e/ou Server no Windows, OCI Client

Etapa 1: Definir a variável de ambiente TNS_Admin.

  1. Selecione Iniciar > Painel de controle > Sistema 
  2. Selecione Configurações avançadas do sistema
  3. Na caixa de diálogo Propriedades do Sistema, na guia Avançado, selecione Variáveis de Ambiente. 
  4. Em Variáveis do sistema, clique em Nova. 
  5. Na caixa de diálogo Nova variável do sistema, insira o seguinte e depois clique em OK: 
    • Nome da variável: TNS_ADMIN 
    • Valor da variável: o diretório que contém o arquivo TNSNames.ora.
  6. Clique em OK na caixa de diálogo Variáveis de Ambiente e na caixa de diálogo Propriedades do Sistema. 
  7. Reinicie o computador para garantir que a nova variável seja reconhecida. 

Etapa 2: Usar o nome do serviço de rede Oracle para se conectar ao Oracle no Tableau. 

  1. Feche todas as pastas de trabalho do Tableau e abra uma nova instância do Tableau.
  2. No Tableau Desktop, selecione Conectar aos dados > Oracle.
    • Para o servidor, insira o 'net_service_name' da Oracle registrado no arquivo TNSNAmes.ora.
    • Insira o nome de usuário e a senha se necessário.

O resto dos detalhes da conexão no arquivo TNSNames.ora são comunicados por meio da variável do sistema TNS_ADMIN. Observe que você deve deixar o nome de serviço opcional e as informações de porta vazios, caso contrário isso pode interferir com a conexão por duplicar informações.

CLIQUE PARA EXPANDIR A SOLUÇÃO
Tableau Desktop e Server 2020.2 e posteriores, Windows, driver JDBC
 
Crie um arquivo oracle.properties contendo o seguinte texto (exemplo):

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

Se necessário, altere o caminho para se referir ao local do arquivo tnsnames.ora no sistema de arquivos host. As barras invertidas duplas \\ são intencionais e obrigatórias, mesmo se os caminhos \\ não funcionarem se forem copiados e colados diretamente no explorador de arquivos do Windows. O arquivo oracle.properties só funcionará corretamente com barras invertidas duplas nesse contexto.

Coloque o arquivo no seguinte local:
Desktop: Documents\My Tableau Repository\Datasources 
Servidor: C:\ProgramData\Tableau\Tableau Server\data\tabsvc\vizqlserver\Datasources (ou caminho equivalente se for usado um local de instalação alternativo). Crie a pasta se ela ainda não existir.

Apenas servidor: depois que os arquivos e as pastas tiverem sido criados, garanta que a opção de execução como usuário seja fornecida com as permissões apropriadas ao arquivo e reinicie o Tableau Server.

Mais informações sobre arquivos de propriedades JDBC podem ser encontradas aqui: https://kb.tableau.com/articles/howto/Customizing-JDBC-Connections?lang=pt-br
 
CLIQUE PARA EXPANDIR A SOLUÇÃO
No Mac

Etapa 1:

  1. Feche o Tableau Desktop se ele estiver aberto. 
  2. Assegure-se de que você baixou e instalou os drivers para Mac da Oracle da página de Drivers do Tableau.
  3. Copie um arquivo LDAP.ora ou TNSNames.ora existente contendo informações da conexão para /etc: 
  • No Finder, selecione Ir > Ir para a pasta e então insira /etc.
  • Copie o arquivo .ora para /etc.

Etapa 2: Configurar a variável de ambiente TNS_Admin 

  1. Inicie o Terminal e insira o seguinte comando: 

    sudo nano /etc/launchd.conf

    Obs.: o Nano é um editor de texto disponível em computadores Mac.

  2. Insira sua senha quando solicitado.

  3. Digite o seguinte:

    launch setenv TNS_ADMIN /etc

  4. Pressione Ctrl-X, depois Y e depois Enter para salvar as alterações e sair do Nano.
  5. Reinicie seu Mac.

Etapa 3: Verificar se a variável TNS_ADMIN foi configurada: 

  1. Inicie o Terminal e insira o seguinte comando: 

    export

  2. Você verá uma lista com todas as variáveis do sistema. Procure:

    declare -x TNS_ADMIN="/etc"

  3. Confirme se a resolução do DNS está funcionando para o nome de host listado no arquivo .ora fazendo o ping do nome de host no Terminal ou no Utilitário de rede. Use um nome de domínio completamente qualificado, tal como servername.domain.com, em vez de um nome de servidor simples. 
Agora você deve ser capaz de iniciar o Tableau Desktop no seu Mac e de conectar-se com o banco de dados Oracle, fornecendo apenas o nome do servidor contido no arquivo TNSNames.ora ou LDAP.ora. 
 
CLIQUE PARA EXPANDIR A SOLUÇÃO
No Linux

Resumo das etapas:

  1. Copie o arquivo tnsnames.ora para um local ao qual o usuário do tableau tenha acesso
  2. Defina as permissões no arquivo.
  3. Atualize a variável TNS_ADMIN do ambiente, se necessário, para apontar para o diretório da etapa (1).

Etapa 1: Copiar o arquivo tnsnames.ora para um diretório que o usuário sem privilégio (tableau) possa acessar

Para versões 2019.3.x e posteriores:
Copie o arquivo tnsnames.ora file para o diretório /etc.
Para versões 2019.2.x e anteriores:
Como padrão, o usuário não privilegiado é chamado de 'tableau'. Todos os processos do Tableau Server são executados com essa conta e devem poder localizar o arquivo tnsnames.ora para usá-lo.
Se você já tiver o conector Oracle instalado, recomendamos que copie o arquivo ao diretório /opt/tableau/tableau_driver/oracle.
Você pode confirmar que o diretório está acessível pelo usuário usando 'su' para mudar para a conta e para o diretório. Por exemplo:
sudo su tableau
cd /opt/tableau/tableau_driver/oracle
Se essas etapas resultarem em um erro de 'permissão negada', você precisará atualizar as permissões no diretório sendo usado.

Etapa 2: Definir permissões para o arquivo tnsnames.ora.

2019.2.x e versões anteriores, siga as etapas abaixo:
  1. Navegue até o caminho do arquivo em que o arquivo tnsnames.ora está localizado.
  2. Conceda permissões ao arquivo executando o comando: chmod 666 tnsnames.ora
  3. Verifique as permissões do arquivo com o seguinte comando: ls -l
Obs.: o caminho do ambiente não deve ter uma barra final. Se o formato do caminho estiver incorreto, os usuários poderão encontrar um erro ORA-12154.

2019.3 e versões posteriores:
Coloque o arquivo tsnames.ora no diretório /etc na máquina Linux. Nenhuma variável de ambiente é necessária.

2020.2 e posterior:

Crie um arquivo /var/opt/tableau/tableau_server/data/tabsvc/vizqlserver/Datasources/oracle.properties com o texto abaixo:

Exemplo: oracle.net.tns_admin=/etc

Se necessário, altere /etc para apontar para o caminho do arquivo tnsnames.ora no sistema de arquivos no seu servidor.

Mais informações sobre arquivos de propriedades JDBC podem ser encontradas aqui: https://kb.tableau.com/articles/howto/Customizing-JDBC-Connections?lang=pt-br
 

Etapa 3: Definir a variável de ambiente TNS_ADMIN para apontar para o diretório da etapa (1)

Para as versões 2019.3.x e posteriores: você pode pular esta etapa; nenhuma variável de ambiente é necessária.
Para versões 2019.2.x e anteriores:
  1. Em um editor de texto, abra o arquivo que corresponde à sua versão do Tableau Server:
    • ​​Tabelau Server 2018.1.x - 2019.2 --  /var/opt/tableau/tableau_server/.local/share/systemd/user/tabsvc_0.service
  2. Adicione a seguinte linha, em que "/path/to/file-folder" é o diretório para o qual você copiou tnsnames.ora na etapa 1:
    • Environment=TNS_ADMIN=/path/to/file-folder
  3. Salve as alterações feitas no arquivo.

Obs.: o caminho do ambiente não tem uma barra à direita. Se o formato do caminho estiver incorreto, os usuários poderão encontrar um erro ORA-12154.

CLIQUE PARA EXPANDIR A SOLUÇÃO
Todos os ambientes

Etapas opcionais

Localização de arquivos tnsnames.ora

Se o cliente Oracle estiver instalado no seu servidor, o arquivo tnsnames.ora estará localizado no seguinte diretório: $ORACLE_HOME/network/admin.
Você pode verificar se este arquivo existe com os seguintes comandos:

echo $ORACLE_HOME 
imprimirá o caminho do arquivo.

sudo find / -iname tnsnames.ora
 listará os locais de qualquer arquivo tnsnames.ora no seu sistema de arquivos.

Obs.: não é necessário ter o cliente Oracle instalado para usar tnsnames.ora com o Tableau Server. Esta etapa é simplesmente para ajudá-lo a trabalhar com qualquer instalação existente.

Criação de novo arquivo tnsnames.ora do início

Se nenhum arquivo tnsnames.ora estiver presente neste computador e você não tiver um para copiar de uma estação de trabalho cliente, poderá criá-lo usando um editor de texto. Lembre-se das seguintes restrições:

  • O nome do arquivo tnsnames.ora diferencia maiúsculas e minúsculas e deve estar em letras minúsculas. 

  • O arquivo não deve usar o espaçamento de tabulação.

Abaixo está um possível modelo de uma entrada. Os elementos entre chaves devem ser substituídos por valores obtidos junto ao administrador de banco de dados.
Obs.: embora um arquivo TNSNames.ora em um computador Windows ou Mac possa não exigir a entrada ADDRESS_LIST, o arquivo tnsnames.ora em um computador Linux exige essa variável.
 

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

Por exemplo: 

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

 

Informações adicionais

Etapas de configuração adicionais se você tiver o SSL configurado no Oracle

Configuração do ORACLE_HOME e do TNS_ADMIN para Oracle (Com SSL configurado no 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

Este artigo resolveu o problema?