Keine weiteren Daten zum Lesen von Socket-Fehlern
Sind wir mit Oracle als Datenbank für unsere Web-Anwendung. Die Anwendung läuft auch die meiste Zeit, aber bekommen wir diese "Keine weiteren Daten aus socket zu Lesen" Fehler.
Caused by: java.sql.SQLRecoverableException: No more data to read from socket
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1142)
at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1099)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:288)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:523)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:863)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1153)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1275)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3576)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3620)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1869)
at org.hibernate.loader.Loader.doQuery(Loader.java:718)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:270)
at org.hibernate.loader.Loader.doList(Loader.java:2449)
... 63 more
Wir verwenden spring, hibernate und ich haben Folgendes für Sie die datasource in mein applciation Kontext-Datei.
<bean class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close" id="dataSource">
<property name="driverClassName" value="${database.driverClassName}" />
<property name="url" value="${database.url}" />
<property name="username" value="${database.username}" />
<property name="password" value="${database.password}" />
<property name="defaultAutoCommit" value="false" />
<property name="initialSize" value="10" />
<property name="maxActive" value="30" />
<property name="validationQuery" value="select 1 from dual" />
<property name="testOnBorrow" value="true" />
<property name="testOnReturn" value="true" />
<property name="poolPreparedStatements" value="true" />
<property name="removeAbandoned" value="true" />
<property name="logAbandoned" value="true" />
</bean>
Ich bin mir nicht sicher, ob dies ist, weil der Fehler in der Anwendung, Datenbank-Fehler oder Netzwerkfehler.
Sehen wir Folgendes auf dem oracle-logs
Thu Oct 20 10:29:44 2011
Errors in file d:\oracle\diag\rdbms\ads\ads\trace\ads_ora_3836.trc (incident=31653):
ORA-03137: TTC protocol internal error : [12333] [4] [195] [3] [] [] [] []
Incident details in: d:\oracle\diag\rdbms\ads\ads\incident\incdir_31653\ads_ora_3836_i31653.trc
Thu Oct 20 10:29:45 2011
Trace dumping is performing id=[cdmp_20111020102945]
Thu Oct 20 10:29:49 2011
Sweep [inc][31653]: completed
Sweep [inc2][31653]: completed
Thu Oct 20 10:34:20 2011
Errors in file d:\oracle\diag\rdbms\ads\ads\trace\ads_ora_860.trc (incident=31645):
ORA-03137: TTC protocol internal error : [12333] [4] [195] [3] [] [] [] []
Incident details in: d:\oracle\diag\rdbms\ads\ads\incident\incdir_31645\ads_ora_860_i31645.trc
Thu Oct 20 10:34:21 2011
Oracle-Version : 11.2.0.1.0
Kommentar zu dem Problem - Öffnen
Es sieht aus wie Ihre Oracle-server unsanft getrennt Ihre Anwendung Verbindung, während er Las einige Sortieren der Ergebnismenge.
Dieser Fehler wahrscheinlich Auftritt, in Anwendungen, die eine Datenbank verwenden verbindungen pool. Wenn die Anwendung aktiviert sich eine Verbindung timed out oder wurde staled, und verwendet es, um eine Verbindung zu der Datenbank, tritt dieser Fehler auf.
@User67546 ich habe den Verbindungs-pooling, Konfiguration, überprüfen Sie die Verbindung bevor Sie verwendet werden. Sollte nicht ignorieren, dass die veralteten Anschlüsse
Erhalten Sie genau die gleichen Fehler und stack?
Stichworte für google: in Deutsch: "Keine weiteren Daten aus Socket zu lesen"
InformationsquelleAutor der Frage Kathir | 2011-10-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für Fehler wie diese sollten Sie beteiligen sich an oracle support. Sie leider nicht erwähnen, welche oracle Version Sie benutzen. Der Fehler kann im Zusammenhang mit optimizer bind peeking. Je nach oracle-version verschiedene Problemumgehungen anwenden.
Haben Sie zwei Möglichkeiten, um diese Adresse:
_optim_peek_user_binds = false
Natürlich Unterstrich Parameter sollte nur gesetzt werden, wenn empfohlen von oracle support
InformationsquelleAutor der Antwort steve
Wir waren vor demselben problem, wir beschlossen, es durch die Erhöhung
initialSize
undmaxActive
Größe des verbindungspools.Können Sie überprüfen, dieser link
Vielleicht hilft dies ja jemanden.
InformationsquelleAutor der Antwort fyelci
Versuchen, zwei Dinge:
java/jdk1.6.0_31/jre/lib/security/Java.security
ändernsecurerandom.source=file:/dev/urandom
zusecurerandom.source=file:///dev/urandom
InformationsquelleAutor der Antwort Richard
Herabstufung der JRE von 7 auf 6 das Problem behoben für mich.
InformationsquelleAutor der Antwort johndemic
Ich hatte das gleiche problem. Ich war in der Lage, das problem zu lösen von der Anwendung her, unter dem folgenden Szenario:
Benutzte ich die database connection pooling
apache tomcat-jdbc
:Können Sie die folgende Konfiguration der Parameter als Referenz:
Diese Konfiguration ausreichend war, um den Fehler zu beheben. Dies funktioniert gut für mich in dem Szenario, das oben erwähnt ist.
Weitere details über die Installation des apache tomcat-jdbc: https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html
InformationsquelleAutor der Antwort JUAN CALVOPINA M
Einem anderen Fall: Wenn Sie das senden von Datum-Parameter eines parametrisierten sql, stellen Sie sicher, dass Sie gesendet
java.sql.Timestamp
und nichtjava.util.Date
. Ansonsten bekommst duBeispiel Anweisung:
In unserem java-code, wir verwenden
org.apache.commons.dbutils
und haben wir die folgenden:Oben wurde nicht, bis wir verändert das Datum Parameter
java.sql.Timestamp
InformationsquelleAutor der Antwort chrisl08
Dies ist ein sehr low-level-exception, die ORA-17410.
Kann es passiert aus verschiedenen Gründen:
Einem temporären problem auf Vernetzung.
Falsch JDBC-Treiber version.
Einige Probleme mit speziellen Datenstruktur (Datenbank-Seite).
Datenbank Fehler.
In meinem Fall war es ein Fehler, die wir Treffer in der Datenbank, die gepatcht werden muss.
InformationsquelleAutor der Antwort devwebcl
Ja, wie @ggkmath sagte, manchmal ein guter Alter Neustart ist genau das, was Sie brauchen. Wie bei "mit dem Autor Kontakt aufnehmen und ihn zu haben, schreiben die app, mittlerweile warten" ist keine option.
Dies geschieht, wenn eine Anwendung nicht geschrieben, (noch) nicht in einer Weise, dass Sie behandeln können, startet der zugrunde liegenden Datenbank.
InformationsquelleAutor der Antwort Jaroslav Záruba
Bekam ich diese Fehlermeldung, dann neu gestartet, mein GlassFish server, connection-pools zwischen meine client-app und die Datenbank, und der Fehler ging Weg. Also, versuchen Sie einen Neustart des application-Servers, falls zutreffend.
InformationsquelleAutor der Antwort ggkmath