プロのOracle Databaseの復旧サービスを提供 携帯番号: +86 13764045638 メール:service@parnassusdata.com

ORACLEで現れる中データブロック損害/ベッドブロック診断corruptionがいろいろあるが症状に分けると、だいたいは以下の通り:
  • ORA-01578エラ
  • ORA-600[61xx]エラ
  • ORA-600[3339]あるいはORA-600[3398]
  • ORA-600[2130],ORA-600[2845],ORA-600[4147]エラなど
  • SELECT で誤ったデータを探し出す
  このようなトラブルに対して、以下のような方法を使ってください: 1、データベースが起動したままであれば、そのブロック損害/ベッドブロックが存在しているデータファイル番号、ブロック番号を判断する必要がある。そして具体的なオブジェクトの位置を探し出す(テーブルあるいはインディクス)。ORA-1578エラあるいはORA-600の変数情報を参考して、以下のようなSQLを使ってください。  

SELECT tablespace_name, segment_type, owner, segment_nameFROM dba_extentsWHERE file_id = &fileidand &blockid between block_id AND block_id + blocks - 1;

  2、前のステップに獲得したSEGMENT_TYPEを確認して、以下のSEGMENT_TYPEの場合は再構造できる:
  • index
  • データが獲得できるテーブルあるいは再構造できるテーブル
  • SYSTEMというロールバックセグメントを除いたすべてのロールバックセグメント
  • 順列セグメント, sort segment
  • 一時的なテーブル
    3、 ステップに挙げたものに属していなければ、以下の情報を確認してください:
  • データベースはアーカイブモードか
  • export /sqlldrを含んで、テーブルのバックアップデータがあるか
  • NOT NULLに基づいたインディクスがあるか
  • そのようなインディクスがあれば、UNIUQEか
  4、前にこのリポジトリに同じようことがあったか。少し経験があるDBAなら、alert.logから大体の事情を把握できる。前に同じことがあれば、引き続きのアドバイスを参考してください。   5、アーカイブモードの場合であれば、今後の診断のために、アーカイブredoとオンラインログを格納してください。そうでなければ、すべてのオンラインログを格納してください。   6、できれば10210,10211及び10212 eventを作成して、エラの源を捕まえてください。現場エンジニアがOracle自身でトラブルを引き起こしたわけではないと疑っていれば、トラブルがあったデータブロックをダンプして、OS、ストレージ及びボリューム管理器のログの情報を考えて分析してください。メモリー損害であれば、_db_block_cache_protectだと考えてください。けど、すべてのプラットフォームも _db_block_cache_protectを支持しているわけではない。   7、ある場合に、同じようなことが再び現れないように、アーカイブモードを使うことを勧めている。   必要とする証拠   1、 ORACLE TRACEもALERTファイルもこれらのトラブルを診断する源となる。そしてこれらの報告に別のデータブロックに損害を含んでいるかを確認する。 2、OSの視角でこわれたブロックをダンプしてください Unix: dd if=badfile.dbf count=5 bs=2048 skip=75     引き続きのアドバイス   1、traceあるいはredoログをダンプすることを分析するときに、ユーザーの予想を調整してください:
  • 私たちはリカバリすることではなく、原因を判断することを優先している。
  • すべての証拠があって、決定的な結論を下せない。
    2、時々、メモリーでデータブロックがこわれた、例えばORA-600[3398]、このような状況を検証するために:
  • analyze table X validate structure cascade;
  • alter system flush buffer_cache;
  • OS視角でそのデータブロックをダンプして分析できる
  後始末処置   1、本質を探す、例えば:
  • すべての損害がある設備あるいはコントロールに現れる。
  • 四つのブロックごとに一つのベッドブロックが現れる
  • データブロック自身問題内容が、現れる位置が間違えた
  • データブロックの一部が健康であった、ほかのところに違っている
  2、 損害/ベッドブロックを避けてテーブルを再構造する: 10231 level 10トランザクションで全テーブルスキャンのCTASを実行する ROWIDを構造することで、ベッドブロックにアクセスすることを避ける。   3、10210、10211及び10212で、そしてデータブロックをアップグレードしてください。10231 eventも考えてください   ほかのツール   他にもdul、oranum、orapatch、bbedなど、Oracle内部的なツールも使用可能である