- PR -

Oracle RMANで取得したバックアップセットを他のDBに反映したい。

1
投稿者投稿内容
poyon
会議室デビュー日: 2008/03/17
投稿数: 3
投稿日時: 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;

以上です。



YASUYOKA
ベテラン
会議室デビュー日: 2007/03/19
投稿数: 71
投稿日時: 2008-03-17 10:42
引用:

poyonさんの書き込み (2008-03-17 03:39) より:
<SNIP>
■やりたいこと。
1)RMANを利用して DB-1 のバックアップを行う。
  (アーカイブモードでオンライン)

2)別の DB-2 に上記で取得したバックアップセットから
  リストア・リカバリを行ってデータを反映させる。
<SNIP>



もともと、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へと反映させる、という方法では、駄目で
しょうか?
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2008-03-17 11:20
引用:

startup nomount
set dbid=9999999 ←※DB-1のDBID
restore controlefile from autobackup;
上記までは成功したが、SPファイルや
アーカイブログのリストアは失敗しエラーとなった。



これが正しくないから移行の処理が上手く行かないのでは?

startup nomount;
set dbid=9999999;
restore spfile from autobackup; <== spfile も戻してあげないといけない
shutdown immediate; <==
startup nomount; <== 戻した spfile を読み込むために再起動
set dbid=9999999;
restore controlfile from autobackup;

あと、もちろんリストア先のディスクに関係ないデータファイルなどが存在していないこと。
poyon
会議室デビュー日: 2008/03/17
投稿数: 3
投稿日時: 2008-03-17 11:21
引用:

ところが、poyonさんの場合は、DB-1ともDB-2ともに障害が発生していないのに、
DB-1のアーカイブログ等からDB-2へとデータを反映したいとのことですが、このため
の使用目的が違っています。従って、RMANでは、その処理はできません。



返信ありがとうございます。
DataPampによる方法も検討してみます。

疑問点があるので、教えてください。
たとえば、DB-1のバックアップ・セットをDVD-Rなどのメディアに保存済の時
DB-1のHDDが壊れて、HDDを新品に交換した上でDB-1のOSとOracleを再インストールして
DVD-Rに保存したバックアップデータから復旧することは可能ですか?
もし、これが可能であれば私が実現したい事も可能に思えます。


YASUYOKA
ベテラン
会議室デビュー日: 2007/03/19
投稿数: 71
投稿日時: 2008-03-17 15:21
引用:

poyonさんの書き込み (2008-03-17 11:21) より:
<SNIP>
たとえば、DB-1のバックアップ・セットをDVD-Rなどのメディアに保存済の時
DB-1のHDDが壊れて、HDDを新品に交換した上でDB-1のOSとOracleを再インストールして
DVD-Rに保存したバックアップデータから復旧することは可能ですか?
もし、これが可能であれば私が実現したい事も可能に思えます。



DB-1自体のバックアップ(spfile,制御ファイルも含めた)があり、その後の
アーカイブログがあれば、復旧することは可能です。
Oracle 10g R2での説明書ですが、「バックアップおよびリカバリの基礎」
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/backup.102/B19193-02.pdf
の1-5ページに概略が書かれています。
poyon
会議室デビュー日: 2008/03/17
投稿数: 3
投稿日時: 2008-03-17 15:30
引用:

あんとれさんの書き込み (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;

あと、もちろんリストア先のディスクに関係ないデータファイルなどが存在していないこと。



ありがとうございます。
ご指摘の手順で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
deanna
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 118
投稿日時: 2008-04-02 20:57
set dbid=99999999;
をやめれば。
ほったて
ベテラン
会議室デビュー日: 2007/11/10
投稿数: 68
投稿日時: 2008-04-02 22:53
引用:

poyonさんの書き込み (2008-03-17 15:30) より:

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



わざわざoracleさんが教えてくれているとおり、よそのデータベースのバックアップをリストアしてリカバリしようとしても、縁もゆかりもないデータベースのバックアップですから使えませんがな。
DB-1のバックアップがDB-2で使えるのは、DB-2がDB-1のクローンで且つDB-2をopen resetlogsしていない場合「のみ」です。

DB-1からコピーして作ったDB-2であったとしても、一旦open resetlogsしたことがあればもはや別のデータベースです。
ましてどちらも別個でcreate databaseしたものであるとしたら、逆立ちしようが何しようがそんなもの戻せません。

とっととdatapumpに切り替えるべきかと。
1

スキルアップ/キャリアアップ(JOB@IT)