› Fóruns › Banco de dados Oracle › Alternativa para testar a conexão sem usar tnsping › Alternativa para testar a conexão sem usar tnsping
Então : o que o TNSPING faz é abrir um socket de rede para o servidor indicado na coluna HOST da entrada TNSNAMES em uso E enviar um pacote de rede mínimo (que não contém dados de conexão – nem usuário nem senha, nada assim : tem só um NULL nele, digamos assim) para a porta indicada, que é a porta onde o listener está ‘escutando’ – NADA MAIS, NADA MENOS…. Sendo assim, um cenário onde pra abrir um socket simplório e enviar pela rede um pacote de POUCOS BYTES tá demorando, imho COMPROVA que vc tem algum problema de rede BEM SÉRIO aí, o qual vc TEM que debugar junto com teu admin de rede…. ISSO É FATO, sim sim ??
SEM desmerecer esse trabalho de Investigação na camada de Rede (ie, NICs, protocolo TCP/IP, DNS servers, rotas de rede, etc) , que VAI SIM ser Tremendamente Necessário e só vc pode fazer (pois é algo LOCAL aí no seu ambiente), há Além disso algumas obs a mais que devo fazer :
a. faça um teste com ** outro ** programa de rede que seja capaz de enviar um pacote mínimo de rede pra um determinado host E numa determinada porta : uma opção é o client de telnet nativo do Windows…
b. sorry, mas esse seu printscreen tá mostrando uma ** SALADA RUSSA ** de ambientes aí : veja, o cabeçalho do tnsping fala versão 9.2.0.1 , o sqlnet.ora sendo usado está em C:ORANTNET80 (esse diretório NET80 era tipicamente usado para softwares clients Oracle versão 8.0.x), o SERVICE_NAME como XE me parece indicar que o database é um XE, banco esse que existiu na versão 10g e 11g….
OU SEJA, me parece que vc tem vários softwares client aí envolvidos, alguns deles EXTREMAMENTE ANTIGOS…. O busílis é que clients anteriores a 10g *** TINHAM ** e TEM SIM problemas de incompatibilidade CONHECIDOS com databases 11g, será que não pode ser Isso o seu problema ?? A idéia é ter um client ** AO MENOS ** de mesma versão que o banco, sim sim sim ???
=====>>> Veja aí o meu exemplo :
==> tenho instalado na máquina várias versões de software client Oracle, como meu banco-destino é 11g vou setar as vars de ambiente pra apontarem pro meu client 11g :
C:Usersjlchi_000>SET ORACLE_SID=O11GR2
C:Usersjlchi_000>SET ORACLE_HOME=c:apporacleproduct11gr2dbhome
C:Usersjlchi_000>SET PATH=%ORACLE_HOME%bin;%PATH%
==> faço o TNSPING apontando pro banco 11g destino :
C:Usersjlchi_000>tnsping o11gr2vm
TNS Ping Utility for 64-bit Windows: Version 11.2.0.3.0 – Production on 07-AGO-2017 17:39:38
Copyright (c) 1997, 2011, Oracle. All rights reserved.
Arquivos de parâmetros usados:
c:apporacleproduct11gr2dbhomenetworkadminsqlnet.ora
Usado o adaptador TNSNAMES para resolver o apelido
Tentativa de contatar (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.102)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)))
OK (40 ms)
==> faço uma *** CONEXÃO *** com o sqlplus que veio no client 11g :
C:Usersjlchi_000>sqlplus system/oracle@o11gr2vm
SQL*Plus: Release 11.2.0.3.0 Production on Seg Ago 7 17:40:17 2017
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Conectado a:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 – Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> exit
Desconectado de Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 – Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
===> EIS o exemplo de um outro programa (no caso o client de TELNET oficial do Windows, que não vem instalado por default mas instalei) :
C:Usersjlchi_000>tnsping 192.168.56.102 1521
==> vc não vê aqui mas o resultado normal é uma tela preta, que só sai com CTRL+C …. QUALQUER ERRO de rede impedindo o socket de ser aberto (seja FIREWALL ou Antivírus proibindo a conexão no host/porta em questão, ou seja o que for) resulta IMEDIATAMENTE numa msg de erro ao invés da tela preta….
Para mostrar isso , agora vou passar uma porta errada pro IP correto :
C:Usersjlchi_000>tnsping 192.168.56.102 1529
TNS Ping Utility for 64-bit Windows: Version 11.2.0.3.0 – Production on 07-AGO-2017 17:41:17
Copyright (c) 1997, 2011, Oracle. All rights reserved.
Arquivos de parâmetros usados:
c:apporacleproduct11gr2dbhomenetworkadminsqlnet.ora
TNS-03505: Falha ao determinar o nome
C:Usersjlchi_000>telnet 192.168.56.102 1529
Conectando-se a 192.168.56.102…Não foi possível abrir conexão com host, na porta 1529: conexão falhou
C:Usersjlchi_000>
===>> OKDOC ??? Faz esse teste com o client de telnet de prompt de comando e veja o que acontece…
==> O que me causa espécie porém é que no TNSPING vc não recebe a msg de erro mas sim fica PENDENTE a tentativa de abertura de socket que o TNSPING faz…. Pra mim, como eu disse, isso IMPLICA que é alguma coisa mais séria, tipo servidor DNS demorando demais pra traduzir o hostname, roteador te dando uma rota de rede absurdamente longa, conflito de IPs entre o “servidor” Oracle de destino (que sendo XE o banco eu ** imagino ** que deve ser um PC de mesa qualquer!!) e algum outro hardware da tua rede… TODOS esses pontos quem soluciona é teu sysadmin de rede, não posso fazer NADA vezes NADA daqui…
[]s
Chiappa
OBS :
ALÉM de tudo o que eu disse (tudo OBRIGATÓRIO, imho!!), um Outro teste que vc pode fazer é tentar conectar nesse tal database ‘XE’ (TANTO a partir da sua máquina QUANTO a partir de uma outra máquina qualquer, desde que esteja na mesma rede) ** SEM ** o software client Oracle – diversos programas cliente (principalmente os feitos em Java e que aceitem driver JDBC type-4) permitem que vc faça isso, aí vc CONFIRMA se realmente é um problema de rede OU se essa “salada russa” de clients Oracle que vc tem aí tá te dando problemas… Entre os trocentos programas clientes freewares que permitem conexão a um banco sem que vc tenha o software client Oracle instalado, indico o “Oracle SQL Developer” em http://www.oracle.com/technetwork/developer-tools/sql-developer/overview/index.html (meu preferido para esse tipo de teste, é o que uso na minha máquina), o MyORA em http://www.myorasql.com/ , o jisql em https://bitbucket.org/stdunbar/jisql, o dbeaver em http://dbeaver.jkiss.org/ , o SQuirrelSQL em http://www.squirrelsql.org/ …. Todos esses caras só exigem que vc tenha um JRE (Java Runtime) instalado , não demandam por JDK… E ao menos no caso do Oracle SQL Developer sei que ele já vem com o driver JDBC embutido, o que é uma coisa a menos….