Pular para o conteúdo

Fóruns Banco de dados Oracle Alternativa para testar a conexão sem usar tnsping Alternativa para testar a conexão sem usar tnsping

#108902
Avatar photoJosé Laurindo Chiappa
Moderador

    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….