小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


【Oracle】はじめてのRMAN バックアップ&リストア編

はじめに

OracleデータベースをバックアップするにはRecovery Manager(RMAN)という付属ツールが使えます。
RMANでバックアップとリストアを試してみました。
blogs.oracle.com

リストアとリカバリ

リストアとリカバリは同じ意味に聞こえますが、過去にとったバックアップを元に戻すことをリストアと呼び、バックアップした時点以降の変更を反映することをリカバリと呼びます。

リストアとは
一般的にパソコンのリストアといえばバックアップデータを用いてOSなどのデータを元の状態に戻す(復元)することを指します。
Oracleデータベースのリストアとは、バックアップ媒体から元の場所もしくは新しい場所へデータベースを構成する物理ファイルをコピーして復元することを指します。


リカバリとは
一般的にパソコンのリカバリといえばパソコンにインストールされているOSを出荷時の状態に戻す(復旧する)作業のことをいいます。
Oracleデータベースのリカバリとは、REDOログファイル(バックアップ取得~現在までのトランザクションの変更情報が保存されています)を使用してバックアップ後に作成されたデータベースへ変更情報を反映してデータを復旧することを指します。
Oracle:リカバリとリストアの違い | 覚え書き.com

バックアップ&リストアの流れ
  1. RMANにログイン
  2. データベース全体をバックアップ
  3. あるテーブルに変更を加える
  4. データベースの停止
  5. データベースの起動(マウント)
  6. リストア
  7. リカバリ
  8. データベースのオープン
実際にやってみる

1.はじめに、RMANにログインします。コマンドプロンプトを起動し、以下のコマンドでRMANにログインします。

rman target sys/password

2.データベース全体のバックアップ

BACKUP DATABASE;

このとき、ノーアーカイブログモードで起動していた場合、以下のエラーになります。

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================

RMAN-03009: backupコマンド(ORA_DISK_1チャネル上)が05/03/2016 18:44:54で失敗しま
した
ORA-19602: NOARCHIVELOGモードでアクティブ・ファイルのバックアップまたはコピーは
できません。

3.このタイミングであるテーブルを試しにtruncateします。(テーブルA)

4.データベースを停止する

SHUTDOWN IMMEDIATE;

5.データベースの起動(マウント)

STARTUP MOUNT;

6.バックアップからのリストア

RESTORE DATABASE;

7.リカバリの実行

RECOVER DATABASE;

8.データベースのオープン

ALTER DATABASE OPEN;

これでバックアップからのリストア+リカバリが完了しました。
手順3でtruncateしたテーブルの件数を確認するとゼロ件になっているはずです。

バックアップした時点ではデータがあったはずですが、リストアした後、バックアップ後の変更を適用するリカバリのフェーズでデータが削除されたのだと思います。