Oracleの共通のデータファイルのバックアップとリストア

非ファイルシステムデータ表領域、UNDO_TABLESPACEテーブルスペース、および読み取り専用の一時テーブルスペースtablespace:それは共通のデータファイルを参照します。彼らは、インスタンスがクラッシュし、状況を復元しないデータベースが起動できない自身dbの異常につながることはありません、被害のユーザーデータにアクセスすることができない原因となります。

このようなデータファイルはOPEN状態のデータベースでは、高可用性戦略を使用して復元することができます

10.1通常のデータファイルの破損の影響

通常のデータファイルが破損された後、単にビジネスユーザーは、様々な程度に(クエリを変更して)データにアクセスすることはできません、エラー

ORA-01578、セッションは、データファイルがヘッドクラッシュではない例を行うときのチェックポイントが発生し、破損された場合でも、コマンドの実行を中断されることはありません

--1インスタンスが起動すると、共通のデータファイルは、アクセスできないか、頭部損傷が欠落している場合は、起動コマンドは唯一の状態はマウントし始めたことができます。

共通のデータファイルが破損している場合、データがもう完了したチェックポイントファイルのヘッダであるため--2ランタイムインスタンスは、チェックポイントが発生した後、このデータファイルのステータスを自動的に制御ファイルに設定されていないが、オフ例でありますクラッシュしない、アラート・ログは、チェックポイントは、インスタンスは、もは​​や成功することができ、インスタンスを再起動し、ファイルにアクセスしようとしているデータファイルにORA-00376のエラーにアクセスするには、組立ラインオフエラーログファイルに繋がるないのでORA-01171に失敗しました。

--- 3ランタイムインスタンスを、非正規データファイルブロック・ヘッダ・データ破損した場合、データラインコマンドへのアクセスを必要とする損傷が実行できない原因となり、データファイルは、自動ログオフはありません。

シナリオ1:存在しない見つけtest01.dbf通常のデータファイルを起動すると、マウント状態にデータブロックのみを起動することができます

シーン2:DB状態は唯一の実装を開始し、起動時に共通のデータファイルヘッダtest01.dbfの損傷を見つけます

SQL>起動時の力の
データベースが搭載されています。
ORA-01122:データベースファイル5テール検証チェック
ORA-01110:データファイル5:/u01/app/oracle/oradata/orcl/test01.dbf
ORA-01210:データ・ファイル・ヘッダは、メディア破損してい

オフラインALTERデータベースのデータファイル5オフラインなので、TEST01データ・ファイルを使用する場合、開いたまま、データTEST01データファイルは、開封後はアクセスできませんDB

SQL>データベースのデータファイル5オフラインを改変すること。
SQL> alter database openを。

--1表スペースに格納されているパーティション情報の歴史に属しているデータファイルを破損し、オンラインビジネスを必要としないか、一時的に訪問する必要はありません。

--2破損したデータファイルまたは表スペースは、いくつかの特定のアプリケーションに属しているが、アプリケーションによって使用される他の表スペースの他の比較的独立したが、これはローカルの高可用性データベースを確実にするためにサービスを提供するために、他のアプリケーションを有効にすることができ、まだ健康です

動作中の共通のファイルヘッダデータの破損伝送チェックポイント・データ・ファイル、それが強制的にオフラインにされ、ログイン変える:シナリオ3

ORA-01171:データファイルのチェックポイント5進エラーにオフラインに起因するつもりは
ORA-01122:データベースファイル5は、検証チェック失敗した
データファイル5:ORA-01110を/u01/app/oracle/oradata/orcl/test01.dbf
ORA-01210:データファイル・ヘッダーが破損したメディアであります

すべてのサービスは、このようなtest.t1を照会として、ファイル内のデータにアクセスすることはできません

SQL> SELECT * test.t1から。
:行1でエラー
ORA-00376:ファイル5は、この時点で読み込むことができません
ORA-01110:データファイル5:/u01/app/oracle/oradata/orcl/test01.dbf

今回は、インスタンスを再起動する場合は、DBを開くことができますが、5号は、データファイルをオフラインのままで、手動で復元する必要があります。

SQL>スタートアップ力。
ファイル#1 = 5五$データファイルから*を選択SQL>。
:行1でエラー
ORA-01135:DML /クエリのためにアクセスされたファイル5はオフラインです
ORA-01110:データファイル5:/u01/app/oracle/oradata/orcl/test01.dbf

シナリオ4:領域管理テーブルスペースがローカルの場合は、実行時に、データファイルが破損しているエリア(biimap)管理ブロックを、ビットマップされていません

SQL>テーブルT2(ID番号)表領域のテストを作成します。
ORA-01658:表領域TESTにセグメント用のINITIALエクステントを作成できません

シナリオ5:実行中のインスタンス、テーブル、インデックス、ヘッダセグメント損傷、読み取りする必要が生じるが、ヘッド部の故障の動作を変更します

 

SQL> test.t1(ID、名前)バレスに挿入(2 'XXX')。
ORA-01578:破損したOracleデータ・ブロック(ファイル#5、ブロック#202)
SYS @ ORCL> CONN yhqt / ***
接続されています。
YHQT @ ORCL> yhqtest_1から選択*;
yhqtest_1から*を選択
              *
行1でERROR:
ORA-01578:ORACLEデータブロック破損している(ファイル#10、ブロック#135)
ORA-01110:データファイル10:「/u01/app/oracle/oradata/orcl/yhqt01.dbf "

 

シナリオ6:不良ブロックストアのデータブロック(ファイル#10、ブロック#143)

YHQT @ ORCL> yhqtest_2から選択*;
yhqtest_2から*を選択
              *
行1でERROR:
ORA-01578:ORACLEデータブロック破損している(ファイル#10、ブロック#143)
ORA-01110:データファイル10:「/u01/app/oracle/oradata/orcl/yhqt01.dbf "

- 詳細についてはDSIデータの破損Kuaikuai物理ブロックと論理ブロックの損傷の損傷を参照

10.2バックアップ

 

RMAN>圧縮されたバックアップ・セットの表領域のテストとしてバックアップ;
RMAN-00571:============================================== =============
RMAN-00569:===============エラー・メッセージ・スタックが============== FOLLOWS =
RMAN-00571:============================================= ==============
RMAN-00558:入力を解析すると、コマンドの中にエラーが発生した
構文エラー:RMAN-01009のうちの1つを期待:見つかった「テスト」「二重引用符で囲まれた文字列、識別子、単一の-quoted列」
RMAN-01007:行1列43ファイルに標準入力
RMAN>圧縮されたバックアップ・セット表領域yhqtとしてバックアップ;
18 - 07月19でバックアップを開始
チャネルORA_DISK_1使用
チャネルORA_DISK_1を:圧縮データファイルのフル・バックアップ・セットを開始
チャネルORA_DISK_1:バックアップ・セット内のデータ・ファイル(複数可)を指定する
入力データファイルのファイル番号= 00010名= / U01 /アプリ/オラクル/ oradataに/ ORCL / yhqt01.dbf
始まる片1 18 07月19:チャネルORA_DISK_1
RMAN-00571:= ================================================== ========
RMAN-00569:===============エラー・メッセージ・スタックは=============== FOLLOWS
RMAN-00571: ================================================== =========
RMAN-03009:2019年7月18日17時59分04秒でORA_DISK_1チャネル上のバックアップコマンドの失敗
ORA-19566:ファイルは/ u01 / app / oracle / 0破損ブロックの制限を超えてoradataに/ ORCL / yhqt01.dbf

 

 

SQL>五$ DATABASE_BLOCK_CORRUPTIONから選択*;
    FILE#ブロック#ブロックCORRUPTION_CHANGE#CORRUPTIO
---------- ---------- ---------- ------------ ------ ---------
    10 135 1 0骨折
    5 2199 1 9533291 CORRUPT
    5 2207 1 9579846 CORRUPT
    5 2231 1 9620379 CORRUPT

 

RMAN>ラン{
135へデータ・ファイル10のためMAXCORRUPTセット。
バックアップ表領域yhqt。
} 2> 3> 4>
SET MAX CORRUPT:コマンド実行
18 07月19で開始バックアップ
チャネルORA_DISK_1の使用
チャネルORA_DISK_1を:開始完全データファイル・バックアップ・セット
チャンネルORA_DISK_1:バックアップ・セット内のデータ・ファイル(複数可)を指定する
入力データ・ファイルのファイル番号= 00010名前= / U01 /アプリ/オラクル/ oradataに/ ORCL / yhqt01.dbf
チャネルORA_DISK_1:18- 07月19が始まるピース1
チャネルORA_DISK_1:18- 07月19で終了ピース1
ピースハンドル= / U01 /アプリ/オラクル/ FRA /ORCL/backupset/2019_07_18/o1_mf_nnndf_TAG20190718T180019_gm0jsmbb_.bkpタグ= TAG20190718T180019コメント= NONEの
チャンネルORA_DISK_1:バックアップ設定が完了しました。経過時間:0時00分01秒
18 - 7月- 19でバックアップを終えた
18 - 7月- 19で制御ファイルとSPFILEの自動バックアップを開始
ピースハンドル=は/ u01 / app / oracle / FRA / ORCL /自動バックアップ/ 2019_07_18 / o1_mf_s_1013968820_gm0jsndn_.bkpコメント= NONE
終え制御ファイルとSPFILEの自動バックアップ18 - 7月- 19時

バックアップイメージの複製のためのSYSAUX表スペース

RMAN>コピー表領域SYSAUXとしてバックアップ。
18 - 07月19でバックアップを開始
チャネルORA_DISK_1使用
チャネルORA_DISK_1を:開始データファイルがコピー
入力データ・ファイルのファイル番号= 00002名= / U01 /アプリ/オラクル/ oradataに/ ORCL / SYSAUX01.DBF
出力ファイル名= / U01 /アプリ/オラクル/ FRA / ORCL /データ・ファイルの/ o1_mf_sysaux_gm0jwl05_.dbfタグ= TAG20190718T180153 RECID = 2 STAMP = 1013968917
チャネルORA_DISK_1:午前〇時00分07秒:データファイルは、完全な、経過時間コピー
18 - 7月- 19で終了バックアップを
18〜から開始し、制御ファイルとSPFILEの自動バックアップ7月- 19
枚ハンドル=は/ u01 / app / oracle / FRA / ORCL /自動バックアップ/ 2019_07_18 / o1_mf_s_1013968921_gm0jws37_.bkpコメント= NONE
18 - 7月- 19で終了制御ファイルとSPFILEの自動バックアップ

あなたは、マウント状態またはオープン状態のデータベースは、オープン状態でも、アーカイブ・ログ・モードを開く必要がありますことを確認するために、上記のコマンドRMANコマンドを実行すると。

10.3回復

行するように、データファイルをオフラインでバックアップとリストア(復元またはスイッチ)または増分リカバリREDOログの使用から(コマンドを回復し)、そして最終的にはファイル:正常な心臓のデータファイルを復元することに

通常のデータの主な機能は、ファイルの回復は、開いた状態でデータベースの回復(DB間に利用できない)状態をマウント(ローカルに利用可能DB)回復DBを維持することが可能であってもよいです。データの場合、ファイルヘッダーの破損は、特別な処理が必要な場合があります。

回復の前に10.3.1の準備

そして、マウント状態に入る回復の前提のような重要なデータファイルの回復、正常なパラメータおよび制御ファイルを確実にします。

キーデータファイル破損(システムは、元に戻す)をした場合は、最初の重要なデータファイルを復元する必要があります。

これは、議論の内容は、通常、パラメータファイル、制御ファイル、重要なデータファイルに基づいてケースです。

開いた状態で、共通のデータファイルを修復し、我々は最初のファイルがすでにオフラインで復元されていることを確認する必要があります。

破損したファイルヘッダの10.3.2非回復

限り(欠落しているファイルを含む)をファイルヘッダに損傷がないように、ファイルは、ORA-01210エラーが発生しない、このセクションの手順は、低い回復戦略の利用可能なマウント状態でデータベースを復元するために使用することができ、データベース、組立ラインオフに自動的にできません開いた状態での高可用性のためのポリシーを復元します。

--1はシャットダウンアボートを使用してインスタンスを閉じ

--2実行の起動状態はマウントを始めマウント

--- 3 RMANリストア(またはスイッチ)通常のデータファイルの復元を行います

アーカイブおよびオンライン・ログを使用してデータベースを回復するためにRMANを介してデータを復元するファイルをREDOログ--4

データベースを開く]を開き、データベースの変更--5


例えば、データファイルをyhqt01.dbfするには

--mount状態の回復

RMAN> {実行
シャットダウンアボートを。
STARTUP MOUNT;
データ・ファイルの「/u01/app/oracle/oradata/orcl/yhqt01.dbf」を復元します。
データベースを回復します。
オープンデータベースを変更します;}

--open状態の回復、閉じられていない例

RMAN>ラン{
sql'alterデータベースのデータファイル10オフライン';
データ・ファイルの10を復元します。
データ・ファイルの10を回復します。
オンラインsql'alterデータベースのデータファイル10 ';
}

--open状態、例は休館します

 

RMAN>実行{
スタートアップがマウント。
sql'alterデータベースのデータファイル10オフライン';
開いているデータベースを変更します。
データ・ファイルの10を復元します。
データ・ファイルの10を回復します。
オンラインsql'alterデータベースのデータファイル10 ';
}

 

頭部への損傷後の10.3.3ファイルの回復

データ・ファイルのヘッダーが破損した後、だけでなく、オフライン状態で実行すると、将来的にrestoreコマンドチャネルが完了できない低下をもたらす、このファイルを「認識しない」だろう、あれば。ORA-01210の警告ログが表示されます

シーン:yhqt01.dbfファイルのヘッダーが破損しているが、その後、チェックポイントが発生した、ORA-01210とORA-01171エラーは、アラームログを発生し、制御ファイルのyhqt01.dbfファイルにオフライン状態に変更されました

ユーザー・アクセスyhqtテーブルスペースのオブジェクトは、ORA-00376が返されます。ファイル10は、この時点で読み取ることができません

restoreコマンドを使用してこの時点で、誤ってファイルを復元する制御ファイルは、ファイルがオフラインであることを示しているので、yhqt01.dbf RMAN-06010エラーを誘発し、見つかったyhqt01.dbfを復元存在し、チャネルはまだyhqt01.dbfファイルヘッダにアクセスし、

それは、制御ファイル内の情報と一致しているかどうかを確認するには、ファイル・ヘッダーが破損している、コマンドは失敗します。

ソリューション:

--1頭を削除したデータファイルを破損し、そのファイルが治療を欠けているとして、それは、チャネルヘッダファイルをチェックしようとはしません

--2オンライン変更されたデータファイルとオンライン...データベースのデータファイルを変更するデシベルの状態をマウントして、復元を使用して

RMAN>のデータファイル10を復元します。
ORA-01135:DMのためにアクセスされたファイル10 /クエリがオフラインになっている
、データ・ファイル10:/u01/app/oracle/oradata/orcl/yhqt01.dbfのORA-01110
RMAN-06010:エラー見上げながら、データ・ファイル10
删除该数据文件
$ RM /u01/app/oracle/oradata/orcl/yhqt01.dbf
RMAN> 10データファイルを復元します。
RMAN>のデータファイル10を回復します。
SQL> alter database openを。
SQL>データベースのデータファイル10オンラインを変えます。

だから、データファイルヘッダ破損の修理手順は、可用性に入手可能な低方針・戦略に基づいている必要があり、その後、関連するデータファイルに基づいて、既にオフラインの区別、3種類の合計であります:

--1利用できないオフライン低い回復戦略(オンライン、マウント)

--2可能なポリシーは、組立ラインの低回復オフとなっている(オフライン、マウント)

--- 3回復戦略がされている高可用性オフライン(オフライン、オープン)

1を回復するための主な手順

--1オフインスタンス中止シャットダウンを使用して
、起動状態をマウントマウント起動を実行するために--2インスタンスを
--- 3 Recovery Managerは、共通のデータファイルを実行するかのスイッチ復元復元
--4 RMAN実行ログファイルを使用してデータベースを回復し、データファイル、オンラインログを復元します
- -5データベースを開くために開いているデータベースを変更し、復元が完了した
RMAN> RUN {
シャットダウンABORT;
STARTUP MOUNT;
データ・ファイル10を復元し、
データベースを回復、
オープンデータベースをALTER;}

回復の2の主な手順

オフインスタンスを中止し、シャットダウンを使用して--1
--2起動が状態マウントするマウント
制御ファイルに--- 3 ALTER databseデータファイル10件のオンライン・ファイル・ステータス・データが変更されたオンライン
--4 RMAN>のデータファイル10を復元し、データファイルを復元
- RMAN 5>データベースの回復;。
--6 SQL> ALTERオープンデータベース;
RMAN> RUN {
シャットダウンABORT;
STARTUP MOUNT;
オンラインデータベース10 sql'alterを「;
データ・ファイルの10を復元し、
データベースを回復し、
ALTERオープンデータベース;}

回復の主に3つのステップ

--1ダメージを頭でない場合は、この手順を省略し、通常の破損したデータファイルのヘッダを削除するには、オペレーティング・コマンドを使用して
--2インスタンスが停止した場合、起動時には、状態をマウントマウントするために始めた、データベース開いた状態ならば、この手順を無視
--- 3オフラインデータベース10 ALTER;
--4彼らは第二段階の条件を満たしていれば、オープンALTERデータベースを使用してデータベースを開くには、そうでない場合は、このステップは無視
--5使用RMAN>を、データ・ファイル10を復元します。
--6 RMAN> TABLESPACEを回復したり、データファイルを回復、ファイリングでおよびファイル復元データをREDOログ・
--7 10は、データ・ファイルのデータベースオンラインALTER;
$ /u01/app/oracle/oradata/orcl/yhqt01.dbf RM
-たとえば閉じられていない
RMAN> RUN {
オフラインデータベースのデータファイル10 sql'alterを「;
10データファイルの復元、
データ・ファイル10を回復;
sql'alterデータベースオンラインデータファイル10 ';
}
-例オフ
RMAN> RUN {
STARTUP MOUNT;
sql'alterデータベースのデータファイル10オフライン';
ALTERオープンデータベース。
データ・ファイルの10を復元します。
データ・ファイルの10を回復します。
オンラインsql'alterデータベースのデータファイル10 ';
}

おすすめ

転載: www.linuxidc.com/Linux/2019-07/159591.htm