FAQs - Suporte técnico

Framework - Framework RM - BD - Solucionando e Evitando Erros de TNS

time.png Tempo aproximado para leitura: 00:05:00 min

Ocorrência
Muitos profissionais, principalmente iniciantes, têm ou já tiveram bastantes problemas de conexão com o banco de dados Oracle, os conhecidos erros de TNS, sigla para Transparent Network Substrate. Esses erros ocorrem durante uma tentativa de conexão com o banco de dados ou até mesmo quando se está utilizando Database Link DBLINK para uma outra base de dados.

Ambiente
Framework - Framework (Linha RM) - Banco de Dados - Todas as versões

Causa
As origens desses erros podem ser diversas e sempre estarão ligadas com o SQL NET ou a sua infraestrutura de rede LAN/WAN. Para quem não conhece o SQL NET ou Net8,Antes do Oracle8i, é um produto de middleware da Oracle que oferece suporte para as conexões Transparent Connection entre cliente/servidor, entre bancos de dados Oracle ou ambientes não-Oracle Transparent Gateways. Porém, nossa meta não é conhecer as soluções e arquitetura de rede do Oracle Server, e sim, solucionar os principais problemas de TNS.

Solução
Mas antes devemos conhecer três arquivos que compõe uma arquitetura de rede Oracle e importantes para iniciar a nossa jornada, são eles:

Listener.ora - Arquivo de configuração de ouvinte no lado do servidor. Ele fornece as principais configurações como:

 
  • Nome único do banco de dados Unique Name;
  • Protocolo de Comunicação e porta de acesso;
  • Serviços do Listener e Home Oracle associados à versão da base.
 
A origem desse arquivo é sempre em $ORACLE_HOME/network/admin em Unix\Linux e %ORACLE_HOME%\network\admin para Windows, onde ORACLE_HOME é a origem da sua instalação do Oracle Server. Abaixo segue um modelo simples do Listener.ora.
 
LISTENER =
     (DESCRIPTION_LIST =
           (DESCRIPTION =
                  (ADDRESS_LIST =
                              (ADDRESS = (PROTOCOL = TCP)(HOST = 10.72.0.171)(PORT = 1521))
                   )
            )
    )
    SID_LIST_LISTENER =
            (SID_LIST =
                   (SID_DESC =
                   (SID_NAME = PLSExtProc)
                   (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
                   (PROGRAM = extproc)
    )
           (SID_DESC =
                  (GLOBAL_DBNAME = ranet.world)
                  (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
                  (SID_NAME = ranet)
            )
)
Esse arquivo é geralmente encontrado no servidor que está instalado o banco de dados e não na máquina cliente. E, resumidamente, é ele que fornece o suporte de conexão ao banco de dados.
 
Tnsnames.ora - Arquivo de configuração para acesso aos bancos de dados Oracle, configurado tanto no lado cliente ou servidor. Ele fornece as informações de destino dos banco de dados, como:
 
  • Nome do banco de dados SID;
  • Tipo de Protocolo, Nome do servidor e Porta de conexão.
 
Abaixo segue um exemplo do conteúdo de um arquivo Client:
 
ranet.world =
      (DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.72.0.171)(PORT = 1521))
)
(CONNECT_DATA =
(SID = ranet)
)
)
Podemos encontrar o arquivo no diretório $ORACLE_HOME\network\admin em Unix\Linux e %ORACLE_HOME%/network/admin em Windows da máquina cliente ou servidor, onde a instalação do Oracle Home pode ser de um simples Client Oracle ou Oracle Server.
 
O arquivo tnsnames.ora deve ser configurado no lado cliente e servidor de banco de dados e aplicação, no lado cliente para permitir o usuário acessar o banco de dados, nos servidores de banco de dados para validar a utilização de DBLINKs e nos servidores de aplicação para permitir a conectividade.
 
Sqlnet.ora - Arquivo de configuração que habilita alguns recursos de rede para o cliente ou banco de dados, como:
 
  • Tipo de nomeação de métodos;
  • Habilita logs e traces;
  • Recursos avançados de segurança e entre outros.
 
Assim como os outros arquivos, pode ser encontrado em $ORACLE_HOME\network\admin em Unix\Linux e %ORACLE_HOME%/network/admin em Windows da máquina cliente ou servidor.
 
Bom, depois de algumas explicações dos arquivos de configuração, vamos discutir um check list antes de entrar nos problemas de TNS. Esse check list tem como funcionalidade encontrar os possíveis problemas antes de realizar qualquer alteração nos arquivos do SQL*NET mencionados acima. O check list consiste nas seguintes tarefas:
 
1. PING: Antes de qualquer coisa, faça um ping para o IP do servidor e veja se ele está respondendo na rede, como o exemplo abaixo:
 
C:\>ping 10.72.0.171

Disparando contra 10.72.0.171 com 32 bytes de dados:

Resposta de 10.72.0.171: bytes=32 tempo=81ms TTL=60

Resposta de 10.72.0.171: bytes=32 tempo=70ms TTL=60

Resposta de 10.72.0.171: bytes=32 tempo=137ms TTL=60

Resposta de 10.72.0.171: bytes=32 tempo=96ms TTL=60

Estatísticas do Ping para 10.72.0.171:

Pacotes: Enviados = 4, Recebidos = 4, Perdidos = 0 (0% de perda).
 
Aproximar um número redondo de vezes em milissegundos: Mínimo = 70ms, Máximo = 137ms, Média = 96ms
 
Ter a resposta do servidor já é um bom começo, caso não tenha, existem alguns possíveis problemas:
 
1. O servidor está com outro endereço IP;
2. O cabo de rede não está conectado ao servidor;
3. O servidor pode estar bloqueado no Firewall;
4. Verificar as regras de firewall do seu usuário para o servidor específico;
5. Para ambientes distribuídos, verifique se o link entre as unidades está ativo;
6. Verificar se a(s) placa(s) de rede do servidor estão habilitadas;
7. Verificar se o servidor está no domínio desejado ou em uma DMZ, se sim, verificar se possui acesso.
 
Todos os problemas mencionados acima tratam diretamente da infraestrutura e configuração do servidor em questão, portanto não tem que realizar nenhum tipo de configuração ou manutenção no seu ambiente Oracle.
 
2. TNSPING: O SQL*NET fornece um aplicativo chamado TNSPING, que pode ser executado diretamente no servidor ou da máquina cliente, ele é utilizado para determinar se o Listener do banco de dados alvo está ativo ou não. Pois, em alguns momentos, podemos ter uma base com o status OPEN online, porém, o seu serviço de Listener está parado, deste modo não permite acesso dos usuários.
 
Veja um exemplo:
 
C:\>tnsping ranet

TNS Ping Utility for 32-bit Windows: Version 10.2.0.4.0 - Production on 15-JAN-2009 10:42:10
Copyright (c) 1997, 2007, Oracle. All rights reserved.
 
Arquivos de parâmetros usados:
 
D:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora
 
Usado o adaptador TNSNAMES para resolver o apelido
 
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (COMMUNITY = tcp.world) (PROTOCOL = TCP) (Host = 10.72.0.171) (Port = 1521)) (

ADDRESS = (COMMUNITY = tcp.world) (PROTOCOL = TCP) (Host = 10.72.0.171) (Port = 1521))) (CONNECT_DATA = (SID = ranet)))

OK (80 ms)
 
Diferente do PING, o TNSPING já faz um teste do serviço de conexão diretamente no banco de dados desejado. No exemplo, utilizei o alias RANET para o banco de dados RANET, que é o alias configurado em meu tnsnames.ora, a mensagem final de OK diz que é possível realizar a conexão com o banco de dados. Mas para ter do sucesso de conexão para seu banco de dados, tudo vai depender do status que a sua instância se encontra, pois se o banco de dados estiver em NOMOUNT não montado ou MOUNT montado, o teste de conexão com o TNSPING irá funcionar, porém, o acesso não será possível, assim sendo, quando acessar a aplicação ou SQL*PLUS, terá um erro como o abaixo:
 
C:\>sqlplus /nolog

SQL*Plus: Release 10.2.0.4.0 - Production on Qui Jan 15 13:43:16 2009
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

SQL> conn system@ranet
Informe a senha:

ERROR:
ORA-01033: ORACLE initialization or shutdown in progress
 
Isso é porque o seu banco de dados se encontra em status NOMOUNT ou MOUNT, ou também como a mensagem diz, em processo de SHUTDOWN em modo immediate, normal ou transacional. Utilizando ainda o TNSPING, é possível medir o tempo de resposta do serviço de Listener, colocando um valor N para o teste, conforme o exemplo:
 
C:\>tnsping ranet 5

TNS Ping Utility for 32-bit Windows: Version 10.2.0.4.0 - Production on 15-JAN-2009 10:49:21
Copyright (c) 1997, 2007, Oracle. All rights reserved.
Arquivos de parâmetros usados:
 
D:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora
 
Usado o adaptador TNSNAMES para resolver o apelido
 
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (COMMUNITY = tcp.world) (PROTOCOL = TCP) (Host = 10.72.0.171) (Port = 1521)) 
(ADDRESS = (COMMUNITY = tcp.world) (PROTOCOL = TCP) (Host = 10.72.0.171) (Port = 1521))) (CONNECT_DATA = (SID = ranet)))

OK (50 ms)
OK (60 ms)
OK (60 ms)
OK (80 ms)
OK (80 ms)
 
Acima, foram realizadas 5 tentativas, ou como alguns preferem, 5 saltos. Com essa opção do TNSPING é fornecida para cada salto o tempo de resposta da máquina origem para o banco de dados destino, e com isso também podemos entrar problemas de performance. Caso o tempo de resposta esteja alto de um valor tolerado, que é de 0 a 200 ms milissegundos, pode começar a verificar alguns problemas de rede. Através do TNSPING, começamos a receber alguns erros de TNS, que podemos discutir no link abaixo:
 
 

Saiba mais
Evitando os erros de TNS

 

Esse artigo foi útil?
Usuários que acharam isso útil: 0 de 0

0 Comentários

Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _