ニュース&ブログ
RDS for Oracleのバックアップ検討中の人注目!(④RDSのバックアップとリカバリ)
この記事は最終更新から10年以上経過しています。内容が古くなっている可能性があります。
投稿日:2014/9/25

今回はDBスナップショット(手動バックアップ)を使用したリカバリ方法について検証します。
(自動化バックアップとDBスナップショットについてはこちらをご参照ください。)
検証で使用する環境と実施する内容
検証で使用する環境を紹介します。AWS上にRDS(Oracle 11gR2)を一つ作成し、検証環境上のOracle Client 11gR2から接続します。
図1:検証環境の構成

①テストデータ挿入
②自動化バックアップを使用した最新時刻へのリカバリ
③リカバリ結果確認
⇒①~③はブログ「RDS for Oracleのバックアップ検討中の人注目!(②RDSのバックアップとリカバリ)」を参照してください。
④テストデータ挿入
⑤自動化バックアップを使用した特定時刻へのリカバリ
⑥リカバリ結果確認
⇒④~⑥はブログ「RDS for Oracleのバックアップ検討中の人注目!(③RDSのバックアップとリカバリ)」を参照してください。
今回は以下の⑦~⑨を実施!!!
⑦テストデータ確認
⑧DBスナップショットを使用したリカバリ
⑨リカバリ結果確認
⑩テストデータ挿入
⑪DBスナップショットを使用したリカバリ(同一DBインスタンス名)
⑫リカバリ結果確認
今回リカバリ確認する作業の流れは以下の通りです。
図2:検証する手順

・手動バックアップ取得後、テーブルを削除します
・異なるDB名にてリストアを行います
・手動バックアップ取得時点のデータが挿入されていることを確認します
それでは検証結果を見ていきます。
DBスナップショット(手動バックアップ)を使用したリストアの検証 ⑦ テストデータ確認
DBスナップショット(手動バックアップ)を使用したリストアを検証します。DBスナップショットからのリストア時は、ユーザーによる時間指定の設定箇所はありません。
(1)DBスナップショット取得
1)テストテーブルの作成
以下のコマンドを実行しテストテーブルを作成します。
SQL> select * from test_table;
SQL> create table test_table (no varchar2(5), text varchar2(10)) tablespace USERS;
16:57:36 SQL> select * from test_table;
select * from test_table
*
行1でエラーが発生しました。:
ORA-00942: 表またはビューが存在しません。
16:57:38 SQL> create table test_table (no varchar2(5), text varchar2(10)) tablespace USERS;
表が作成されました。
2) テストデータ挿入
以下のコマンドを実行しテストデータを挿入します。
それぞれ16:58、17:03に実行します。
--16:58に実行
SQL> insert into test_table (no,text) values ( '1658','AAAAAAAAAA');
SQL> commit;
--17:03に実行
SQL> insert into test_table (no,text) values ( '1703','BBBBBBBBBB');
SQL> commit;
16:58:11 SQL> insert into test_table (no,text) values ( '1658','AAAAAAAAAA');
1行が作成されました。
16:58:13 SQL> commit;
コミットが完了しました。
16:58:17 SQL> select * from test_table;
NO TEXT
---------- --------------------
1658 AAAAAAAAAA
17:03:04 SQL> insert into test_table (no,text) values ( '1703','BBBBBBBBBB');
1行が作成されました。
17:03:05 SQL> commit;
コミットが完了しました。
17:03:10 SQL> select * from test_table;
NO TEXT
---------- --------------------
1658 AAAAAAAAAA
1703 BBBBBBBBBB
3) DBスナップショット(手動バックアップ)の取得
「Instances」画面の「Instance Actions」プルダウンから「Take DB Snapshot」を押します。
図3:DBスナップショット(手動バックアップ)の取得

図4:DBスナップショット(手動バックアップ)の取得

図5:DBスナップショット(手動バックアップ)の取得

4)テストテーブル削除
リストアが実行されたことを確認するために、テストテーブルを削除します。
17:08:07 SQL> drop table test_table purge;
表が削除されました。
17:08:11 SQL> select * from test_table;
select * from test_table
*
行1でエラーが発生しました。:
ORA-00942: 表またはビューが存在しません。
⑧DBスナップショットを使用したリカバリ
(1)DBスナップショットからリストアを実行
「Snapshots」画面で「Restore Snapshot」を押します。
図6:DBスナップショットからリストアを実行

(2)インスタンスパラメータ指定
「Restore DB Instance」画面でDBインスタンスのパラメータを指定して、リカバリを実行します。
例として以下のようにDBインスタンスパラメータを指定し、「Launch DB Instance」を押します。
(画像一部省略)
図7:DBインスタンスパラメータ指定1

⑨リカバリ結果確認
(1)リカバリ完了確認「Instances」画面でリストアしたDBインスタンス名の「Status」列が「creating」から「available」に変わることを確認します。
(画像一部省略)
図8:リカバリ完了確認

(2)リカバリ完了確認(アラートログ)
例として以下のログが表示されていることを確認します。
・ALTER DATABASE OPEN RESETLOGS
・RESETLOGS after incomplete recovery UNTIL CHANGE <SCN番号>
図9:リカバリ完了確認(アラートログ)

(3)リカバリ完了確認
リストアしたDBインスタンスに接続し、DBスナップショットを作成時のデータが新規DBインスタンスで復旧していることを確認します。
1)DBインスタンス接続
以下のコマンドを実行し、DBインスタンスへの接続をします。
(事前にOracle Clientのtnsnames.oraにORCL2の接続情報を追記しています。)
C:\app\administrator> sqlplus oracle@orcl2
SQL> select instance_name from v$instance;
2)データの確認
以下のコマンドを実行し、データを確認します。
SQL> select * from test_table;
17:28:37 SQL> select * from test_table;
NO TEXT
---------- --------------------
1658 AAAAAAAAAA
1703 BBBBBBBBBB
自動化バックアップとDBスナップショットの両方とも、リカバリ時にDBインスタンス名を変更した場合はOracle Databaseの不完全リカバリが実行されていることが確認できました。 シリーズの次回はソースと同一のDBインスタンス名にした場合を検証します。
以上