Oracle RMAN バックアップのやり方と基本コマンド

Oracle Master Gold

Oracle データベースの運用において、データの保護は最優先事項です。Oracle RMAN(Recovery Manager)は、効率的なOracle バックアップと迅速なリカバリを実現するための標準ツールです。本記事では、初心者から中級者向けに、RMAN を使用した各種バックアップ手順を実機ログとともに分かりやすく解説します。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

結論:RMAN バックアップの最短手順

RMAN を使用してデータベース全体のバックアップを取得する基本的な流れは以下の通りです。

  1. RMAN 起動: rman target / でターゲット DB に接続。
  2. ログモード確認: ARCHIVELOG モードであることを確認(運用環境の前提)。
  3. コマンド実行: BACKUP DATABASE PLUS ARCHIVELOG; を実行。
  4. 確認: LIST BACKUP; でバックアップが正常に生成されたか確認。

RMAN とは? バックアップの仕組みと背景

RMAN は、Oracle Database に統合されたバックアップ専用ツールです。OS コマンドによるコピー(ユーザー管理バックアップ)とは異なり、以下の特徴があります。

  • ブロック単位の処理: 実際にデータが書き込まれたブロックのみをバックアップするため、効率的です。
  • オンライン・バックアップ: データベースを稼働させたまま、整合性のあるバックアップを取得可能です。
  • 自動管理: バックアップの有効期限や、制御ファイル、サーバー・パラメータ・ファイル(SPFILE)の自動バックアップを管理します。

実装手順と実行例

ここでは、Oracle Database 19c 環境での実行例を紹介します。 前提条件:

  • OS: Oracle Linux 7/8/9
  • 権限: SYSDBA または SYSBACKUP 権限を持つユーザー
  • 構成: シングル構成(CDB/PDB 構成の場合は root 接続を想定)
  • DBモード: アーカイブログモード(ARCHIVELOG)推奨

RMANでのデータベース全体のバックアップ

データベース全体をバックアップするには、以下のコマンドを使用します。

RUN {
  ALLOCATE CHANNEL ch1 DEVICE TYPE DISK;
  BACKUP DATABASE;
  RELEASE CHANNEL ch1;
}
  • ALLOCATE CHANNEL でバックアップチャネルを割り当てます。
  • BACKUP DATABASE でデータベース全体をバックアップします。
  • RELEASE CHANNEL でチャネルを解放します。
RMAN> RUN {
2> ALLOCATE CHANNEL ch1 DEVICE TYPE DISK;
3> BACKUP DATABASE;
4> RELEASE CHANNEL ch1;
5> }

リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
チャネル: ch1が割り当てられました
チャネルch1: SID=66 デバイス・タイプ=DISK

backupを25-02-16で開始しています
チャネルch1: フル・データファイル・バックアップ・セットを開始しています
チャネルch1: バックアップ・セットにデータファイルを指定しています
入力データファイル ファイル番号=00001 名前=/u01/app/oracle/oradata/V19/system01.dbf
入力データファイル ファイル番号=00003 名前=/u01/app/oracle/oradata/V19/sysaux01.dbf
入力データファイル ファイル番号=00004 名前=/u01/app/oracle/oradata/V19/undotbs01.dbf
入力データファイル ファイル番号=00005 名前=/u01/app/oracle/oradata/V19/rctbs01.dbf
入力データファイル ファイル番号=00007 名前=/u01/app/oracle/oradata/V19/users01.dbf
チャネルch1: ピース1 (25-02-16)を起動します
チャネルch1: ピース1 (25-02-16)が完了しました
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/013huo8s_1_1_1 タグ=TAG20250216T151332 コメント=NONE
チャネルch1: バックアップ・セットが完了しました。経過時間: 00:00:25
backupを25-02-16で終了しました

Control File and SPFILE Autobackupを25-02-16で開始しています
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/c-2957249400-20250216-00 コメント=NONE
Control File and SPFILE Autobackupを25-02-16で終了しました

チャネル: ch1がリリースされました

データファイル単位のバックアップ

特定のデータファイルのみをバックアップする場合は、次のように記述します。

BACKUP DATAFILE '/u01/app/oracle/oradata/V19/users01.dbf';
  • BACKUP DATAFILE を使用して、特定のデータファイルをバックアップします。
RMAN> backup datafile '/u01/app/oracle/oradata/V19/users01.dbf';

backupを25-02-16で開始しています
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=66 デバイス・タイプ=DISK
チャネルORA_DISK_1: フル・データファイル・バックアップ・セットを開始しています
チャネルORA_DISK_1: バックアップ・セットにデータファイルを指定しています
入力データファイル ファイル番号=00007 名前=/u01/app/oracle/oradata/V19/users01.dbf
チャネルORA_DISK_1: ピース1 (25-02-16)を起動します
チャネルORA_DISK_1: ピース1 (25-02-16)が完了しました
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/033huocb_3_1_1 タグ=TAG20250216T151522 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:01
backupを25-02-16で終了しました

Control File and SPFILE Autobackupを25-02-16で開始しています
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/c-2957249400-20250216-01 コメント=NONE
Control File and SPFILE Autobackupを25-02-16で終了しました

表領域単位のバックアップ

特定の表領域のみをバックアップする場合は、以下のコマンドを使用します。

BACKUP TABLESPACE users;
  • BACKUP TABLESPACE を使用すると、指定した表領域全体をバックアップできます。
RMAN> BACKUP TABLESPACE users;

backupを25-02-16で開始しています
チャネルORA_DISK_1の使用
チャネルORA_DISK_1: フル・データファイル・バックアップ・セットを開始しています
チャネルORA_DISK_1: バックアップ・セットにデータファイルを指定しています
入力データファイル ファイル番号=00007 名前=/u01/app/oracle/oradata/V19/users01.dbf
チャネルORA_DISK_1: ピース1 (25-02-16)を起動します
チャネルORA_DISK_1: ピース1 (25-02-16)が完了しました
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/053huogk_5_1_1 タグ=TAG20250216T151740 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:01
backupを25-02-16で終了しました

Control File and SPFILE Autobackupを25-02-16で開始しています
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/c-2957249400-20250216-02 コメント=NONE
Control File and SPFILE Autobackupを25-02-16で終了しました

アーカイブログのバックアップ

アーカイブログモードでは、REDOログのアーカイブを取得することで、完全リカバリを実現できます。

BACKUP ARCHIVELOG ALL;
RMAN> BACKUP ARCHIVELOG ALL;

backupを25-02-16で開始しています
現在のログがアーカイブされました。
チャネルORA_DISK_1の使用
チャネルORA_DISK_1: アーカイブ・ログ・バックアップ・セットを開始しています
チャネルORA_DISK_1: バックアップ・セットにアーカイブ・ログを指定しています
入力アーカイブ・ログ・スレッド=1 順序=12 レコードID=1 スタンプ=1193238572
入力アーカイブ・ログ・スレッド=1 順序=13 レコードID=2 スタンプ=1193239122
チャネルORA_DISK_1: ピース1 (25-02-16)を起動します
チャネルORA_DISK_1: ピース1 (25-02-16)が完了しました
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/073huoii_7_1_1 タグ=TAG20250216T151842 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:03
backupを25-02-16で終了しました

Control File and SPFILE Autobackupを25-02-16で開始しています
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/c-2957249400-20250216-03 コメント=NONE
Control File and SPFILE Autobackupを25-02-16で終了しました

また、データベースとアーカイブログを一緒にバックアップする場合は、以下のコマンドを使用します。

BACKUP DATABASE PLUS ARCHIVELOG;
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;


backupを25-02-16で開始しています
現在のログがアーカイブされました。
チャネルORA_DISK_1の使用
チャネルORA_DISK_1: アーカイブ・ログ・バックアップ・セットを開始しています
チャネルORA_DISK_1: バックアップ・セットにアーカイブ・ログを指定しています
入力アーカイブ・ログ・スレッド=1 順序=12 レコードID=1 スタンプ=1193238572
入力アーカイブ・ログ・スレッド=1 順序=13 レコードID=2 スタンプ=1193239122
入力アーカイブ・ログ・スレッド=1 順序=14 レコードID=3 スタンプ=1193239211
チャネルORA_DISK_1: ピース1 (25-02-16)を起動します
チャネルORA_DISK_1: ピース1 (25-02-16)が完了しました
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/093huolb_9_1_1 タグ=TAG20250216T152011 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:01
backupを25-02-16で終了しました

backupを25-02-16で開始しています
チャネルORA_DISK_1の使用
チャネルORA_DISK_1: フル・データファイル・バックアップ・セットを開始しています
チャネルORA_DISK_1: バックアップ・セットにデータファイルを指定しています
入力データファイル ファイル番号=00001 名前=/u01/app/oracle/oradata/V19/system01.dbf
入力データファイル ファイル番号=00003 名前=/u01/app/oracle/oradata/V19/sysaux01.dbf
入力データファイル ファイル番号=00004 名前=/u01/app/oracle/oradata/V19/undotbs01.dbf
入力データファイル ファイル番号=00005 名前=/u01/app/oracle/oradata/V19/rctbs01.dbf
入力データファイル ファイル番号=00007 名前=/u01/app/oracle/oradata/V19/users01.dbf
チャネルORA_DISK_1: ピース1 (25-02-16)を起動します
チャネルORA_DISK_1: ピース1 (25-02-16)が完了しました
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/0a3huolc_10_1_1 タグ=TAG20250216T152012 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:15
backupを25-02-16で終了しました

backupを25-02-16で開始しています
現在のログがアーカイブされました。
チャネルORA_DISK_1の使用
チャネルORA_DISK_1: アーカイブ・ログ・バックアップ・セットを開始しています
チャネルORA_DISK_1: バックアップ・セットにアーカイブ・ログを指定しています
入力アーカイブ・ログ・スレッド=1 順序=15 レコードID=4 スタンプ=1193239228
チャネルORA_DISK_1: ピース1 (25-02-16)を起動します
チャネルORA_DISK_1: ピース1 (25-02-16)が完了しました
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/0b3huols_11_1_1 タグ=TAG20250216T152028 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:01
backupを25-02-16で終了しました

Control File and SPFILE Autobackupを25-02-16で開始しています
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/c-2957249400-20250216-04 コメント=NONE
Control File and SPFILE Autobackupを25-02-16で終了しました

増分バックアップ

増分バックアップを使用すると、変更があったブロックのみをバックアップし、時間とストレージを節約できます。

BACKUP INCREMENTAL LEVEL 1 DATABASE;
  • LEVEL 0 はフルバックアップ。
  • LEVEL 1 は差分バックアップ。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

バックアップセットとしてのバックアップ

バックアップセットは、Oracleのデフォルトのバックアップ形式で、データを圧縮しながら格納します。

BACKUP AS BACKUPSET DATABASE;

バックアップセットを使用すると、

  • RMANが不要なブロックを自動的に除外し、バックアップサイズを削減。
  • マルチセクションバックアップが可能。

イメージコピーによるバックアップ

イメージコピーは、データファイルをそのままコピーするバックアップ方法です。

BACKUP AS COPY DATABASE;
  • AS COPY を指定すると、データファイルの物理的なコピーが作成されます。
  • データベースのクローン作成時などに有用です。
RMAN> BACKUP AS COPY DATABASE;

backupを25-02-16で開始しています
チャネルORA_DISK_1の使用
チャネルORA_DISK_1: データファイルのコピーを開始しています
入力データファイル ファイル番号=00001 名前=/u01/app/oracle/oradata/V19/system01.dbf
出力ファイル名=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/data_D-V19_I-2957249400_TS-SYSTEM_FNO-1_0h3huorp タグ=TAG20250216T152337 レコードID=1 スタンプ=1193239424
チャネルORA_DISK_1: データファイルのコピーが完了しました。経過時間: 00:00:07
チャネルORA_DISK_1: データファイルのコピーを開始しています
入力データファイル ファイル番号=00003 名前=/u01/app/oracle/oradata/V19/sysaux01.dbf
出力ファイル名=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/data_D-V19_I-2957249400_TS-SYSAUX_FNO-3_0i3huos1 タグ=TAG20250216T152337 レコードID=2 スタンプ=1193239428
チャネルORA_DISK_1: データファイルのコピーが完了しました。経過時間: 00:00:07
チャネルORA_DISK_1: データファイルのコピーを開始しています
入力データファイル ファイル番号=00004 名前=/u01/app/oracle/oradata/V19/undotbs01.dbf
出力ファイル名=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/data_D-V19_I-2957249400_TS-UNDOTBS1_FNO-4_0j3huos8 タグ=TAG20250216T152337 レコードID=3 スタンプ=1193239435
チャネルORA_DISK_1: データファイルのコピーが完了しました。経過時間: 00:00:07
チャネルORA_DISK_1: データファイルのコピーを開始しています
入力データファイル ファイル番号=00005 名前=/u01/app/oracle/oradata/V19/rctbs01.dbf
出力ファイル名=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/data_D-V19_I-2957249400_TS-RCTBS_FNO-5_0k3huosf タグ=TAG20250216T152337 レコードID=4 スタンプ=1193239441
チャネルORA_DISK_1: データファイルのコピーが完了しました。経過時間: 00:00:03
チャネルORA_DISK_1: データファイルのコピーを開始しています
入力データファイル ファイル番号=00007 名前=/u01/app/oracle/oradata/V19/users01.dbf
出力ファイル名=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/data_D-V19_I-2957249400_TS-USERS_FNO-7_0l3huosi タグ=TAG20250216T152337 レコードID=5 スタンプ=1193239442
チャネルORA_DISK_1: データファイルのコピーが完了しました。経過時間: 00:00:01
backupを25-02-16で終了しました

Control File and SPFILE Autobackupを25-02-16で開始しています
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/c-2957249400-20250216-06 コメント=NONE
Control File and SPFILE Autobackupを25-02-16で終了しました

バックアップファイルの確認

取得したバックアップの一覧を確認するには、以下のコマンドを使用します。

LIST BACKUP;
RMAN> list backup;


バックアップ・セットのリスト
===================


BSキー サイズ デバイス・タイプ経過時間終了時間
------- ---------- ----------- ------------ --------
13 189.08M DISK 00:00:01 25-02-16
BPキー: 13 ステータス: AVAILABLE 圧縮: NO タグ: TAG20250216T152204
ピース名: /u01/app/oracle/product/19.0.0/dbhome_1/dbs/0d3huoos_13_1_1

バックアップ・セット13のアーカイブ・ログのリスト
Thrd Seq Low SCN Low時間 Next SCN Next Time
---- ------- ---------- -------- ---------- ---------
1 12 2271248 23-11-28 2319046 25-02-16
1 13 2319046 25-02-16 2325175 25-02-16
1 14 2325175 25-02-16 2326536 25-02-16
1 15 2326536 25-02-16 2326565 25-02-16
1 16 2326565 25-02-16 2326756 25-02-16

BS Key Type LV Size Device Type Elapsed Time 終了時間
------- ---- -- ---------- ----------- ------------ --------
14 Full 2.31G DISK 00:00:11 25-02-16
BPキー: 14 ステータス: AVAILABLE 圧縮: NO タグ: TAG20250216T152205
ピース名: /u01/app/oracle/product/19.0.0/dbhome_1/dbs/0e3huoou_14_1_1
バックアップ・セット14のデータファイルのリスト
File LV Type Ckp SCN Ckp時間 Abs Fuz SCN Sparse Name
---- -- ---- ---------- -------- ----------- ------ ----
1 Full 2326770 25-02-16 NO /u01/app/oracle/oradata/V19/system01.dbf
3 Full 2326770 25-02-16 NO /u01/app/oracle/oradata/V19/sysaux01.dbf
4 Full 2326770 25-02-16 NO /u01/app/oracle/oradata/V19/undotbs01.dbf
5 Full 2326770 25-02-16 NO /u01/app/oracle/oradata/V19/rctbs01.dbf
7 Full 2326770 25-02-16 NO /u01/app/oracle/oradata/V19/users01.dbf

BSキー サイズ デバイス・タイプ経過時間終了時間
------- ---------- ----------- ------------ --------
15 5.00K DISK 00:00:00 25-02-16
BPキー: 15 ステータス: AVAILABLE 圧縮: NO タグ: TAG20250216T152221
ピース名: /u01/app/oracle/product/19.0.0/dbhome_1/dbs/0f3huopd_15_1_1

バックアップ・セット15のアーカイブ・ログのリスト
Thrd Seq Low SCN Low時間 Next SCN Next Time
---- ------- ---------- -------- ---------- ---------
1 17 2326756 25-02-16 2326781 25-02-16

BS Key Type LV Size Device Type Elapsed Time 終了時間
------- ---- -- ---------- ----------- ------------ --------
16 Full 10.20M DISK 00:00:01 25-02-16
BPキー: 16 ステータス: AVAILABLE 圧縮: NO タグ: TAG20250216T152222
ピース名: /u01/app/oracle/product/19.0.0/dbhome_1/dbs/c-2957249400-20250216-05
SPFILEも含まれます: 修正時間: 25-02-16
SPFILE db_unique_name: V19
含まれている制御ファイル: Ckp SCN: 2326797 Ckp時間: 25-02-16

また、データファイルのコピーを確認するには、

LIST COPY;
RMAN> LIST COPY;

指定がリポジトリ内のどの制御ファイル・コピーとも一致しません
指定がリポジトリ内のどのアーカイブ・ログとも一致しません
データファイル・コピーのリスト
=======================

Key File S 終了時間 Ckp SCN Ckp時間 Sparse
------- ---- - -------- ---------- -------- ------
6 1 A 25-02-16 2327048 25-02-16 NO
名前: /u01/app/oracle/product/19.0.0/dbhome_1/dbs/data_D-V19_I-2957249400_TS-SYSTEM_FNO-1_0n3huov5
タグ: TAG20250216T152525

7 3 A 25-02-16 2327056 25-02-16 NO
名前: /u01/app/oracle/product/19.0.0/dbhome_1/dbs/data_D-V19_I-2957249400_TS-SYSAUX_FNO-3_0o3huovc
タグ: TAG20250216T152525

8 4 A 25-02-16 2327060 25-02-16 NO
名前: /u01/app/oracle/product/19.0.0/dbhome_1/dbs/data_D-V19_I-2957249400_TS-UNDOTBS1_FNO-4_0p3huovj
タグ: TAG20250216T152525

9 5 A 25-02-16 2327065 25-02-16 NO
名前: /u01/app/oracle/product/19.0.0/dbhome_1/dbs/data_D-V19_I-2957249400_TS-RCTBS_FNO-5_0q3huovr
タグ: TAG20250216T152525

10 7 A 25-02-16 2327068 25-02-16 NO
名前: /u01/app/oracle/product/19.0.0/dbhome_1/dbs/data_D-V19_I-2957249400_TS-USERS_FNO-7_0r3huovu
タグ: TAG20250216T152525

バックアップの削除

不要になったバックアップを削除するには、以下のコマンドを使用します。

DELETE BACKUP;

管理コマンド:バックアップの確認と削除

取得したバックアップの状態を確認し、不要なものを整理します。

  • 確認(バックアップセット): LIST BACKUP;
  • 確認(イメージコピー): LIST COPY;
  • 削除: DELETE BACKUP; (有効期限切れや不要なファイルを物理削除)

トラブルシューティング:代表的な ORA エラー

エラーコード原因対処法
ORA-19809リカバリ領域(FRA)の容量不足DELETE OBSOLETE で古いバックアップを削除、または FRA サイズ拡張
ORA-00257アーカイブログの出力先が満杯アーカイブログのバックアップ取得と削除を実行
ORA-19602NOARCHIVELOG モードでのバックアップ失敗DB をマウント状態でバックアップするか、ARCHIVELOG モードへ変更

セキュリティと運用の注意点

  1. 制御ファイルの自動バックアップ: CONFIGURE CONTROLFILE AUTOBACKUP ON; を設定しておくことを強く推奨します。
  2. 暗号化: 個人情報を扱う場合は SET ENCRYPTION ON; を検討してください。
  3. リカバリテスト: バックアップは「戻せること」が重要です。定期的なリカバリ演習を実施しましょう。

FAQ(よくある質問)

Q: バックアップ中にデータベースのパフォーマンスは低下しますか?

A: RMAN は読取り時に負荷をかけますが、RATE パラメータでスループットを制限することが可能です。

Q: バックアップファイルの出力先を変更するには?

A: BACKUP DATABASE FORMAT '/path/to/backup/%U'; のように FORMAT 句を使用します。

Q: 累積増分バックアップと差分増分バックアップの違いは?

A: 差分(デフォルト)は前回のレベル0または1以降を、累積(CUMULATIVE)は前回のレベル0以降をすべてバックアップします。


まとめ

  • RMAN は効率的で安全な Oracle 標準のバックアップツール。
  • DATABASE PLUS ARCHIVELOG でデータの整合性を担保。
  • 増分バックアップを活用してストレージと時間を節約。
  • LIST コマンドで定期的に状況を監視する。

本記事は Oracle Database 19c を対象に解説します(他バージョンは画面や既定値が異なる場合があります)。


[参考]
Oracle Database バックアップおよびリカバリ・ユーザーズ・ガイド 19c

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

コメント

タイトルとURLをコピーしました