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:\>