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: 15 Sep 2020

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: não foi possível resolver o identificador de conexão especificado

  • ORA-12514: o ouvinte TNS desconhece o serviço solicitado no momento no descritor de conexão

  • ORA-12541: TNS: sem ouvinte

  • ORA-12170: TNS: tempo limite de conexão ocorrido

  • 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 no Windows

Etapa 1: verifique se um arquivo TNSNames.ora existe no seu computador. 

Por padrão, o arquivo TNSNames.ora pode ser encontrado em {oracle directory}\network\admin. Por exemplo, C:\Oracle_Client\network\admin. 
Se nenhum arquivo TNSNames.ora existir no seu computador, crie um com um editor de texto. 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.

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


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

Etapa 2: 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 3: use o nome do serviço de rede da 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 Server 2020.2 e posterior (Windows):


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 fazer referência à localização do arquivo tnsnames.ora no sistema de arquivos host. As barras invertidas duplas \\ são intencionais e necessárias, embora os caminhos \\ não funcionem se copiados e colados diretamente no explorador de arquivos do Windows. O arquivo oracle.properties só funcionará corretamente com barras invertidas duplas neste contexto.

Coloque o arquivo no seguinte local: C:\ProgramData\Tableau\Tableau Server\data\tabsvc\vizqlserver\Datasources (ou caminho equivalente se for utilizado um local de instalação alternativo). Certifique-se de criar a pasta se ela ainda não existir.

Assim que os arquivos e pastas forem criados, certifique-se de que o usuário Run As tenha as permissões apropriadas para o arquivo e reinicie o Tableau Server.

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


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. Copiar 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: definir a variável de ambiente TNS_Admin

  1. Inicie o Terminal e insira o seguinte comando: 

    sudo nano /etc/launchd.conf

    Observação: 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 estava 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 da 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: Copie 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: defina 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
Observação: 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:
Como o tabsvc não está mais presente no Linux, as etapas acima não são mais aplicáveis. Em vez disso, coloque o arquivo tsnames.ora no diretório /etc na máquina do 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 a seguir:

Exemplo: oracle.net.tns_admin=/etc

Altere /etc se necessário, para apontar para o caminho do arquivo tnsnames.ora dentro do sistema de arquivos.

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

Etapa 3: defina 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:
    • 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. 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
  1. Salve as alterações no arquivo.

Observação: 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.

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.

Observação: 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.
Observação: 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)
   )
 )

Observação: se você tiver o SSL configurado no Oracle, consulte as etapas adicionais abaixo.

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


Discuta este artigo... Fórum de comentários
Este artigo resolveu o problema?