あるテスト環境でデータの登録時に以下のようなエラーが発生しました。
java.io.IOException: ORA-01115: ファイル6(ブロック番号3050269)からの 読込みI/Oエラーが発生しました。 ORA-01110: データ・ファイル6: 'C:\ORACLE\ORADATA\ORCL\USERS01.DBF' ORA-27091: skgfqio: I/Oをキューできません。 ORA-27070: skgfdisp: 非同期の読込み/書込みに失敗しました。 OSD-04006: ReadFile()に失敗しました。ファイルからの読込みができません O/S-Error: (OS 23) データ エラー (巡回冗長検査 (CRC) エラー) です。
どうもデータファイルに障害が発生したようです。
DBVERIFYでデータファイルをチェックしてみると、やはり以下のようなエラーが発生します。
C:\>dbv file='C:\ORACLE\ORADATA\ORCL\USERS01.DBF' BLOCKSIZE=8192 DBVERIFY: Release 9.2.0.4.0 - Production on 金 Dec 24 15:35:52 2004 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. DBVERIFY - 検証を開始します: FILE = C:\ORACLE\ORADATA\ORCL\USERS01.DBF DBV-00102: FILE(C:\ORACLE\ORADATA\ORCL\USERS01.DBF)でファイルI/Oエラーが 発生しました(verification read操作中)(-2) C:\>
ふむ...こういうときはどうしたらいいんでしょう?
滅多にお目にかからないケースだから対処にも困ります^^;
幸いにもデータベースは正常に稼働しており、ほかのデータには正常にアクセスできる状態だったので、既存のデータをエクスポートし、データベースを作り直して再度インポートするという安直な方法をとったのですが、先にRECOVERコマンドでメディア・リカバリを試した方がよかったかな?
次にこのエラーに出くわしたときは試してみよう^^