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.
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)
)
)
- Nome do banco de dados SID;
- Tipo de Protocolo, Nome do servidor e Porta de conexão.
ranet.world =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.72.0.171)(PORT = 1521))
)
(CONNECT_DATA =
(SID = ranet)
)
)
- Tipo de nomeação de métodos;
- Habilita logs e traces;
- Recursos avançados de segurança e entre outros.
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).
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.
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)
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
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.
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)
Saiba mais
Evitando os erros de TNS
0 Comentários