web-dev-qa-db-fra.com

oracle: plus de données à lire depuis le socket

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.

5
egesuato

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

5
sensware

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

0
alvaro g