Oracle Database 10g Enterprise Editionリリース10.2.0.4.0を使用していますが、クエリでエラーが発生し、エラーが発生します
Error: No more data to read from socket
SQLState: null
ErrorCode: 17410
クエリは次のようになります
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
最後のwhereステートメントを削除しようとすると、クエリは正常に実行されます。また、rownumフィルターをより低いレベルのレコードに「削減」しようとすると、クエリは正常に実行されます。
where rownum<10
インターネットで検索したところ、一部のバージョンのOracleではバグのように見えるパラメーター「cursor_sharing」が「similar」に原因がある可能性があることがわかりました。 「完全」に設定しようとしましたが、残念ながら同じエラーが発生します。
Oracle 10gでは、selectステートメントの取得データにバイト単位の制限があるかどうか疑問に思っていましたが、何も見つかりませんでした。 Oracle8iには制限がありますが、Oracle10gには制限がありません。
別のクライアント(dbvisualizer、squirrel)とOracleコンソールでクエリを実行すると、同じ問題が発生します。
ソケットからのデータがないということは、たとえば、ORA-600やORA-7445でシャドウプロセスがクラッシュしたことを意味します。 user_dump_destディレクトリでトレースファイルを探すか、アラートログでエントリを探します。これはおそらくバグです
これを参照してください: https://blogs.Oracle.com/db/entry/ora-600_troubleshooting
今後のGoogle社員のために
私のケースは、Hibernateを使用するアプリケーションをホストするGlassFish 2サーバーでした。
エラーの原因はOracle DBサーバーの障害であり、glassfishは回復しません。
サーバーを再起動すると問題が解決します