- This topic has 6 replies, 2 voices, and was last updated 7 years, 3 months ago by José Laurindo Chiappa.
-
AuthorPosts
-
5 de agosto de 2017 at 1:40 am #108895airoospParticipant
Boa tarde,
Pesquisando na internet uma alternativa para testar a conexão de rede sem usar o tnsping. Encontrei o código java abaixo, mas mesmo depois de gerar o arquivo .class, não consegui executar.
import java.sql.*;
import oracle.jdbc.pool.*;public class ThinTnsnames {
static String sql = null;
public static void main(String[] args) {
String entry_name = args [0];
test (entry_name);
}public static void test (String entry_name) {
Connection pconnection = null;
try {
String l_url = “jdbc:oracle:thin:@” + entry_name;
System.out.println( “Connection string = ” + l_url );OracleDataSource ods = new OracleDataSource();
ods.setURL(l_url);
pconnection = ods.getConnection ();
}
catch(SQLException e) {
int errorCode = e.getErrorCode() ;
System.err.println(“Error Code: ” + errorCode) ;
if ( errorCode == 12514 ) {
System.err.println(“Listener is UP but database is DOWN”);
}
if ( errorCode == 17002 ) {
System.err.println(“Listener is DOWN”);
}
if ( errorCode == 1017 ) {
System.err.println(“Listener is UP and database is UP”);
}
// e.printStackTrace();
}
finally {
try {
if (pconnection != null )pconnection .close();
}
catch(Exception e) {
e.printStackTrace();
}
}
}}
Ao executar no prompt de comando, aparece a mensagem que a classe ThinTnsnames não foi encontrada.
Neste link https://stackoverflow.com/questions/30658542/how-to-do-oracle-tnsping-with-java tem o código da classe e exemplo de execução, só que não funcionou.
Alguém já viu este código?
Obrigado.
Airton
7 de agosto de 2017 at 5:15 pm #108897José Laurindo ChiappaModeratorBlz ? Então, pondo os pingos nos Is : primeiro de tudo, OBVIAMENTE creio que vc sabe que o tnsping serve ** Apenas ** e ** Tão Somente ** para testar a conexão de rede até o Listener : até por não aceitar ome e senha de usuário, o TNSPING ** não faz ** uma conexão ao database, sim sim ?? Para demonstrar isso Claramente, um exemplo : tenho o database em si parado, starto o Listener :
C:Usersjlchi_000>lsnrctl status
LSNRCTL for 64-bit Windows: Version 11.2.0.2.0 – Production on 07-AGO-2017 09:26:16
Copyright (c) 1991, 2014, Oracle. All rights reserved.
Estabelecendo conexão com (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS do LISTENER
Apelido LISTENER
Versão TNSLSNR for 64-bit Windows: Version 11.2.0.2.0 – Production
Data Inicial 07-AGO-2017 09:26:09
Funcionamento 0 dias 0 hr. 0 min. 7 seg
Nível de Análise off
Segurança ON: Local OS Authentication
SNMP OFF
Serviço Default XE
Arq. Parâm. Listn. C:oraclexeapporacleproduct11.2.0servernetworkadminlistener.ora
Arq. Log Listener C:oraclexeapporaclediagtnslsnrDell15Rselisteneralertlog.xml
Resumo de Atendimento…
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=.pipeEXTPROC1ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Dell15Rse)(PORT=1521)))
Resumo de Serviços…
O serviço “CLRExtProc” tem 1 instância(s).
Instância “CLRExtProc”, status UNKNOWN, tem 1 handler(s) para este serviço…
O serviço “PLSExtProc” tem 1 instância(s).
Instância “PLSExtProc”, status UNKNOWN, tem 1 handler(s) para este serviço…
O comando foi executado com êxito==> Faço o TNSPING , obtenho SUCESSO porque o Listener tá ativo e recebendo pacotes de rede :
C:Usersjlchi_000>tnsping xe
TNS Ping Utility for 64-bit Windows: Version 11.2.0.2.0 – Production on 07-AGO-2017 09:26:23
Copyright (c) 1997, 2014, Oracle. All rights reserved.
Arquivos de parâmetros usados:
C:oraclexeapporacleproduct11.2.0servernetworkadminsqlnet.oraUsado o adaptador TNSNAMES para resolver o apelido
Tentativa de contatar (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = Dell15Rse)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))
OK (10 ms)C:Usersjlchi_000>
===> Porém, ao tentar efetuar uma COnexão ao banco que está parado (eu subi Só o Listener!!) recebo erro, óbvio :
C:Usersjlchi_000>sqlplus system/oracle@xe
SQL*Plus: Release 11.2.0.2.0 Production on Seg Ago 7 09:27:04 2017
Copyright (c) 1982, 2014, Oracle. All rights reserved.
ERROR:
ORA-12514: TNS:listener não tem conhecimento sobre o serviço solicitado
atualmente no descritor de conexãoInforme o nome do usuário:
C:Usersjlchi_000>==> No caso o serviço Windows desse database tá parado :
C:Usersjlchi_000>sc query “OracleServiceXE”
NOME_DO_SERVIÇO: OracleServiceXE
TIPO : 10 WIN32_OWN_PROCESS
ESTADO : 1 STOPPED
CÓDIGO_DE_SAÍDA_DO_WIN32 : 0 (0x0)
CÓDIGO_DE_SAÍDA_DO_SERVIÇO : 0 (0x0)
PONTO_DE_VERIFICAÇÃO : 0x0
AGUARDAR_DICA : 0x0C:Usersjlchi_000>
==> por isso a conexão não Sucedeu, mas ENTENDA que são 3 coisas separadas : para alguém conseguir conectar num database Oracle, o LISTENER tem que estar ativo E o serviço Windows tem que estar ativo E o database tem que estar startado e com conexões permitidas…. A ÚNICA maneira Confiável de vc testar se todas as 3 condições estão OK é vc tentar uma conexão, okdoc ???
E fazer uma conexão é algo que pode ser feito com um programa externo criado por vc (há TROCENTAS linguagens de programação que permitem conexão ao database, indo desde .NET até C, de PHP a perl, de Delphi a Cobol, trocentas mesmo!!) que receba como argumentos (ou tenha hard-coded!!) usuário e senha MAS PODE SER feito também pelo próprio sqlplus que vem junto com o client Oracle : ele é o programa PADRÃO PRA ISSO!!!
Sendo assim, DE FORMA ALGUMA é uma EXIGÊNCIA que vc saiba programar numa linguagem qualquer e escreva um programa seu, o TESTE DE CONEXÃO pode SIM SIM ser feito com sqlplus !!! Normalmente para permitir automação vc vai encapsular a chamada ao sqlplus num shell script / .BAT script…. Um exemplo :==> eis meu exemplo de .BAT testando conexão via sqlplus :
C:Usersjlchi_000>type test_xe.bat
@echo off
(
echo system/oracle@xe
echo whenever sqlerror exit failure
echo select ‘XE disponível!!’ from dual;
) | sqlplus -secho %ERRORLEVEL%
C:Usersjlchi_000>==> ok : executo o .BAT com o meu banco XE startado E com conexões permitidas E com listener Ativo E com banco registrado no Listener :
C:Usersjlchi_000>test_xe
‘XEDISPONÍVEL!!’
XE disponível!!
0
==> aí paro o banco, recebo como resultado :
C:Usersjlchi_000>test_xe
ERROR:
ORA-12560: TNS:erro de adaptador de protocoloSP2-0306: Opção inválida.
Uso: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]]
em que ::= [/][@]
::= [][/][@]
SP2-0306: Opção inválida.
Uso: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]]
em que ::= [/][@]
::= [][/][@]
SP2-0157: Conexão ao ORACLE impossível após 3 tentativas, saindo SQL*Plus
1C:Usersjlchi_000>
Blz ????? É um .BAT script bê-a-bá mesmo, bem simples, mas que eventualmente serve de ponto de partida pra vc….
===>>> NÃO É OBRIGATÓRIO, mas se vc quiser programar e escrever um programinha seu, ele PODE SER SIM feito em Java…. Respondendo então a sua pergunta sobre o código Java que vc mostra, eu NUNCA O VI ANTES mas numa olhada por cima ele parece estar OK : CONFIRME que vc tem o JDBC for Oracle ** da Oracle Mesmo ** instalado (esse negócio de “import oracle.jdbc.pool.*;” que ele faz é coisa de jdbc ** RECENTE **, posterior ao 10g iirc!!), REVEJA teus settings de CLASSPATH e ** CONFIRME ** variáveis de ambiente, que ele deve funcionar OK pelo que vejo…. Mas se teus skills de Java não são assim tããão afiados, RELEMBRO NOVAMENTE que vc Não É Obrigado a programar pra fazer teste de conexão E QUE se não manjas de Java tem Trocentas outras linguagens possíveis, use uma que conheça melhor….
[]s
Chiappa
7 de agosto de 2017 at 8:12 pm #108898airoospParticipantChiappa,
É possível postar aqui no fórum um print da tela?
Obrigado.
Airton
7 de agosto de 2017 at 8:32 pm #108899José Laurindo ChiappaModeratorQue eu saiba não, nunca vi nenhuma ferramenta pra isso aqui neste fórum, então acho que não dá : assim, quando precisei, subi a imagem pra um dos muitos serviços de compartilhamento gratuito (como http://picpaste.com/ , http://tinypic.com/ , http://imgur.com/ ou https://www.mediafire.com/#myfiles , o Google Drive, entre n outros) e depois informo a url para acesso numa nova msg…
[]s
Chiappa
7 de agosto de 2017 at 11:30 pm #108901airoospParticipantChiappa,
Segue em anexo arquivo.
Na imagem acima, é possível fazer a execução do tnsping, mas não retorna nada e isso ficou por horas.
Attachments:8 de agosto de 2017 at 2:47 am #108902José Laurindo ChiappaModeratorEntã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.oraUsado 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 optionsSQL> 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.oraTNS-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 falhouC: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….
8 de agosto de 2017 at 4:36 am #108903José Laurindo ChiappaModeratorOpa :adicionalmente, eu tava pesquisando outro assunto no metalink/My Oracle Support e encontrei na nota “Can JDBC Thin Driver Connect Using Tns Entry in tnsnames.ora File” (Doc ID 333686.1) um fonte ** extremamente ** parecido com esse que vc cita (até o nome é o mesmo), deve ser ele então que foi usado…
Como eu expliquei/demonstrei *** Não é Obrigatório *** vc escrever coisa alguma, mas apenas como Demonstração eu copiei/colei o fonte do metalink/MyOracleSupport, Compilei e executei o tal programa, pra mim foi normal, então ** OU ** vc não setou as variáveis de ambiente corretas (** principalmente ** a CLASSPATH, é típica essa msg de “classe nomedoprogramafonte não encontrada quando neguim ESQUECE de colocar o diretório atual no classpath, mas TAMBÉM a variável PATH apontando pro java.exe E pro javac.exe), ** OU ** vc não informou o local onde o TNSNAMES.ORA tá gravado (acho que não tinha ficado muito Claro na página de internet que o argumento que vc deve passar pro java -D é justamente o path completo onde tá o TNSNAMES.ORA), ** OU ** vc tá tentando usar um driver Oracle jdbc muito antigo, que não aceita esse método oracle.jdbc.pool.* que o fonte tenta usar….
C:Usersjlchi_000>tnsping orcl12c
TNS Ping Utility for 64-bit Windows: Version 12.2.0.1.0 – Production on 07-AGO-2017 21:11:32
Copyright (c) 1997, 2016, Oracle. All rights reserved.
Arquivos de parâmetros usados:
C:apporacle12cR2product12.2.0dbhomenetworkadminsqlnet.oraUsado o adaptador TNSNAMES para resolver o apelido
Tentativa de contatar (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = Dell15Rse)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL12c)))
OK (0 ms)C:Usersjlchi_000>
===> CONFIRMANDO que o TNSNAMES tá aqui E com o conteúdo correto :
C:Usersjlchi_000>echo %ORACLE_HOME%
C:apporacle12cR2product12.2.0dbhomeC:Usersjlchi_000>dir C:apporacle12cR2product12.2.0dbhomenetworkadmintnsnames.ora
O volume na unidade C não tem nome.
O Número de Série do Volume é 340C-E794Pasta de C:apporacle12cR2product12.2.0dbhomenetworkadmin
27/07/2017 11:34 1.109 tnsnames.ora
1 arquivo(s) 1.109 bytes
0 pasta(s) 310.754.426.880 bytes disponíveisC:Usersjlchi_000>type C:apporacle12cR2product12.2.0dbhomenetworkadmintnsnames.ora
# tnsnames.ora Network Configuration File: C:apporacle12cR2product12.2.0dbhomenetworkadmintnsnames.ora
# Generated by Oracle configuration tools.XE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = XE)
)
)ORCL12C =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = Dell15Rse)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL12c)
)
)C:Usersjlchi_000>
==> Ó as versões de Java que tenho, recentes :
C:Usersjlchi_000>java -version
java version “1.8.0_144”
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) Client VM (build 25.144-b01, mixed mode, sharing)C:Usersjlchi_000>javac -version
javac 1.8.0_112==> E quanto à versão de driver jdbc Oracle, Recente também , veja pelo CLASSPATH :
C:Usersjlchi_000>set CLASSPATH=C:apporacle12cR2product12.2.0dbhomejdbclibojdbc8.jar;.
==> como eu disse antes, o PONTO no fim do CLASSPATH é *** FUNDAMENTAL **, para o Java saber que é no diretório corrente (é o que o ponto representa) que deve ser procurado o .class a ser executado…. Eis o fonte que copiei e colei da nota metalink :
C:Usersjlchi_000>type ThinTnsnames.java
import java.sql.*;
import oracle.jdbc.pool.*;public class ThinTnsnames {
// private static OracleConnection connection = null;
static String sql = null;public static void main(String[] args) {
String entry_name = args [0];
String userId = args [1];
String password = args [2];
test (entry_name, userId, password);
}public static void test (String entry_name, String userId, String password) {
Connection pconnection = null;
try {
String l_url = “jdbc:oracle:thin:@” + entry_name;
System.out.println( ” Connection string = ” + l_url );OracleDataSource ods = new OracleDataSource();
ods.setUser(userId);
ods.setPassword(password);
ods.setURL(l_url);
pconnection = ods.getConnection ();
version (pconnection );
}
catch(SQLException e) {
e.printStackTrace();
}
finally {
try {
if (pconnection != null )pconnection .close();
}
catch(Exception e) {
e.printStackTrace();
}
}
}public static void version (Connection pconnection) {
try {
DatabaseMetaData dmd = pconnection.getMetaData();
System.out.println(“DriverVersion: [“+dmd.getDriverVersion()+”]”);
System.out.println(“DriverMajorVersion: [“+dmd.getDriverMajorVersion()+”]”);
System.out.println(“DriverMinorVersion: [“+dmd.getDriverMinorVersion()+”]”);
System.out.println(“DriverName: [“+dmd.getDriverName()+”]”);
System.out.println(“URL: [“+dmd.getURL()+”]”);
System.out.println(“UserName: [“+dmd.getUserName()+”]”);
System.out.println(dmd.getDatabaseProductName() );
System.out.println(dmd.getDatabaseProductVersion() );String ver;
ver = System.getProperty(“java.version”);
System.out.println(“The JDK version is ” + ver);
}
catch(SQLException e) {
e.printStackTrace();
}}
}==> Compilo o caretinha :
C:Usersjlchi_000>javac ThinTnsnames.java
==> Sucesso, veja que gerou legal :
C:Usersjlchi_000>dir Thin*
O volume na unidade C não tem nome.
O Número de Série do Volume é 340C-E794Pasta de C:Usersjlchi_000
07/08/2017 20:57 2.615 ThinTnsnames.class
07/08/2017 20:54 1.948 ThinTnsnames.java
2 arquivo(s) 4.563 bytes
0 pasta(s) 310.754.324.480 bytes disponíveis==>> É só executar, PASSANDO os argumentos corretos na ordem correta :
C:Usersjlchi_000>java -Doracle.net.tns_admin=C:apporacle12cR2product12.2.0dbhomenetworkadmin ThinTnsnames orcl12c system oracle
Connection string = jdbc:oracle:thin:@orcl12c
DriverVersion: [12.2.0.1.0]
DriverMajorVersion: [12]
DriverMinorVersion: [2]
DriverName: [Oracle JDBC driver]
URL: [jdbc:oracle:thin:@orcl12c]
UserName: [SYSTEM]
Oracle
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 – 64bit Production
The JDK version is 1.8.0_144C:Usersjlchi_000>
===> okdoc ?? Agora vou informar uma host string (XE) que está no TNSNAMES.ORA em questão da minha máquina MAS cujo database neste momento tá inacessível :
C:Usersjlchi_000>tnsping xe
TNS Ping Utility for 64-bit Windows: Version 12.2.0.1.0 – Production on 07-AGO-2017 21:30:03
Copyright (c) 1997, 2016, Oracle. All rights reserved.
Arquivos de parâmetros usados:
C:apporacle12cR2product12.2.0dbhomenetworkadminsqlnet.oraUsado o adaptador TNSNAMES para resolver o apelido
Tentativa de contatar (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = XE)))
TNS-12541: TNS:não há listenerC:Usersjlchi_000>java -Doracle.net.tns_admin=C:apporacle12cR2product12.2.0dbhomenetworkadmin ThinTnsnames xe system oracle
Connection string = jdbc:oracle:thin:@xe
java.sql.SQLRecoverableException: Erro de ES: The Network Adapter could not establish the connection
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:774)
at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:688)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:691)
at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:384)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:273)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:198)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:176)
at ThinTnsnames.test(ThinTnsnames.java:25)
at ThinTnsnames.main(ThinTnsnames.java:12)
Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection
at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:523)
at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:521)
at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:660)
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:286)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1438)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:518)
… 9 more
Caused by: java.io.IOException: Connection refused: connect, socket connect lapse 1008 ms. localhost/0:0:0:0:0:0:0:1 1521 0 2 true
at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:209)
at oracle.net.nt.ConnOption.connect(ConnOption.java:161)
at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:470)
… 14 more
Caused by: java.net.ConnectException: Connection refused: connect
at sun.nio.ch.Net.connect0(Native Method)
at sun.nio.ch.Net.connect(Unknown Source)
at sun.nio.ch.Net.connect(Unknown Source)
at sun.nio.ch.SocketChannelImpl.connect(Unknown Source)
at java.nio.channels.SocketChannel.open(Unknown Source)
at oracle.net.nt.TimeoutSocketChannel.(TimeoutSocketChannel.java:81)
at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:169)
… 16 moreC:Usersjlchi_000>
[]s
Chiappa
-
AuthorPosts
- You must be logged in to reply to this topic.