Nous utilisons Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 et nous avons une erreur sur une requête qui nous donne l'erreur
Error: No more data to read from socket
SQLState: null
ErrorCode: 17410
La requête est similaire à la suivante
select * from (
select ... <many, MANY fields>
from table
inner join
left outer join
left outer join
inner join
where string1='value1' and string2='value2'
) where rownum > 500 and rownum < 510
Si j'essaie de supprimer la dernière instruction where, la requête fonctionne correctement. De plus, si j'essaie de "réduire" le filtre rownum à un niveau inférieur d'enregistrements, la requête fonctionne correctement:
where rownum<10
En recherchant sur Internet, j'ai trouvé que cela pourrait être causé par le paramètre "cursor_sharing" à "similaire" qui semble bogué sur une version d'Oracle. J'ai essayé de le régler sur "exact" mais malheureusement j'ai la même erreur.
Je me demandais si les données récupérées d'une instruction select pouvaient avoir une limite en octets dans Oracle10g mais je n'ai rien trouvé. J'ai trouvé une limite sur Oracle8i mais rien sur Oracle10g.
Nous avons le même problème lors de l'exécution de la requête sur différents clients (dbvisualizer, squirrel) et sur la console Oracle.
Plus de données de socket signifie que le processus fantôme s'est écrasé, avec un ORA-600 ou ORA-7445, par exemple. Recherchez un fichier de trace dans le répertoire user_dump_dest et/ou une entrée dans le journal des alertes. C'est probablement un bug
Voir ceci: https://blogs.Oracle.com/db/entry/ora-600_troubleshooting
Pour les futurs googleurs,
Mon cas était un serveur glassfish 2 hébergeant des applications en hibernation.
L'erreur est attribuée à l'échec du serveur Oracle DB et glassfish ne récupère pas.
Le redémarrage du serveur résout le problème