Erro ao conectar no Oracle

29 respostas
paulohbmetal

E aí galera, blz?

Bom é o seguinte, estou com um problema ao conectar em minha base de trabalho Oracle, via JDBC.Tipo assim, na base de teste conecto que é uma blz, mas na outra não… Vcs sabem se existe uma forma de desabilitar a conexão JDBC no Oracle? Pois ando achando que um “mané” andou fazendo isso.

Segue o erro:

java.sql.SQLException: Exceção de E/S: Connection refused(DESCRIPTION=(ERR=12518)(VSNNUM=150999297)(ERROR_STACK=(ERROR=(CODE=12518)(EMFI=4))(ERROR=(CODE=12533)(EMFI=4))))

A Paz!!

29 Respostas

boaglio

Pelo código do erro o listener do seu banco de dados está fora do ar.

http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96525/tnsus.htm#1007844

paulohbmetal

E o pior é que não está… :frowning:

Já até dei um restart no banco…

A Paz!!

brlima

Ou o caminho do teu banco ta errado… Pelo menos comigo acontece direto isso…rssss

F

Olá,

Normalmente esse ocorre quando tem um erro nos parametros passados na conexao com o banco. Pode ser o nome do servico (sid), o protocolo usado, ou mesmo nao ter um listener atendendo pro sid informado.
Da uma olhada nisso, e tenta checar quais nomes tem no TNSADMIN.ORA que ta dentro de:

ORACLE_HOME/network/admin

]['s

paulohbmetal

Cara, tem o SID sim…

O pior é que o banco de teste(que consigo conectar) é um export do banco de trabalho, e foi criado nas “mesmas” condições…

Engraçado é que ora dá o erro ora “trava”, ou melhor, nunca esperei para saber se retorna o erro, mais demora…

A Paz!!

F

Olá,

Tu consegue conectar com o SQL Plus usando os mesmo parametros?

]['s

paulohbmetal

Consigo… :frowning:

Só via JDBC que não consigo…

A Paz!!

F

paulohbmetal:
Consigo… :frowning:

Só via JDBC que não consigo…

A Paz!!

So vejo uma possibilidade.

O teu alias do banco ser diferente do SID e tu ta usando o alias pra conectar. No SQL Plus isso funciona, mas no JDBC nao presica ser o SID mesmo. Da uma olhada no arquivo TNSNAMES.ORA procura pela entrada igual ao nome que tu usou no SQL Plus pra conectar. Da uma olhada qual o valor da propriedade SIC ou CONNECTION_NAME. Se estiverem diferente do ALIAS usa essa no JDBC e ve o que da.

]['s

paulohbmetal

Olha minhas configurações:

MEU_ALIAS = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) (CONNECT_DATA = (SID = MEU_SID) (SERVER = DEDICATED) ) )

Não tem nenhuma destas propriedades que vc falou…

A Paz!!

boaglio

Paulo,

De acordo com o seu TNSNAMES o banco de dados que está tentando conectar está na sua máquina mesmo(localhost).

Está correta essa configuração?

paulohbmetal

Não, não… É que eu peguei lá no servidor e lá está como localhost…

Foi mal, esqueci de avisar… :oops:

A Paz!!

boaglio

Paulo,

Se esse arquivo TNSNAMES é do servidor, ele não interessa pra gente, o que
interessa mesmo é o LISTENER.ORA.

Qual é o arquivo TNSNAMES.ORA da sua máquina?

F

Conforme o Boaglio falou o TNSNAMES é do cliente. Confere se o MEU_ALIAS esta igual ao MEU_SID.
Se nao estiver tenta usar o MEU_SID pra conectar.

]['s

paulohbmetal

Cara,

No cliente(minha máquina) está diferente, e no servidor tem um igual e outro diferente. Ou seja, no servidor existem dois ALIAS pro mesmo SID, agora no cliente tem um ALIAS para um SID mas os dois são diferentes...

A Paz!!

F

paulohbmetal:
Cara,
No cliente(minha máquina) está diferente, e no servidor tem um igual e outro diferente.

A Paz!!

E tu tento conectar usando o que ta no MEU_SID do cliente?

]['s

paulohbmetal

Já e deu erro…

Tentei também com o ALIAS e … nada.

:frowning:

A Paz!!

boaglio

Paulo,

Poste o SEU arquivo tnsnames.ora aqui para eu te passar os comandos para vc testar a conexão.

paulohbmetal

Vc quer dizer o MEU com os valores reais sem MEU_ALIAS e MEU_SID?

A Paz!!

paulohbmetal

Olha aí:

BANCO.EMPRESA.COM.BR =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = SERVER)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = banco)
    )
  )

A Paz!!

boaglio

Para testar a conexão da sua máquina ao servidor abra uma janela do DOS e digite o comando:

tnsping BANCO.EMPRESA.COM.BR 10

ou

tnsping BANCO 10

Se o listener no servidor estiver no ar, vai dar uma resposta assim:

TNS Ping Utility for 32-bit Windows: Version 8.1.7.0.0 - Production on 04-MAY-2005 17:08:54

(c) Copyright 1997 Oracle Corporation.  All rights reserved.

Attempting to contact (ADDRESS=(PROTOCOL=TCP)(Host=SERVER)(Port=1521))
OK (60 msec)
OK (10 msec)
OK (0 msec)
OK (0 msec)
OK (10 msec)
OK (0 msec)
OK (10 msec)
OK (10 msec)
OK (0 msec)
OK (0 msec)

Se der erro nesse passo o Listener do servidor está fora.

paulohbmetal

Comando executado com sucesso, mas conexão não estabelecida… :frowning:

Cara, mas que nhaca é essa hein?!

A Paz!!

boaglio

Paulo, se o comando TNSPING funcionou significa que:

:arrow: no servidor o serviço listener está no ar

Mas não significa que:

:arrow: o banco de dados está no ar
:arrow: o listener está configurado corretamente (normalmente está).

Para fazer o teste final faça o comando:

sqlplusw seu_usuario/sua_senha@BANCO

ou

sqlplus seu_usuario/sua_senha@BANCO

E verifique se vc consegue conectar.

Depois de tentar isso, informe aqui q resultado deu…

paulohbmetal

Brother, como já disse, eu conecto via SQL plus e também pelo PLSQL Developer…

Só via JDBC quer não conecto…Aqui estamos trabalhando normal com nossas rotinas que não são Java, entende?

A Paz!!

F

paulohbmetal:
Brother, como já disse, eu conecto via SQL plus e também pelo PLSQL Developer…

Só via JDBC quer não conecto…Aqui estamos trabalhando normal com nossas rotinas que não são Java, entende?

A Paz!!

Paulo,

Coloca aqui entao o codigo que tu ta usando pra conectar via JDBC.

[]'s

paulohbmetal
try{
    DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
            
    Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@servidor:1521:banco", "usuario", "senha");                        
            
    conn.close();
    }catch(SQLException SQLe){
        SQLe.printStackTrace();
    }

Mas como disse, eu conecto na base de teste com o mesmo código e só altero o servidor na string de conexao.

A Paz!!

boaglio

Paulo,

Não sei se o seu servidor está usando MTS (Multi-threaded Server), pois se tiver o Direct Handoff deve estar configurado corretamente.

Sugiro que vc compare os arquivos LISTENER.ORA dos dois servidores.

paulohbmetal

Onde ele fica?

A paz!!

boaglio

Esse arquivos no mesmo diretório que os arquivos TNSNAMES:

$ORACLE_HOME\network\admin

$ORACLE_HOME é o diretório definido na instalação, normalmente C:\ORACLE

S

paulohbmetal:
Olha minhas configurações:

MEU_ALIAS = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) (CONNECT_DATA = (SID = MEU_SID) (SERVER = DEDICATED) ) )

Não tem nenhuma destas propriedades que vc falou…

A Paz!!

A PAZ!!!

Criado 3 de maio de 2005
Ultima resposta 19 de mar. de 2010
Respostas 29
Participantes 5