Email: service@parnassusdata.com 7 x 24 online support!
【Oracleデータリカバリ】データブロック損害/こわれたブロック診断
プロの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 クエリで誤ったデータを探し出す
ORACLEデータブロック損害/こわれた診断の解決策は、以下のような方法がある:
1.データベースをオープンしたまま、そのブロック損害とこわれたブロックがあるデータファイル番号、ブロック番号を判断する必要があって、それに、具体的な相手に探してください(テーブルあるいはインディクス)。ORA-1578エラとORA-600が報告した変数情報によって、以下のようなSQLを実行してください。
SELECT tablespace_name, segment_type, owner, segment_name
FROM dba_extents
WHERE file_id = &fileid
and &blockid between block_id AND block_id + blocks – 1;
2、前のステップのSEGMENT_TYPEによって, もし以下のようなSEGMENT_TYPEであれば、再構造できる。:
index
データが再び獲得できるテーブルと再構造できるテーブル
SYSTEMを除き、ロールバックセグメント
順列セグメント, sort segment
一時的なテーブル
3、 ステップ2にあるタイプに属していなければ、以下の情報を確認してください:
データベースはアーカイブモードにあるか
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を分析しているときあるいはログをダンプしているときにユーザーの予想とユーザーに示したい情報を調整してください:
まずはリカバリするを判断することじゃなくて、原因を探し出してください
これらの証拠を研究しているが、これらの証拠は決定的な結論を下せるわけではない。
2、時に、データブロックがメモリーでこわれた。例えばORA-600[3398]、この状況をテストするには:
analyze table X validate structure cascade;
alter system flush buffer_cache;
OSでデータブロックをダンプして、分析する。
あとの処置
1、本質をさがす、例えば:
すべての損害はある裸の設備にあるいはコントローラーに起こる。
四つのブロックごとに一つこわれたブロックがある
データブロック自身には問題はないが現れた位置が誤った。
データブロックは何のトラブルもないが、ほかのトラブルが起きた。
2、 存在を避けて、損害/こわれたブロックでテーブルを再構造する:
10231 level 10トランザクションで全テーブルスキャンのCTASを作成する
ROWIDを構造することでこわれたデータブロックをアクセスすることを避けられる。 【データリカバリ】 ROWIDを構造することでバックアップなしにORA-1578、ORA-8103、ORA-1410などのロジック/物理こわれたブロックのトラブルを避けられる
3、 10210、10211および10212を使って、そしてデータブロックをアップグレードして、ブロックのより詳しい情報を獲得する。10231 eventを使ってもいい。
ほかのツール
ほかの選べるツールはdul、oranum、orapatch、bbedなども含んでいる。これらもORACLE内部ツールである。