Email: service@parnassusdata.com 7 x 24 online support!
Oracle [ASM] RMANを用いて復旧(リストア/リカバリ)する方法(非OMF)(
詩檀ソフトはDULに基づき、PRM-DULを開發した。DULすべての機能も含めた上で、グラフィックインタフェースとDataBridge(データがDBLINKのように直に目標データベースに伝送できる。)などの機能も追加した。そして、PRM-DULはJavaで編成したので、あらゆるプラットフォームに適応できる。
PRM-DULの無料バーションダウンロード:
PRM-DULの無料バーションは一つのテーブルがデフォルトで一万行しか抽出できない。目標データベースがかなり小さいの場合に、無料PRM-DULを使ってください。データベースが一万行を超えて、データの重要性も高い場合に、企業バーションを使ってください。企業バーションPRM-DULは一つのデータベースに対して、Licenseソフトウェア使用許可書を提供する。一つのLicense は$ 999 USD 。そして、PRM-DULは一部無料なLicenseを提供している。
もし、壊滅したデータベースがDULを使ったら、まだリカバリできない場合に、リカバリサポートサビースを考えてください:
詩檀ソフトはいまあらゆるOracleデータベースのトラブルに対応できて、主には:データベースが起動できない、誤操作でテーブルがDROPされた、TRUNCATE、DELETE,ASM DiskgroupがMOUNTできないなど。
について RMAN を使用したリストア/リカバリを実行する手順をまとめた文書です。 ASM 環境において何らかの要因(H/W障害など)でデータベースの構成ファイルを含む ディスクグループが破損した状態からの復旧における Document 1732736.1(KROWN:105100) の手順内の主に 以下の三つの手順についての詳細となります。 03. ディスクグループ、および、ディレクトリの作成 04. バックアップからリストア 05. リカバリの実行 [対象リリース] Oracle 10g Database Release 1 (10.1.0) Oracle 10g Database Release 2 (10.2.0) # 本文書の対象となるデータベースの詳細は[前提条件]をご確認ください [対象プラットフォーム] すべてのプラットフォーム [前提条件] これから提示する手順は、以下の前提条件をすべて満たした状態での手順です。 他の前提条件での手順については[参照情報]をご確認ください。 ・データベースのバージョンは PSR 10.1.0 以上である。 ・RMANで取得したバックアップは、障害が発生したディスクグループではなく、 正常なディスクグループもしくはファイルシステム上に配置されており、 使用可能な状態にある。 ・RMANで取得したバックアップがオンラインバックアップである場合、適用でき るアーカイブログファイルのバックアップがそろっている ・制御ファイル、データファイル、オンラインREDOログファイルに別名をつけて おり、OMFの形式(*1)とはなっていない。 ・制御ファイル、データファイル、オンラインREDOログファイル、アーカイブロ グファイルが含まれるすべてのディスクグループが障害を受けている。 ・RMANで取得しているバックアップを元に可能な限り最新の状態までのリカバリ を行う。 (*1) OMFの形式とは、ASMファイル作成時にユーザが別名を指定せずに作った場合にお いて自動的に付けられた名前形式のことを指します。 OMFの形式かどうかは v$controlfile、v$logfile、v$datafile、v$tempfile を 参照することで確認可能です。 OMFの形式になっていない場合にはパスが以下のようになります 例> 制御ファイル : +ASMDG1/control01.ctl データファイル : +ASMDG1/system01.dbf オンラインREDOログファイル: +ASMDG1/redo01.log [手順概要] ASMファイルの名前が OMFの形式でない場合には、Document 1730749.1(KROWN:98490) の問題には該当し ないため、同じ名前のディスクグループへのリストアが可能です。 01. DBインスタンス:shutdown 02. ASMインスタンス:破損したディスクグループの削除 03. ASMインスタンス:ディスクグループの再作成 04. ASMインスタンス:ディレクトリの再作成 05. rmanを起動しターゲットデータベースとリカバリカタログ(使用していれば) に接続 06. DBインスタンス:startup nomount 07. DBインスタンス:制御ファイルのリストア 08. DBインスタンス:alter database mount実行 09. リカバリ可能なポイントの確認 10. ASMインスタンス:ディレクトリの再作成 11. DBインスタンス:データファイルのリストア 12. DBインスタンス:RECOVERコマンド実行 13. DBインスタンス:alter database open resetlogs実行 14. DBインスタンス:ローカル管理一時表領域のリカバリ 15. DBインスタンス:バックアップの実行 [手順詳細] 以降の例では以下の設定となっています。 ・ORACLE_SID/dbname:asmora104 ・制御ファイル、データファイル、オンライン REDO ログファイルがディスク グループ「ASMDG1」に配置されていた ・アーカイブログファイルの出力先も「ASMDG1」であった ・障害を受けたディスクグループは「ASMDG1」である ・同じ名前の「ASMDG1」というディスクグループを作成し復旧を行う ・RMAN のバックアップは、制御ファイル、データファイル、アーカイブログ ファイルについて取得。ASMDG1 ではないファイルシステム上に配置していた ため使用可能 ・以下のパラメータ設定がしてある control_files = '+ASMDG1/control01.ctl' log_archive_dest = '+ASMDG1/arcora104' log_archive_format= 'archive_%t_%S_%r.arch' 01. DBインスタンス:shutdown ============================= 詳細は Document 1732736.1(KROWN:105100)を参照してください。 02. ASMインスタンス:破損したディスクグループの削除 ==================================================== 詳細は Document 1732736.1(KROWN:105100)を参照してください。 03. ASMインスタンス:ディスクグループの再作成 ============================================== ASMインスタンスに接続し、ディスクグループを作成します。 ディスクグループの作成は CREATE DISKGROUP コマンドで実行します。 ASMファイルの名前が OMFの形式ではない場合には、Document 1730749.1(KROWN:98490) の問題には 該当しないため、同じ名前のディスクグループを作成します。 例> % setenv ORACLE_SID +ASM % sqlplus "/ as sysdba" SQL> create diskgroup asmdg1 disk '/dev/vgs16/rasm1024_01' name asmdg1dsk01, '/dev/vgs16/rasm1024_02' name asmdg1dsk02, '/dev/vgs16/rasm1024_03' name asmdg1dsk03; Document 1732736.1(KROWN:105100)もあわせて参照してください。 04. ASMインスタンス:ディレクトリの再作成 ========================================== これからリストアするASMファイルがユーザが作成したディレクトリ配下に作成 されていたものであれば、あらかじめディレクトリを作成しておく必要があり ます。まずここでは事前にわかるもの(initパラメータとして指定しているもの、 制御ファイルやアーカイブログファイルの宛先)だけ作成しておきましょう。 例えば、今回のケースではアーカイブログファイルの出力が '+ASMDG1/arcora104' となっているので、このディレクトリを作成しておきます。 例> SQL> alter diskgroup asmdg1 add directory '+ASMDG1/arcora104'; 05. rmanを起動しターゲットデータベースとリカバリカタログに接続 =============================================================== rmanを起動しターゲットデータベースとリカバリカタログに接続します。 リカバリカタログを使用していない場合には、ターゲットデータベースへの接続 のみとなります。 例> リカバリカタログ使用 % setenv ORACLE_SID asmdb104 % rman target / catalog rman1/rman1@catalogdb 例> リカバリカタログ未使用 % setenv ORACLE_SID asmdb104 % rman target / nocatalog 06. DBインスタンス:startup nomount ==================================== DBインスタンスを startup nomountします。 RMANプロンプトからでも sqlplusプロンプトからでもかまいません。 例> RMAN> startup nomount 07. DBインスタンス:制御ファイルのリストア ============================================ 制御ファイルをリストアします。 例> RMAN> restore controlfile; リカバリカタログを使用していない場合には、from autobackuup 句をつけて下 さい。上記は、ディスクへのデフォルトチャネルを使用した例です。 テープへバックアップを行っている場合には、適切なチャネルを割り当てなが らrestoreしてください。 08. DBインスタンス:alter database mount実行 ============================================= インスタンスをマウント状態とします。 例> RMAN> alter database mount; 09. リカバリ可能なポイントの確認 ================================= 本文書のケースではアーカイブログファイルの出力先も壊れたディスクグループ であるため、アーカイブログファイルについてはバックアップしてあるもののみ 存在しているという状況です。 リカバリ可能なポイントは、バックアップを取得しているアーカイブログファイ ルのうち最も新しいものを適用するところまでとなります。 listコマンドを実行し、バックアップしてあるアーカイブログファイルのうち 最新 の Next SCN を持つスレッド番号、ログ順序番号を確認します。 例> RMAN> list backup of archivelog all; バックアップ・セット40のアーカイブ・ログのリスト Thrd Seq Low SCN Low時刻 Next SCN Next Time ---- ------- ---------- -------- ---------- --------- 1 8 159548 05-08-02 161218 05-08-02 1 9 161218 05-08-02 161229 05-08-02 この場合、最新はスレッド番号 1、ログ順序番号 9 ということになります。 10. ASMインスタンス:ディレクトリの再作成 ========================================== これからリストアするデータファイルがユーザが作成したディレクトリ配下に作 成されていたものであれば、あらかじめディレクトリを作成しておく必要があり ます。ここでは listコマンドの結果を元に再作成しておく必要があるディレク トリを確認し、作成します。 例> RMAN> list backup of database; バックアップ・セットのリスト =================== BS Key Type LV Size Device Type Elapsed Time 終了時刻 ------- ---- -- ---------- ----------- ------------ -------- 6 Full 224M DISK 00:00:15 05-09-22 BPキー: 6 ステータス: AVAILABLE 圧縮: NO タグ: TAG20050922T134408 ピース名: /mnt8/ora10104/work/nmatsumo/06gv9cl8_1_1 バックアップ・セット6のデータ・ファイルのリスト File LV Type Ckp SCN Ckp時刻 Name ---- -- ---- ---------- -------- ---- 1 Full 112882 05-09-22 +ASMDG1/system01.dbf 2 Full 112882 05-09-22 +ASMDG1/undo01.dbf 3 Full 112882 05-09-22 +ASMDG1/sysaux01.dbf 4 Full 112882 05-09-22 +ASMDG1/users01.dbf 5 Full 112882 05-09-22 +ASMDG1/testdata/testdata01.dbf <--- この例の場合、ASMインスタンスにて +ASMDG1/testdata を作成しておく必要が あります。 SQL> alter diskgroup asmdg1 add directory '+ASMDG1/testdata'; 11. DBインスタンス:データファイルのリストア ============================================= データファイルをリストアします。 テープへのバックアップなど行っている場合には、適切なチャネルを割り当て ながらrestoreしてください。 例> 手順 09 により今回のケースではログ順序番号 9の適用まで行うので以下の コマンドとなります。 RMAN> restore database until sequence 10 thread 1; 12. DBインスタンス:RECOVERコマンド実行 ======================================== RECOVERコマンドを実行し、増分バックアップ(取得していれば)とREDOの適用を 行います。増分バックアップ、アーカイブログファイルともに必要なファイルは 自動でリストアされます。テープへバックアップを行っている場合には、適切な チャネルを割り当てながら recoverしてください。 例> 手順 09 により今回のケースではログ順序番号 9の適用まで行うので以下の コマンドとなります。 RMAN> recover database until sequence 10 thread 1; 13. DBインスタンス:alter database open resetlogs実行 ====================================================== RECOVERコマンドが完了したら、データベースを RESETLOGSオプションつきで オープンします。自動で新しいディスクグループにオンラインREDOログファイ ルが生成されます。 例> RMAN> alter database open resetlogs; 14. DBインスタンス:ローカル管理一時表領域のリカバリ ====================================================== ローカル管理一時表領域を使用している場合、一時ファイルの追加処理が必要 です。追加する時のディスクグループも新しいディスクグループにします。 * 一時表領域について確認 SQL> select property_value from database_properties where property_name like '%TEMP%'; SQL> select * from dba_tablespaces where contents='TEMPORARY'; * 一時ファイルの追加 SQL> alter tablespace <一時表領域名> add tempfile '+ASMDG1/temp01.dbf' size XXm; なお、Oracle10.2 を使用している場合、自動的に一時表領域の追加が行われる ため、上記手順の実行は不要です。 15. DBインスタンス:バックアップの実行 ======================================= すべての復旧処理が完了したら、その時点でバックアップを取得しておきま しょう。