Estou tentando efetuar uma conexão com o Oracle e estou recebendo uma exception.
Estou efetuando os mesmo passos usados no nos manuais e nada. Vejam:
public static void main(String args[]) {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@192.107.14.55:1521:ORCL", "javaApp", "javaapp");
// Prepare a statement to cleanup the emp table
Statement stmt = conn.createStatement ();
ResultSet rs = stmt.executeQuery("select * from usuario");
while (rs.next()) {
System.out.println(rs.getString("idUsuario"));
System.out.println(rs.getString("nome")+"/n");
}
conn.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
Não consigo ver onde pode estar havendo problemas, a exception que eu recebo é a seguinte:
java.sql.SQLException: Exceção de E/S: End of TNS data channel
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:169)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:211)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:324)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:266)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:365)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:260)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at br.com.computeasy.exemplos.OracleConn.main(OracleConn.java:21)
:arrow: Alguém por ai já passou por essa? Será que o problema está na conexão ou é configuração no banco?
Se for em win 2k ou Xp tente o seguinte para verificar seo banco existe com este TNS.
Va na opção servicos do SO e procure o serviço chamado “OracleServiceORCL”.
Exitindo verifique se o mesmo esta iniciado juntamente com ele verifique se o listner tb esta iniciado, o servico do listener é o “Oracle<alguma_coisa>TNSListener” onde o alguma coisa depende da versão do teu banco.
Tudo isso tendo ok abra um prombt do dos e digite TNSADMIN ORCL e de enter para verificar se ele encontra o TNS do banco.
Se der erro terá que configurar o TNS ai sim poderá tentar conectar pelo java do jeito que vc ta tentando.
:arrow: Tem alguma outra forma de conectar no oracle que não seja essa nem via odbc, já que meu sevidor Web vai rodar em Linux, não vai dar pra usar o odbc…
Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@192.107.14.55:1521:ORCL", "javaApp", "javaapp");
// Prepare a statement to cleanup the emp table
Statement stmt = conn.createStatement ();
ResultSet rs = stmt.executeQuery("select * from usuario");
while (rs.next()) {
System.out.println(rs.getString("idUsuario"));
System.out.println(rs.getString("nome")+"/n");
}
conn.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
[/code]
Note que vc ta usando ORCL na URL o banco, mas como vc posta ali em cima do teu arquivo de TNS e nele não consta nenhum TNS como ORCL ta ai o erro.
Fiquei em duvida agora quanto ao nome do teu TNS no teu arquivo conforme tu postou ele se chama CPSY_APP-TCP, mas quando tu testou pelo comando TNSPing tu suou ORANW80.
Vou ir pelo que esta no teu arquivo de TNS intaum tente rodar o comando abaixo. Se não funcionar troque CPSY_APP-TCP na URL por ORANW80.
[quote=“fabgp2001”]… Note que vc ta usando ORCL na URL o banco, mas como vc posta ali em cima do teu arquivo de TNS e nele não consta nenhum TNS como ORCL ta ai o erro.
Fiquei em duvida agora quanto ao nome do teu TNS no teu arquivo conforme tu postou ele se chama CPSY_APP-TCP, mas quando tu testou pelo comando TNSPing tu suou ORANW80.
Vou ir pelo que esta no teu arquivo de TNS intaum tente rodar o comando abaixo. Se não funcionar troque CPSY_APP-TCP na URL por ORANW80. …[/quote]
Não conectou nem com o CPSY_APP-TCP nem ORANW80. O que eu achei estranho é que pelo que vi a string é: jdbc:oracle:thin:@<host>:<porta>:<sid>
Sendo que o sid, não é a string de conexão. Creio que esta string seria usada na conexão OCI.
Não, quando eu tenho usar as strings de conexão o erro é o seguinte
java.sql.SQLException: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=134234112)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))
at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:407)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:152)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:214)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:193)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at br.com.computeasy.exemplos.OracleConn.main(OracleConn.java:22)
Quando eu conecto com o SQL Plus, tenho a seguinte mensagem:
Oracle8 Release 8.0.4.2.0 - Production (5 user, NetWare Bundle)
PL/SQL Release 8.0.4.2.0 - Production
O negócio aki tá um mistério, nunca ralei tanto para conectar com um banco de dados como to ralando com o oracle. O pior é que em casa sempre funcionou sem problemas… :x :x :x
já usei:
classes12.zip
classes111.zip
classes102.zip
Alguém por acaso sabe em que diretório fica o arquivo ocijdbc8.dll
Para fazer a conexão via OCI8.
Já tentei deixar nos seguintes diretórios:
ORA_HOME\bin
JAVA_HOME\bin
JAVA_HOME\lib
SYSTEMROOT
SYSTEMROOT\System32
TOMCAT_HOME\commomlib
ECLIPSE_HOME\
Bom como eu disse antes acho que versão de DB sendo que pelo que o colega informou o banco é um 8.0.4
Sobre o sid ele tentou com ORCL que é a instancia que esta ativa.
Pesquisei no meta link da Oracle e la diz que pode ser que o listener não esteje ativo ou esteje com IP diferente do sid. Vc poderia dar uma olhada nisso.
Para poder entregar o projeto na data, estarei usando em desenvolvimento o driver ODBC, quando eu subir no Server de produção vou ter que me virar.
O problema aki é que o Banco foi instalado pelo pessoal de rede e não tem ninguém que tenha um conhecimento profundo de Oracle. Até hoje eu só desenvolvi, nunca tinha me preocupado com o negócio da administração do banco…
Pessoal, por enquanto valeu. Se alguém por ai tiver qualquer coisa, posta ai!