FAQs - Suporte técnico

Framework - Framework RM - BD - Evitando erros de TNS no Oracle

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

Ocorrência

As origens desses erros podem ser diversas e sempre estarão ligadas com o SQL NET ou a sua infraestrutura de rede LAN/WAN. 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.

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

Solução
TNS-03505 - Esse erro acontece geralmente quando se tenta realizar um teste de conexão TNSPING para um banco de dados que não está registrado no tnsnames.ora da máquina cliente ou servidor, exemplo:

 
C:\>tnsping ranet99

TNS Ping Utility for 32-bit Windows: Version 10.2.0.4.0 - Production on 15-JAN-2009 10:57:52
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
 
TNS-03505 - Falha ao determinar o nome
 
Existem algumas possíveis soluções simples para esse erro específico de TNS, que são:
 
  • Colocar o nome correto do banco de dados;
  • Verifique se o alias que está tentando conectar está cadastrado no seu arquivo tnsnames.ora;
  • Verifique se o alias necessita utilizar o .WORLD ao final do nome, o .WORLD significa que é de um domínio global, e sua configuração pode ser feita alterando o nome do alias no tnsnames.ora para RANET.WORLD;
  • Talvez seja necessário colocar o parâmetro NAME.DEFAULT_ZONE = WORLD no arquivo sqlnet.ora;
  • Verifique o tipo de nomeação utilizado pelo parâmetro NAMES.DIRECTORY_PATH.
 
TNS-12541 - Esse erro é retornado quando o serviço do Listener não está online, ou está com outro tipo de configuração, exemplo:
 
C:\>tnsping ranet

TNS Ping Utility for 32-bit Windows: Version 10.2.0.4.0 - Production on 15-JAN-2009 11:09:24
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 = (PROTOCOL = TCP) (Host = 10.72.0.171) (Port = 1521))) (CONNECT_DATA = (SID = ranet)))
 
TNS-12541 - TNS: não há listener
 
Nos casos mais simples, para resolver esse problema basta ativar novamente o serviço do Listener no banco de dados alvo. Para isso, utilize a ferramenta LSNRCTL Listener Control fornecida junto com o SQL*NET, através de linha de comando para habilitar novamente o serviço, exemplo:
 
C:\>lsnrctl 

LSNRCTL for 32-bit Windows: Version 10.2.0.4.0 - Production on 15-JAN- 2009 11:13:41
Copyright (c) 1991, 2007, Oracle. All rights reserved.

Bem vindo ao LSNRCTL, digite "help" para obter informações.
 
LSNRCTL> start LISTENER

Starting D:\oracle\product\10.2.0\db_1\bin\tnslsnr: please wait...

TNSLSNR for Windows: Version 10.2.0.4.0 - Production

System parameter file is D:\oracle\product\10.2.0\db_1\network\admin\listener.ora
Log messages written to D:\oracle\product\10.2.0\db_1\network\log\listener.log

Listening on:

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.72.0.171)(PORT=1521)))

Connecting to 

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.72.0.171)(PORT=1521)))


STATUS of the LISTENER
------------------------
Alias - LISTENER
Version - TNSLSNR for Windows: Version 10.2.0.4.0 - Production
Start Date - 15-JAN-2009 11:10:26
Uptime - 0 days 0 hr. 0 min. 0 sec
Trace Level - off
Security - ON: Local OS Authentication
SNMP - OFF 

Listener Parameter File D:\oracle\product\10.2.0\db_1\network\admin\listener.ora
Listener Log File D:\oracle\product\10.2.0\db_1\network\admin\listener.log

Listening Endpoints Summary...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.72.0.171)(PORT=1521)))

Services Summary...

Service "ranet" has 1 instance(s).

Instance "ranet", status UNKNOWN, has 1 handler(s) for this service...

The command completed successfully
 
Perceba que ao acessar o aplicativo LSNRCTL Listener Control, emiti o comando START LISTENER, para iniciar o serviço do Listener, por padrão o nome do ouvinte é LISTENER, então eu poderia apenas deixar start que resolveria, porém, se coloquei outro nome ao LISTENER, basta iniciar com start <nome_do_listener>, e para saber se existe outro nome de Listener configurado no seu SQL*NET, basta verificar o seu arquivo listener.ora do servidor de banco de dados.
 
Existem outros checks que devem ser feitos para evitar esse tipo de erro, são:
 
  • Verificar o hostname e porta do arquivo listener.ora;
  • Verificar o nome do Listener atual no LSNRCTL;
 
ORA-12154 - O mesmo que o erro TNS-12154, onde não há um Listener para conexão, porém, ele é emitido dentro do banco de dados Oracle, por isso o motivo do ORA no início, e esse erro é quando se está utilizando um DBLINK para um determinado banco de dados e o ALIAS utilizado no DBLINK não corresponde ao banco de dados.
 
Exemplo:
SQL> select count(*) from NOTAS_FISCAIS@RANET_SP.WORLD;
select count(*) from NOTAS_FISCAIS@RANET_SP.WORLD
*
ERRO na linha 1:
 
ORA-12154 - TNS:could not resolve service name
 
A solução para esse tipo de problema é igual ao do TNS-12154, porém necessita de mais detalhes, como:
 
Verificar qual o alias que o DBLINK está utilizando para realizar a comunicação, fazendo o SELECT abaixo:
 
SQL> select owner, db_link, username, host from dba_db_links;

OWNER               DB_LINK                        USERNAME                     HOST
----------                 ---------------                     ------------------------------           ---------------
PUBLIC               RANET_SP.WORLD       dbara                                 RANET_RO

1 linha selecionada
 
A coluna HOST fornece o nome do alias que será utilizado para realizar a comunicação com outro banco de dados. Esse alias é o mesmo encontrado no arquivo tnsnames.ora, então, para resolver o problema, basta no arquivo de tnsnames colocar um alias chamado RANET_RO para o hostname, porta e SID corretos, deste modo o DBLINK volta a funcionar. Existem outras coisas que devemos prestar atenção como mencionado nos erros TNS acima, como:
 
1. Verificar se é necessário utilizar o .WORLD para o domínio global;
2. Verificar o NAMES.DIRECTORY_PATH e NAME.DEFAULT_DOMAIN do sqlnet.ora do servidor de banco de dados;
3. Executar os testes de PING e TNSPING.


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 _