Recovery Managerで継続的にバックアップを取っていれば、そんなことも比較的簡単にできてしまいます。
データベースを指定した時点の状態に戻すことを「不完全リカバリ」といいますが、以下にRecovery Managerを使って指定時刻までのリストアを行う手順を解説します。
ただし、ここで解説するのは、データベース自体は正常に稼働しており、かつ現行の制御ファイルが利用でき、かつRecovery Managerで取ったバックアップセットが揃っている場合の手順なので、このような状況にない場合は、マニュアルを参考に状況に応じたリストア&リカバリを行わなければなりません。
1.データベースの停止
sqlplusからデータベースをシャットダウンします。SQL> shutdown immediate; データベースがクローズされました。 データベースがアンマウントされました。 ORACLEインスタンスがシャットダウンされました。
2.データベースのマウント
シャットダウンが完了したら、続いてデータベースをマウントモードで起動します。SQL> startup mount; ORACLEインスタンスが起動しました。 Total System Global Area 277946200 bytes Fixed Size 454488 bytes Variable Size 134217728 bytes Database Buffers 142606336 bytes Redo Buffers 667648 bytes データベースがマウントされました。 SQL>
3.グローバリゼーションサポートの環境変数の設定
コマンドプロンプトからSETコマンドでグローバリゼーションサポートの環境変数を設定します。C:\> SET NLS_LANG=japanese_japan.JA16SJISTILDE C:\> SET NLS_DATE_FORMAT=YYYY/MM/DD HH24:MI:SS
4.データベースのリストア&リカバリ
3.のコマンドプロンプトからRecovery Managerを起動し、指定時刻までのリストアを行います。※この時、SET UNTIL TIME ~で、いつの時点に戻したいかを設定します。
(ここでは2004年10月27日15時10分の時点に戻すよう設定しています。)
※日付の書式は、3.でNLS_DATE_FORMATで指定した形式に従います。
C:\> RMAN TARGET 'SYS/change_on_install@ORCL AS SYSDBA'
Recovery Manager: Release 9.2.0.4.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
ターゲット・データベース: ORCL (データベースID=1067138301)に接続されました
RMAN> run {
2> SET UNTIL TIME '2004/10/27 15:10:00';
3> RESTORE DATABASE;
4> RECOVER DATABASE;
5> }
実行コマンド: SET until clause
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
restoreが開始されました(開始場所: 2004/10/27 16:18:58)
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: sid=13 devtype=DISK
チャネルORA_DISK_1: データ・ファイル・バックアップ・セットのリストアを開始しています。
チャネルORA_DISK_1: バックアップ・セットからリストアするデータ・ファイルを指定しています
データ・ファイル00001をE:\ORACLE\ORADATA\ORCL\SYSTEM01.DBFへリストア
データ・ファイル00002をE:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBFへリストア
データ・ファイル00003をE:\ORACLE\ORADATA\ORCL\DRSYS01.DBFへリストア
データ・ファイル00004をE:\ORACLE\ORADATA\ORCL\INDX01.DBFへリストア
データ・ファイル00005をE:\ORACLE\ORADATA\ORCL\TOOLS01.DBFへリストア
データ・ファイル00006をE:\ORACLE\ORADATA\ORCL\USERS01.DBFへリストア
データ・ファイル00007をE:\ORACLE\ORADATA\ORCL\XDB01.DBFへリストア
チャネルORA_DISK_1: バックアップ・ピース1がリストアされました
ピース・ハンドル=E:\ORACLE\BACKUP\ORCL_DBF_0MG3E2ST_1_1_20041025.BAK
タグ=TAG20041025T125245 パラメータ=NULL
チャネルORA_DISK_1: リストアが完了しました
restoreが完了しました(完了場所: 2004/10/27 16:21:07)
recoverが開始されました(開始場所: 2004/10/27 16:21:07)
チャネルORA_DISK_1の使用
チャネルORA_DISK_1: 増分データ・ファイル・バックアップ・セットのリストア開始
チャネルORA_DISK_1: バックアップ・セットからリストアするデータ・ファイルを指定しています
データ・ファイル00001のリストア先: E:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
データ・ファイル00002のリストア先: E:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
データ・ファイル00003のリストア先: E:\ORACLE\ORADATA\ORCL\DRSYS01.DBF
データ・ファイル00004のリストア先: E:\ORACLE\ORADATA\ORCL\INDX01.DBF
データ・ファイル00005のリストア先: E:\ORACLE\ORADATA\ORCL\TOOLS01.DBF
データ・ファイル00006のリストア先: E:\ORACLE\ORADATA\ORCL\USERS01.DBF
データ・ファイル00007のリストア先: E:\ORACLE\ORADATA\ORCL\XDB01.DBF
チャネルORA_DISK_1: バックアップ・ピース1がリストアされました
ピース・ハンドル=E:\ORACLE\BACKUP\ORCL_DBF_0QG3GM4C_1_1_20041026.BAK
タグ=TAG20041026T123312 パラメータ=NULL
チャネルORA_DISK_1: リストアが完了しました
チャネルORA_DISK_1: 増分データ・ファイル・バックアップ・セットのリストア開始
チャネルORA_DISK_1: バックアップ・セットからリストアするデータ・ファイルを指定しています
データ・ファイル00001のリストア先: E:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
データ・ファイル00002のリストア先: E:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
データ・ファイル00003のリストア先: E:\ORACLE\ORADATA\ORCL\DRSYS01.DBF
データ・ファイル00004のリストア先: E:\ORACLE\ORADATA\ORCL\INDX01.DBF
データ・ファイル00005のリストア先: E:\ORACLE\ORADATA\ORCL\TOOLS01.DBF
データ・ファイル00006のリストア先: E:\ORACLE\ORADATA\ORCL\USERS01.DBF
データ・ファイル00007のリストア先: E:\ORACLE\ORADATA\ORCL\XDB01.DBF
チャネルORA_DISK_1: バックアップ・ピース1がリストアされました
ピース・ハンドル=E:\ORACLE\BACKUP\ORCL_DBF_0UG3JCHN_1_1_20041027.BAK
タグ=TAG20041027T130807 パラメータ=NULL
チャネルORA_DISK_1: リストアが完了しました
メディア・リカバリを開始しています
メディア・リカバリが完了しました
recoverが完了しました(完了場所: 2004/10/27 16:21:28)
RMAN> EXIT
Recovery Managerが完了しました。
5.データベースをオープンする。
sqlplusからデータベースをオープンします。※この時RESETLOGSオプションを設定します。
SQL> alter database open resetlogs; データベースが変更されました。 C:\>