Tnsnames.ora

alguém poderia me ajudar a configurar este arquivo???

eu preciso fazer uma conexão com oracle e estou usando linux…

desculpem os usuários, mas estou criando vários tópicos parecidos, é que cada passo que eu faço tenho um novo problema… acho que depois que eu configurar isto vou conseguir minha conexão

Não precisa configurar tnsnames.ora para conectar no Oracle via JDBC. tnsnames.ora só serve se você for usar o Oracle client para conectar.

então de onde eu tiro o sid da conexão?

sei que no windows deveria criar um dsn através do painel de controle e no linux?

Você está usando um drive JDBC-ODBC no seu client?
Se não estiver, o SID é o “nome da instancia” do seu banco de dados Oracle. Pergunte para o DBA que instalou o Oracle qual é o SID.

[quote=Renatho]então de onde eu tiro o sid da conexão?

sei que no windows deveria criar um dsn através do painel de controle e no linux?[/quote]

Por acaso o SID não fica no arquivo ORACLE_HOME\network\admin\tnsnames.ora ?? eu achei um SID lá, mas qdo tento conectar dá a exceção:

No more data to read from socket

[quote=Renatho]Por acaso o SID não fica no arquivo ORACLE_HOME\network\admin\tnsnames.ora ?? eu achei um SID lá, mas qdo tento conectar dá a exceção:

No more data to read from socket[/quote]

Vamos lá: se você está usando o driver thin do JDBC da Oracle, não precisa configurar tnsnames.ora.
Se ninguem mexeu neste arquivo, vai ter uma entrada deault com um valor de SID que pode não ser a que foi instalada no banco de dados.

Resumindo: esqueça tudo que estiver relacionado a TNS se você estiver usando o driver thin.

Quem instalou a base de dados Oracle não sabe te informar qual é o SID?

Bom, consegui conecta usando thin, agora como faço para conectar usando oci?

OracleDataSource ods = new OracleDataSource();
ods.setURL("jdbc:oracle:thin:login/senha@localhost:1521/XE");
Connection conn = ods.getConnection();

conectei assim, mas agora tenho um sistema que preciso fazer ele rodar aqui e a conexão está assim:

			Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();

conn = DriverManager.getConnection(“jdbc:oracle:oci:XE”, “login”, “senha”);

seria XE também aqui?

aproveitando o embalo do assunto, alguém sabe me dizer a diferença entre oci e thin? qual o mais recomendado?

Ja tinha postado algo sobre isto, mas vamos lá:

  • OCI é um driver JDBC Type 2. Ele usa bibliotecas nativas para cada sistema operacional no lado do client. Para tanto, é necessário a instalação de um “Oracle Client” que pode variar de acordo com a versão do “Oracle Server”. Este driver tende a ser mais performatico, mas tem como desvantagem depender da instalação de um Oracle Client. São poucos os caso que é realmente necessário usar este tipo de driver (se for usar Oracle RAC é um deles). Pode haver problemas de performance no banco utilizando um tipo ou outro, principalmente em Oracle 9i e utilizando o tipo Timestamp.

Resumindo: só use OCI se estiver usando Oracle RAC com Oracle IAS e cluster.

Oyama,

Tenho uma aplicação feita no Jdeveloper 9.0.3 que roda no aplication sever 9iAs e utiliza o Banco Oracle 10g (10.0.4), ele é oracle Rac (possui três nós). Quando cai um nó do RAC o sistema funciona corretamente mas quando cai o serviço deste nó o sistema não consegue fazer o qualquer consulta “como se ficasse com a conexão presa no banco”. O sistema exibe o erro abaixo e depois ele tentar executar alguma consulta e fica preso.

JBO-30003: The application pool (br.com.cvrd.lg.equipagemferroviaria.equipfer.escala.geracao.services.AtividadeRealizadaServices9iAS) failed to checkout an application module due to the following exception:
oracle.jbo.JboException: JBO-29000: Unexpected exception caught: oracle.jbo.DMLException, msg=JBO-26064: Error while closing JDBC statement.
at oracle.jbo.common.ampool.ApplicationPoolImpl.doCheckout(ApplicationPoolImpl.java:1606)
at oracle.jbo.common.ampool.ApplicationPoolImpl.useApplicationModule(ApplicationPoolImpl.java:2353)
at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:427)
at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:398)
at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:393)
at oracle.jbo.client.Configuration.getApplicationModule(Configuration.java:1333)
at oracle.jbo.client.Configuration.createRootApplicationModule(Configuration.java:1292)
at oracle.jbo.client.Configuration.createRootApplicationModule(Configuration.java:1264)
at br.com.cvrd.lg.equipagemferroviaria.equipfer.framework.services.ServiceLocator.getService(ServiceLocator.java:123)
at br.com.cvrd.lg.equipagemferroviaria.equipfer.framework.services.ServiceLocator.getService(ServiceLocator.java:91)
at br.com.cvrd.lg.equipagemferroviaria.equipfer.unilog.thread.AtualizadorCacheTrensUnilog.run(AtualizadorCacheTrensUnilog.java:58)
at java.lang.Thread.run(Thread.java:534)

Detail 0

oracle.jbo.DMLException: JBO-26064: Error while closing JDBC statement.
at oracle.jbo.server.DBTransactionImpl.closeStatement(DBTransactionImpl.java:3757)
at oracle.jbo.server.ViewObjectImpl.closeFreedStatements(ViewObjectImpl.java:7166)
at oracle.jbo.server.ViewObjectImpl.closeStatements(ViewObjectImpl.java:7149)
at oracle.jbo.server.DBTransactionImpl.closeStatements(DBTransactionImpl.java:3891)
at oracle.jbo.server.DBTransactionImpl.closeTransaction(DBTransactionImpl.java:1265)
at oracle.jbo.server.DBTransactionImpl.disconnect(DBTransactionImpl.java:4222)
at oracle.jbo.server.DBTransactionImpl2.disconnect(DBTransactionImpl2.java:306)
at oracle.jbo.server.DBTransactionImpl2.reconnect(DBTransactionImpl2.java:325)
at oracle.jbo.common.ampool.DefaultConnectionStrategy.reconnect(DefaultConnectionStrategy.java:321)
at oracle.jbo.common.ampool.ApplicationPoolImpl.reconnect(ApplicationPoolImpl.java:3324)
at oracle.jbo.common.ampool.ApplicationPoolImpl.recycleUnreferencedInstance(ApplicationPoolImpl.java:1743)
at oracle.jbo.common.ampool.ApplicationPoolImpl.doCheckout(ApplicationPoolImpl.java:1531)
at oracle.jbo.common.ampool.ApplicationPoolImpl.useApplicationModule(ApplicationPoolImpl.java:2353)
at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:427)
at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:398)
at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:393)
at oracle.jbo.client.Configuration.getApplicationModule(Configuration.java:1333)
at oracle.jbo.client.Configuration.createRootApplicationModule(Configuration.java:1292)
at oracle.jbo.client.Configuration.createRootApplicationModule(Configuration.java:1264)
at br.com.cvrd.lg.equipagemferroviaria.equipfer.framework.services.ServiceLocator.getService(ServiceLocator.java:123)
at br.com.cvrd.lg.equipagemferroviaria.equipfer.framework.services.ServiceLocator.getService(ServiceLocator.java:91)
at br.com.cvrd.lg.equipagemferroviaria.equipfer.unilog.thread.AtualizadorCacheTrensUnilog.run(AtualizadorCacheTrensUnilog.java:58)
at java.lang.Thread.run(Thread.java:534)

Detail 0

java.sql.SQLException: No more data to read from socket
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:187)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:229)
at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:982)
at oracle.jdbc.ttc7.MAREngine.unmarshalUB1(MAREngine.java:746)
at oracle.jdbc.ttc7.MAREngine.unmarshalSB1(MAREngine.java:705)
at oracle.jdbc.ttc7.Oclose.receive(Oclose.java:105)
at oracle.jdbc.ttc7.TTC7Protocol.close(TTC7Protocol.java:565)
at oracle.jdbc.driver.OracleStatement.close(OracleStatement.java:824)
at oracle.jdbc.driver.OraclePreparedStatement.privateClose(OraclePreparedStatement.java:346)
at oracle.jdbc.driver.OraclePreparedStatement.close(OraclePreparedStatement.java:280)
at com.evermind.sql.FilterStatement.close(FilterStatement.java:93)
at com.evermind.sql.FilterStatement.close(FilterStatement.java:93)
at com.evermind.sql.StatementBCELProxy.close(StatementBCELProxy.java:68)
at oracle.jbo.server.DBTransactionImpl.closeStatement(DBTransactionImpl.java:3731)
at oracle.jbo.server.ViewObjectImpl.closeFreedStatements(ViewObjectImpl.java:7166)
at oracle.jbo.server.ViewObjectImpl.closeStatements(ViewObjectImpl.java:7149)
at oracle.jbo.server.DBTransactionImpl.closeStatements(DBTransactionImpl.java:3891)
at oracle.jbo.server.DBTransactionImpl.closeTransaction(DBTransactionImpl.java:1265)
at oracle.jbo.server.DBTransactionImpl.disconnect(DBTransactionImpl.java:4222)
at oracle.jbo.server.DBTransactionImpl2.disconnect(DBTransactionImpl2.java:306)
at oracle.jbo.server.DBTransactionImpl2.reconnect(DBTransactionImpl2.java:325)
at oracle.jbo.common.ampool.DefaultConnectionStrategy.reconnect(DefaultConnectionStrategy.java:321)
at oracle.jbo.common.ampool.ApplicationPoolImpl.reconnect(ApplicationPoolImpl.java:3324)
at oracle.jbo.common.ampool.ApplicationPoolImpl.recycleUnreferencedInstance(ApplicationPoolImpl.java:1743)
at oracle.jbo.common.ampool.ApplicationPoolImpl.doCheckout(ApplicationPoolImpl.java:1531)
at oracle.jbo.common.ampool.ApplicationPoolImpl.useApplicationModule(ApplicationPoolImpl.java:2353)
at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:427)
at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:398)
at oracle.jbo.common.ampool.SessionCookieImpl.useApplicationModule(SessionCookieImpl.java:393)
at oracle.jbo.client.Configuration.getApplicationModule(Configuration.java:1333)
at oracle.jbo.client.Configuration.createRootApplicationModule(Configuration.java:1292)
at oracle.jbo.client.Configuration.createRootApplicationModule(Configuration.java:1264)
at br.com.cvrd.lg.equipagemferroviaria.equipfer.framework.services.ServiceLocator.getService(ServiceLocator.java:123)
at br.com.cvrd.lg.equipagemferroviaria.equipfer.framework.services.ServiceLocator.getService(ServiceLocator.java:91)