Oracle RMAN の特徴と一貫性バックアップの基礎

Oracle Master Gold

Oracle Database の運用において、データの保護は最も重要な任務です。Oracle RMAN(Recovery Manager)は、標準提供されている非常に強力なバックアップツールであり、データベースの整合性を保ちながら効率的な保護を可能にします。

この記事では、RMAN の主な特徴を整理し、運用設計の要となる「一貫性バックアップ」と「非一貫性バックアップ」の違い、それぞれの具体的な実行手順について詳しく解説します。

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

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

結論:RMAN バックアップの最短理解(やることリスト)

バックアップ手法を選択する際のチェックポイントは以下の通りです。

  • 一貫性バックアップを選ぶ場合:
    • データベースを停止(SHUTDOWN)できる。
    • NOARCHIVELOG モードで運用している。
    • リストア後のリカバリ操作を省略したい。
  • 非一貫性バックアップを選ぶ場合:
    • 24時間稼働でデータベースを停止できない。
    • ARCHIVELOG モードが有効である(必須)。
    • 障害発生の直前までデータを復旧させる必要がある。

RMAN とは? 5つの主要な特徴

RMAN は、Oracle Database 専用に設計されたバックアップ管理クライアントです。OS コマンドでのコピーと異なり、ブロック・レベルでの検証や増分バックアップが可能です。

  1. ブロック・レベルの破損検出:バックアップ中にデータ・ブロックの物理的・論理的破損を自動チェックします。
  2. 増分バックアップ:前回から変更されたデータ・ブロックのみを抽出するため、時間と容量を節約できます。
  3. 未使用ブロックの圧縮:データ・ファイル内の未使用領域をスキップしてバックアップするため、サイズを最小化できます。
  4. カタログ管理:バックアップの世代管理や有効期限を制御ファイル(またはリカバリ・カタログ)で自動管理します。
  5. 多様な出力先:ディスクだけでなく、テープ・デバイス(SBT)やクラウド(OCI Object Storage)への直接出力に対応しています。

一貫性バックアップと非一貫性バックアップの違い

「一貫性」とは、すべてのデータファイルと制御ファイルの SCN(システム変更番号) が一致している状態を指します。

項目一貫性バックアップ (OFFLINE)非一貫性バックアップ (ONLINE)
DB 状態MOUNT(SHUTDOWN 後の起動)OPEN(稼働中)
ログモードNOARCHIVELOG / ARCHIVELOGARCHIVELOG 必須
ダウンタイムありなし
リカバリ不要(リストアのみで利用可)必要(アーカイブログの適用)
主な用途メンテナンス時、小規模 DB基幹システム、24時間稼働環境

実装手順 1:一貫性バックアップの取得(オフライン)

データベースを正常終了させ、マウント状態で取得します。

前提条件:

  • 実行ユーザー:oracle OS ユーザー
  • 権限:SYSDBA または SYSBACKUP
  • データベース名:V19
-- RMANを起動してターゲットDBに接続
-- $ rman target /

-- 1. データベースを一貫性のある状態で停止
SHUTDOWN IMMEDIATE;

-- 2. マウント状態で起動(バックアップ可能な最小状態)
STARTUP MOUNT;

-- 3. データベース全体のバックアップを実行
-- ※この時、制御ファイルとSPFILEも自動バックアップされます
BACKUP DATABASE;

-- 4. データベースを通常の稼働状態に戻す
ALTER DATABASE OPEN;

補足: この手順では、すべてのデータファイルが同じ SCN で静止しているため、リストアするだけで起動が可能です。

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

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

取得例:

[oracle@v19single ~]$ rman target /  ★RMANに接続

Recovery Manager: Release 19.0.0.0.0 - Production on 月 1月 27 10:42:45 2025
Version 19.21.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.

ターゲット・データベース: V19 (DBID=2957249400)に接続されました

RMAN> shutdown immediate ★データベースを停止

リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
データベースがクローズしました
データベースがディスマウントされました。
Oracleインスタンスがシャットダウンしました

RMAN> startup mount ★マウントで起動

ターゲット・データベースに接続しました(起動していません)。
Oracleインスタンスが起動しました
データベースがマウントされました。

システム・グローバル領域の合計は、 1543500120バイトです。

Fixed Size 8925528バイト
Variable Size 889192448バイト
Database Buffers 637534208バイト
Redo Buffers 7847936バイト

RMAN> backup database; ★バックアップ

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

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

RMAN>

実装手順 2:非一貫性バックアップの取得(オンライン)

データベースを稼働させたまま、ARCHIVELOG モードを利用して取得します。

前提条件:

  • ARCHIVELOG モードが有効であること
  • パスワードに「@」などの特殊文字が含まれないこと
-- RMANを起動して接続
-- $ rman target /

-- 1. アーカイブログモードの確認(ARCHIVELOGであればOK)
SELECT LOG_MODE FROM V$DATABASE;

-- 2. 稼働中のバックアップ実行
-- PLUS ARCHIVELOG 句により、バックアップ前後にログ・スイッチが発生し、
-- リカバリに必要なアーカイブログもセットでバックアップされます。
BACKUP DATABASE PLUS ARCHIVELOG;

補足: 実行中もユーザーは DB を利用できます。バックアップ完了後のファイルは SCN がバラバラ(非一貫)ですが、セットで取得したアーカイブログを適用することで、一貫性のある状態へ復旧(リカバリ)できます。

取得例:

[oracle@v19single ~]$ rman target /  ★RMANに接続

Recovery Manager: Release 19.0.0.0.0 - Production on 月 1月 27 10:56:26 2025
Version 19.21.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.

ターゲット・データベース: V19 (DBID=2957249400)に接続されました

RMAN> select status from v$instance;

リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
STATUS
------------
OPEN ★オープン

RMAN> select log_mode from v$database;

LOG_MODE
------------
ARCHIVELOG ★アーカイブログモード

RMAN> BACKUP DATABASE PLUS ARCHIVELOG; ★バックアップ


backupを25-01-27で開始しています
現在のログがアーカイブされました。
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=74 デバイス・タイプ=DISK
チャネルORA_DISK_1: アーカイブ・ログ・バックアップ・セットを開始しています
チャネルORA_DISK_1: バックアップ・セットにアーカイブ・ログを指定しています
入力アーカイブ・ログ・スレッド=1 順序=12 レコードID=1 スタンプ=1191495367
入力アーカイブ・ログ・スレッド=1 順序=13 レコードID=2 スタンプ=1191495374
入力アーカイブ・ログ・スレッド=1 順序=14 レコードID=3 スタンプ=1191495379
入力アーカイブ・ログ・スレッド=1 順序=15 レコードID=4 スタンプ=1191495451
チャネルORA_DISK_1: ピース1 (25-01-27)を起動します
チャネルORA_DISK_1: ピース1 (25-01-27)が完了しました
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/033g9hor_3_1_1 タグ=TAG20250127T105731 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:01
backupを25-01-27で終了しました

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

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

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

RMAN>

トラブルシューティング:よくある ORA エラー

エラー番号原因対処法
ORA-19602NOARCHIVELOG モードで OPEN 中にバックアップしようとしたDB を一度 SHUTDOWN し、MOUNT 状態で実行してください。
ORA-19809高速リカバリ領域 (FRA) の容量不足不要なバックアップを削除(DELETE OBSOLETE)するか、FRA サイズを拡張してください。
ORA-01031権限不足OSDBA グループに所属しているか、SYSBACKUP 権限を確認してください。

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

  • リスクと戻し方:バックアップ中にサーバーがダウンしても元のデータは壊れませんが、バックアップファイルが不完全になるため、復旧後は再度 BACKUP DATABASE を実行してください。
  • 参照系の活用:バックアップが正常に取れているかは LIST BACKUP;VALIDATE DATABASE; コマンドで定期的に確認してください。
  • セキュリティ:バックアップファイルには機密データが含まれます。SET ENCRYPTION ON; を使用した暗号化を検討してください。

FAQ

Q1:RMAN を使わずに OS コマンドでコピーしても良いですか?

A:稼働中の場合は「ユーザー・マネージド・バックアップ」の手順(ALTER TABLESPACE BEGIN BACKUP)が必要ですが、複雑でミスが起きやすいため、現在は RMAN の利用が強く推奨されます。

Q2:増分バックアップはどちらのモードでも使えますか?

A:はい。ただし、非一貫性バックアップと組み合わせて運用するのが一般的です。

Q3:バックアップの削除はどうすればいいですか?

A:OS の rm コマンドではなく、RMAN 内で DELETE BACKUPSET <ID>; を実行してください。制御ファイル内の管理情報も同時に更新されます。


まとめ

  1. RMAN は Oracle Database 最適な、高機能かつ安全なバックアップツール。
  2. 一貫性バックアップは DB 停止が必要だが、リストア後の手順がシンプル。
  3. 非一貫性バックアップは ARCHIVELOG モードが必須だが、無停止運用が可能。
  4. リカバリ要件(どの時点まで戻したいか)に合わせて方式を選択する。

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

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

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

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

コメント

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