- - PR -
Oracle RMANで取得したバックアップセットを他のDBに反映したい。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-03-17 03:39
OTNの英語サイトからOracle10gをダウンロードして
RMANの使用方法を勉強しています。 単に2つのDBの一方からデータをバックアップして もう一方にデータを移動させたいのですが方法がわかりません。 マニュアルには書いてあるのでしょうが、手元にありません。 「Oracleバックアップ・リカバリ実践テクニック」という 本も購入したのですが、解決できませんでした。 申し訳ないですが、もしわかる人がいましたら教えて頂けますでしょうか。 ネット上のページの紹介でもありがたいです。 ■やりたいこと。 1)RMANを利用して DB-1 のバックアップを行う。 (アーカイブモードでオンライン) 2)別の DB-2 に上記で取得したバックアップセットから リストア・リカバリを行ってデータを反映させる。 ■私が実施した手順 1)DB-1にて下記コマンドでバックアップを実行。 configure controlfile autobackup on; backup databaase plus archivelog; 2)上記で取得したDB-1のバックアップセットが 格納されているフラッシュリカバリ領域のディレクトリを DB-2のフラッシュリカバリ領域に上書きコピー 3)DB-2にて下記コマンドでリカバリを試みた。 startup nomount set dbid=9999999 ←※DB-1のDBID restore controlefile from autobackup; 上記までは成功したが、SPファイルや アーカイブログのリストアは失敗しエラーとなった。 4)また、引き続き下記の操作をした。 alter database mount; restore database; 上記の2つは成功したが 下記は DBIDが異なるというエラーメッセージが表示され失敗した。 recover database; 以上です。 | ||||
|
投稿日時: 2008-03-17 10:42
もともと、RMAN(Recovery Manager)は、その名の通り、障害が発生したデータベース を障害発生前の状態に戻す(Recovery)のが目的で作成されています。 例えば、DB-1でアーカイブモードでバックアップしていたが、ある日の有る時刻に、 データベース格納ディスク障害が発生したので、ディスクの入れ替えを行ったのちに、 「該当のデータベース」を元の状態に戻すために使用します。 ところが、poyonさんの場合は、DB-1ともDB-2ともに障害が発生していないのに、 DB-1のアーカイブログ等からDB-2へとデータを反映したいとのことですが、このため の使用目的が違っています。従って、RMANでは、その処理はできません。 単純にDB-1からDB-2へとデータを反映させたいのなら、DataPampによるDB-1のエクス ポート、エクスポートしたデータをDB-2へと反映させる、という方法では、駄目で しょうか? | ||||
|
投稿日時: 2008-03-17 11:20
これが正しくないから移行の処理が上手く行かないのでは? startup nomount; set dbid=9999999; restore spfile from autobackup; <== spfile も戻してあげないといけない shutdown immediate; <== startup nomount; <== 戻した spfile を読み込むために再起動 set dbid=9999999; restore controlfile from autobackup; あと、もちろんリストア先のディスクに関係ないデータファイルなどが存在していないこと。 | ||||
|
投稿日時: 2008-03-17 11:21
返信ありがとうございます。 DataPampによる方法も検討してみます。 疑問点があるので、教えてください。 たとえば、DB-1のバックアップ・セットをDVD-Rなどのメディアに保存済の時 DB-1のHDDが壊れて、HDDを新品に交換した上でDB-1のOSとOracleを再インストールして DVD-Rに保存したバックアップデータから復旧することは可能ですか? もし、これが可能であれば私が実現したい事も可能に思えます。 | ||||
|
投稿日時: 2008-03-17 15:21
DB-1自体のバックアップ(spfile,制御ファイルも含めた)があり、その後の アーカイブログがあれば、復旧することは可能です。 Oracle 10g R2での説明書ですが、「バックアップおよびリカバリの基礎」 http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/backup.102/B19193-02.pdf の1-5ページに概略が書かれています。 | ||||
|
投稿日時: 2008-03-17 15:30
ありがとうございます。 ご指摘の手順でrestoreまではうまくいきました。 startup nomount; set dbid=9999999; restore spfile to 'spfilename' from autobackup; shutdown immediate; startup nomount; set dbid=9999999; restore controlfile from autobackup; shutdown immediate; startup mount; restore database; ここで recover database; すると、下記のエラーとなります。 おそらく、アーカイブログをリストアするか REDOログを消すのかと思いますが、まだ調査中なので アドバイスを頂ければ、有難いです。 以下、エラー内容 ----------------------------------------------- Starting recover at 17-MAR-08 using channel ORA_DISK_1 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of recover command at 03/17/2008 14:09:56 ORA-19698: /var/opt/dcs1.5/mng/db/SID/redo01.log is from different database: id=3306478615, db_name=SID | ||||
|
投稿日時: 2008-04-02 20:57
set dbid=99999999;
をやめれば。 | ||||
|
投稿日時: 2008-04-02 22:53
わざわざoracleさんが教えてくれているとおり、よそのデータベースのバックアップをリストアしてリカバリしようとしても、縁もゆかりもないデータベースのバックアップですから使えませんがな。 DB-1のバックアップがDB-2で使えるのは、DB-2がDB-1のクローンで且つDB-2をopen resetlogsしていない場合「のみ」です。 DB-1からコピーして作ったDB-2であったとしても、一旦open resetlogsしたことがあればもはや別のデータベースです。 ましてどちらも別個でcreate databaseしたものであるとしたら、逆立ちしようが何しようがそんなもの戻せません。 とっととdatapumpに切り替えるべきかと。 |
1