• 締切済み

ブロック障害でEXPやDELETEが失敗します

はじめまして! ある日、急に以下のメッセージが出てしまい、エクスポートができなくなってしまいました。 EXP-00056: Oracleエラー1578が発生しました。 ORA-01578: Oracleデータ・ブロックに障害が発生しました(ファイル番号99、ブロック番号99999) ORA-01110: データ・ファイル99: 'D:\ORACLE\ORADATA\xxxxx\yyyyyy.DBF' また、DELETEをかけるとやはり、データ・ブロック障害とのことで不正終了します。 障害になってしまったところのデータはあきらめますが、それ以外のデータだけでも 何とか取り出したいです。たいへん困惑しております。 どうかよろしくお願いいたします。

みんなの回答

  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.1

こんにちわ。 ブロック破損ですか。 Oracle の場合、DBMS_REPAIR Package を使用する事で、破損ブロックを除外して データにアクセスさせる事ができます。 詳細は、この辺のマニュアルを確認して下さい。 http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19224-02/repair.htm Oracle のバージョンによって、使い方も変わってくる可能性がありますので、 バージョン毎のマニュアルを必ずご確認下さい。 http://www.oracle.com/technetwork/jp/indexes/documentation/index.html 大まかな手順としては、こんな感じです。 1) DBMS_REPAIR.ADMIN_TABLES で、障害状況補足用テーブル (REPAIR_TABLE, ORPHAN_KEY_TABLE) の作成 2) DBMS_REPAIR.CHECK_OBJECT で、破損オブジェクトの確認   → 破損オブジェクトが索引であれば、Drop&Create で復旧 3) DBMS_REPAIR.FIX_CORRUPT_BLOCKS で破損ブロックをマーク 4) DBMS_REPAIR.DUMP_ORPHAN_KEYS で破損データブロック関連の索引エントリの確認 5) DBMS_REPAIR.SKIP_CORRUPT_BLOCKS で破損ブロックのスキップ指定 6) 破損ブロックのSKIP して、exp, expdp 等で外部に退避

参考URL:
http://www.oracle.com/technetwork/jp/indexes/documentation/index.html

関連するQ&A