プロが教えるわが家の防犯対策術!

はじめまして!

ある日、急に以下のメッセージが出てしまい、エクスポートができなくなってしまいました。

EXP-00056: Oracleエラー1578が発生しました。
ORA-01578: Oracleデータ・ブロックに障害が発生しました(ファイル番号99、ブロック番号99999)
ORA-01110: データ・ファイル99: 'D:\ORACLE\ORADATA\xxxxx\yyyyyy.DBF'

また、DELETEをかけるとやはり、データ・ブロック障害とのことで不正終了します。
障害になってしまったところのデータはあきらめますが、それ以外のデータだけでも
何とか取り出したいです。たいへん困惑しております。

どうかよろしくお願いいたします。

A 回答 (1件)

こんにちわ。


ブロック破損ですか。

Oracle の場合、DBMS_REPAIR Package を使用する事で、破損ブロックを除外して
データにアクセスさせる事ができます。

詳細は、この辺のマニュアルを確認して下さい。
http://otndnld.oracle.co.jp/document/products/or …

Oracle のバージョンによって、使い方も変わってくる可能性がありますので、
バージョン毎のマニュアルを必ずご確認下さい。
http://www.oracle.com/technetwork/jp/indexes/doc …

大まかな手順としては、こんな感じです。
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/doc …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す