ブロックの破損とは何ですか&ブロックの破損を解決する方法
プライバシーとクッキー
クッキーは、このサイトで使用されています。 続けて、あなたはそれらの使用に同意します。 クッキーの確認方法など、詳細をご覧ください。
毎日のITプロセスでは、ブロック破損の原因には次のような多くの考えられる原因があります:
–不正なIOハードウェア/ファームウェア
–OSの問題
–Oracleの問題
–”回復不可能”または”NOLOGGING”データベースアクションによるリカバリ(この場合、ORA-01578&ORA-01110は予期される動作)
データの破損は、物理的または論理的な破損として現れる可能性があります。
これらすべてを定義しましょう。
●ブロックの物理的な破損は、無効なチェックサムまたはヘッダーとして、またはブロックにすべてのゼロが含まれ その場合、データベースは、その内容に関係なく、ブロックを有効なOracleブロックとして認識しません。 物理的破損(メディア破損ブロック)は、明らかな物理的損傷を受けたブロックです。 Oracleがブロック・ヘッダーのCSNとブロック・フッターのCSNの間に不整合を検出した場合、または予想されるヘッダー構造とフッター構造が存在しないか、またはマ 物理的な破損は、メディアの破損とも呼ばれます。
●論理的な破損は、データブロックに有効なチェックサムなどがある場合に発生します。 しかし、ブロックの内容は論理的に矛盾しています。 論理ブロックの破損は、ブロックの先頭の下(ブロックヘッダの下)の構造が破損している場合にも発生する可能性があります。 この場合、ブロックのチェックサムは正しいですが、ブロック構造が破損している可能性があります。 論理的な破損は、書き込みの失われた結果も発生する可能性があります。詳細は、My Oracle Support Note840978.1を参照してください。
だから?? このエラーメッセージが表示されるのはいつですか? アクセス関連ブロック
–Analyze tableまで、アクセス破損ブロック中にエラーメッセージが表示されないことがあります。. Validate structure
–Dbverify
–CTAS(Create table as Select)
–Export
–RMANプロセス中
これらのデータベース-ユーティリティーはすべて、破損の検出時にV$DATABASE_BLOCK_CORRUPTIONに移入されます。
動作9iおよび10gでは、ビュー v$database_block_corruptionは、RMANバックアップvalidate
破損が修復され(メディア-リカバリ/オブジェクトが削除された)、データベースまたは影響を受けるデータファイルでRman Backup validate/check logical validateコマンドを再実行した
11gでは、この動作が変更されました。データベースユーティリティまたはプロセスがブロック内の破損に遭遇すると、それは自動的にV$DATABASE_BLOCK_CORRUPTIONに記録されます。
修復により、破損したブロックに関するメタデータがビューから削除されます。
次のようなクエリを使用して、破損したブロックを含むオブジェクトを識別することができます
SELECT DISTINCT owner, segment_name FROM v$database_block_corruption dbc JOIN dba_extents e ON dbc.file# = e.file_id AND dbc.block# BETWEEN e.block_id and e.block_id+e.blocks-1 ORDER BY 1,2;
または次のように使用できます:
select * from V$DATABASE_BLOCK_CORRUPTION; << get file#&block from here
SELECT segment_type, segment_name
FROM dba_extents
WHERE file_id = 1
AND block_id < 3840
AND block_id + blocks >= 3840;
SEGMENT_TYPE SEGMENT_NAME
—————– —————————————-
INDEX I_SOURCE1
または使用:
SELECT segment_type, segment_name
FROM dba_extents
WHERE file_id = 1
AND 3840 BETWEEN block_id AND block_id + blocks -1;
または
select 'SELECT tablespace_name, segment_type, owner, segment_name FROM dba_extents WHERE file_id = ' || FILE# || ' and ' || BLOCK# || ' between block_id AND block_id + blocks – 1;' from v$database_block_corruption order by 1;
修復技術には、
–メディア–リカバリのブロック、
–データファイルの復元、
–増分バックアップによるリカバリ、およびブロックnewing、
–エクスポート&インポート
-テーブルの作成が含まれます。. 選択コマンドとして。
忘れないでください、Block media recoveryは物理的な破損を修復できますが、論理的な破損は修復できません。Validateコマンドを使用したブロック破損のチェックRman Validateコマンドの構文:-データベースの場合は
:
RMAN > Validate database;
データファイル用:
RMAN > Validate datafile <file no>,<file no> ;
データブロックの場合:
RMAN > Validate datafile <file no> block <Block no> ;
ブロック-メディア-リカバリ(BMR)用のArchivelogリストアは、複数のチャネルで並行して実行できますが、データファイル/バックアップ-セット-スキャンとリカバリ-セ
目的のブロックを選択するためにどのバックアップを使用するかを選択できるようにするには、block recoverコマンドはrestoreコマンドで使用されるオプ:
FROM BACKUPSET–> restore blocks from backupsets onlyFROM DATAFILECOPY–> restore blocks from datafile copies onlyFROM TAG–>restore blocks from tagged backupRESTORE UNTIL TIME|SCN|LOGSEQ
だから、私たちのdbを検証した後、関連する破損をどのように回復できるか?
明示的なファイル/ブロックを使用したリカバリ:
$rman target/log=rman1。ログ
RMAN> blockrecover datafile 12 block 4207;
破損リストを使用したリカバリ:
$ rman target / log=rman1.log
RMAN> blockrecover corruption list;
破損したデータを検出して防止するための重要なアプローチは、次のMAAのベストプラクティスを実行することです。
•Oracle Data Guardの使用
•Oracle Database block corruption detection parametersの設定
•Recovery Manager(RMAN)によるバックアップおよびリカバリ戦略の実装
metalinkでは、破損の例で概念を深く説明する文書が多すぎます。 だから、私は強くあなたがあなたのシステム上で同様のエラーを打っている間にdocsの下で確認することをお勧めします: