RMAN を使うとき、カタログモードとnocatalog モードの 2 つの動作モードを選択できます。両者の違いは「バックアップのメタ情報をどこに保存するか」です。
本記事では、それぞれの仕組み、比較表、リカバリカタログ DB の構築手順、RMAN の接続コマンド、そしてどちらを選ぶべきかの判断基準まで解説します。
この記事でわかること
・nocatalog モードの仕組みとメリット・デメリット
・カタログモードの仕組みとメリット・デメリット
・両モードの完全比較表
・リカバリカタログ DB の構築手順
・RMAN の接続コマンド(nocatalog / catalog)
・カタログへのデータベース登録
・仮想プライベートカタログ(VPC)
・どちらを選ぶべきかの判断基準
・nocatalog モードの仕組みとメリット・デメリット
・カタログモードの仕組みとメリット・デメリット
・両モードの完全比較表
・リカバリカタログ DB の構築手順
・RMAN の接続コマンド(nocatalog / catalog)
・カタログへのデータベース登録
・仮想プライベートカタログ(VPC)
・どちらを選ぶべきかの判断基準
カタログモードと nocatalog モードの比較
| 項目 | nocatalog モード | カタログモード |
|---|---|---|
| メタ情報の格納先 | ターゲット DB の制御ファイル | 別 DB のリカバリカタログ |
| 追加 DB | 不要 | カタログ DB が必要(別インスタンス) |
| 構築の容易さ | 設定不要(デフォルト) | カタログ DB の構築 + スキーマ作成が必要 |
| バックアップ履歴の保持期間 | 制御ファイルの保持期間に依存 (CONTROL_FILE_RECORD_KEEP_TIME: デフォルト 7 日) |
無制限(カタログ DB に永続保存) |
| 制御ファイル消失時 | AUTOBACKUP から復元が必要(DBID が必要) | カタログから復元可能(制御ファイルの情報を保持) |
| 複数 DB の一元管理 | 不可(各 DB 独立) | 可能(1 つのカタログで複数 DB を管理) |
| ストアドスクリプト | 使用不可 | 使用可能(RMAN スクリプトをカタログに保存) |
| RMAN 接続コマンド | rman target / | rman target / catalog user/pass@catdb |
多くの環境では nocatalog で十分
nocatalog モードはセットアップ不要で、CONTROLFILE AUTOBACKUP ON を設定しておけば制御ファイル消失時も復旧可能です。カタログモードは「複数 DB の一元管理」や「長期のバックアップ履歴保持」が必要な企業環境で使われます。
nocatalog モードはセットアップ不要で、CONTROLFILE AUTOBACKUP ON を設定しておけば制御ファイル消失時も復旧可能です。カタログモードは「複数 DB の一元管理」や「長期のバックアップ履歴保持」が必要な企業環境で使われます。
nocatalog モード
Shell(nocatalog での接続と基本操作)
# nocatalog モードでの接続(デフォルト) rman target / # または rman target sys/password@orcl # バックアップ情報は制御ファイルに自動記録 RMAN> BACKUP DATABASE; RMAN> LIST BACKUP SUMMARY; # 制御ファイルの AUTOBACKUP を必ず ON にする RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONTROL_FILE_RECORD_KEEP_TIME の設定
SQL(履歴保持期間の確認と変更)
-- 現在の設定を確認(デフォルト: 7 日) SHOW PARAMETER control_file_record_keep_time; -- 31 日に変更(バックアップ履歴を 31 日間保持) ALTER SYSTEM SET control_file_record_keep_time = 31 SCOPE=BOTH; -- RETENTION POLICY の RECOVERY WINDOW と合わせる -- 例: RECOVERY WINDOW OF 30 DAYS なら keep_time >= 30
CONTROL_FILE_RECORD_KEEP_TIME が短いと古いバックアップ情報が消える
nocatalog モードでは制御ファイルのレコード保持期間を超えたバックアップ情報は自動的に上書きされます。RETENTION POLICY と同じかそれ以上の期間に設定してください。デフォルトの 7 日は短すぎることが多いです。
nocatalog モードでは制御ファイルのレコード保持期間を超えたバックアップ情報は自動的に上書きされます。RETENTION POLICY と同じかそれ以上の期間に設定してください。デフォルトの 7 日は短すぎることが多いです。
nocatalog のメリット・デメリット
| メリット | デメリット |
|---|---|
| セットアップ不要(すぐ使える) | バックアップ履歴の保持期間に制限 |
| 追加の DB インスタンス不要 | 制御ファイル消失時は AUTOBACKUP + DBID が必要 |
| 運用がシンプル | 複数 DB の一元管理ができない |
| 小〜中規模環境に最適 | ストアドスクリプトが使えない |
カタログモード
リカバリカタログ DB の構築手順
SQL(カタログスキーマの作成: カタログ DB で実行)
-- (1) カタログ DB にカタログ用ユーザーを作成
CREATE USER rman_catalog IDENTIFIED BY catalog_pass
DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON users;
-- (2) RECOVERY_CATALOG_OWNER ロールを付与
GRANT RECOVERY_CATALOG_OWNER TO rman_catalog;
GRANT CONNECT TO rman_catalog;
Shell(リカバリカタログの作成: RMAN で実行)
# カタログ DB に接続してカタログを作成 rman catalog rman_catalog/catalog_pass@catdb RMAN> CREATE CATALOG; # recovery catalog created
ターゲット DB をカタログに登録
Shell(DB の登録)
# ターゲット DB + カタログ DB に同時接続 rman target sys/password@orcl catalog rman_catalog/catalog_pass@catdb # ターゲット DB をカタログに登録 RMAN> REGISTER DATABASE; # database registered in recovery catalog # 登録済み DB の一覧 RMAN> LIST DB_UNIQUE_NAME OF DATABASE;
カタログモードでのバックアップ
Shell(カタログモードでの操作)
# カタログモードで接続 rman target / catalog rman_catalog/catalog_pass@catdb # バックアップ(操作は nocatalog と同じ) RMAN> BACKUP DATABASE PLUS ARCHIVELOG; # バックアップ情報は制御ファイル + カタログ DB の両方に記録 RMAN> LIST BACKUP SUMMARY;
ストアドスクリプト(カタログ専用機能)
Shell(ストアドスクリプト)
# RMAN スクリプトをカタログに保存
RMAN> CREATE SCRIPT daily_backup {
BACKUP INCREMENTAL LEVEL 1 DATABASE
PLUS ARCHIVELOG DELETE INPUT;
DELETE NOPROMPT OBSOLETE;
}
# 保存したスクリプトを実行
RMAN> RUN { EXECUTE SCRIPT daily_backup; }
# スクリプト一覧
RMAN> LIST SCRIPT NAMES;
# スクリプトの内容を表示
RMAN> PRINT SCRIPT daily_backup;
ストアドスクリプトのメリット
・バックアップ手順をカタログに一元保存
・複数 DB で同じスクリプトを共有可能
・スクリプトのバージョン管理(REPLACE SCRIPT で更新)
・OS 上のファイルに依存しない(カタログ DB に保存)
・バックアップ手順をカタログに一元保存
・複数 DB で同じスクリプトを共有可能
・スクリプトのバージョン管理(REPLACE SCRIPT で更新)
・OS 上のファイルに依存しない(カタログ DB に保存)
カタログモードのメリット・デメリット
| メリット | デメリット |
|---|---|
| バックアップ履歴を無期限に保持 | カタログ DB の構築・運用コストが必要 |
| 制御ファイル消失時もカタログから復元可能 | カタログ DB 自体のバックアップも必要 |
| 複数 DB のバックアップを一元管理 | ネットワーク接続が必要(カタログ DB への通信) |
| ストアドスクリプトで手順を標準化 | カタログ DB の障害が全 DB の RMAN 操作に影響 |
カタログ DB 自体のバックアップを忘れない
カタログ DB が壊れると全 DB のバックアップ履歴が失われます。カタログ DB 自体は nocatalog モードでバックアップしてください(カタログで自分自身をバックアップするのは循環依存になるため)。
カタログ DB が壊れると全 DB のバックアップ履歴が失われます。カタログ DB 自体は nocatalog モードでバックアップしてください(カタログで自分自身をバックアップするのは循環依存になるため)。
仮想プライベートカタログ(VPC)
1 つのリカバリカタログを複数の DBA で共有する場合、仮想プライベートカタログを使うと DBA ごとに見える DB を制限できます。
SQL(VPC の設定)
-- (1) VPC ユーザーを作成
CREATE USER dba_tokyo IDENTIFIED BY tokyo_pass
DEFAULT TABLESPACE users QUOTA UNLIMITED ON users;
GRANT RECOVERY_CATALOG_OWNER TO dba_tokyo;
-- (2) カタログオーナーが VPC を作成
rman catalog rman_catalog/catalog_pass@catdb
RMAN> GRANT CATALOG FOR DATABASE orcl_tokyo TO dba_tokyo;
-- (3) VPC ユーザーで接続(自分の DB のみ見える)
rman target / catalog dba_tokyo/tokyo_pass@catdb
RMAN> CREATE VIRTUAL CATALOG;
どちらを選ぶべきか: 判断基準
| 条件 | 推奨モード |
|---|---|
| DB が 1〜2 台で小中規模 | nocatalog(セットアップ不要でシンプル) |
| DB が 3 台以上で一元管理したい | カタログ(複数 DB のバックアップを統合管理) |
| 長期(数か月以上)のバックアップ履歴が必要 | カタログ(nocatalog は制御ファイルの保持期間に制限) |
| バックアップ手順を標準化・共有したい | カタログ(ストアドスクリプト) |
| 追加の DB インスタンスを用意できない | nocatalog(追加インフラ不要) |
| 最もシンプルな構成にしたい | nocatalog |
nocatalog でも AUTOBACKUP ON + DBID 記録で安全に運用可能
nocatalog の最大のリスクは「制御ファイル消失時の復旧」ですが、CONTROLFILE AUTOBACKUP ON を設定し DBID を記録しておけば AUTOBACKUP から制御ファイルを復元できます。多くの中小規模環境ではこれで十分です。
nocatalog の最大のリスクは「制御ファイル消失時の復旧」ですが、CONTROLFILE AUTOBACKUP ON を設定し DBID を記録しておけば AUTOBACKUP から制御ファイルを復元できます。多くの中小規模環境ではこれで十分です。
nocatalog → カタログへの移行(RESYNC)
Shell(既存のバックアップ情報をカタログに同期)
# nocatalog で運用していた DB をカタログに登録 rman target / catalog rman_catalog/catalog_pass@catdb RMAN> REGISTER DATABASE; # 制御ファイル内のバックアップ情報をカタログに同期 RMAN> RESYNC CATALOG; # 以降はカタログモードで運用
nocatalog からカタログへの移行は簡単
REGISTER DATABASE + RESYNC CATALOG で既存のバックアップ履歴がカタログに同期されます。バックアップの取り直しは不要です。逆にカタログ → nocatalog への移行は、単にカタログに接続しなくなるだけです(制御ファイルに情報は残っています)。
REGISTER DATABASE + RESYNC CATALOG で既存のバックアップ履歴がカタログに同期されます。バックアップの取り直しは不要です。逆にカタログ → nocatalog への移行は、単にカタログに接続しなくなるだけです(制御ファイルに情報は残っています)。
実務パターン集
パターン(1): nocatalog での安全な運用設定
Shell
rman target / # 必須設定 RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON; RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 30 DAYS; # 制御ファイルの履歴保持期間を合わせる SQL> ALTER SYSTEM SET control_file_record_keep_time = 31 SCOPE=BOTH; # DBID を記録しておく SQL> SELECT DBID FROM V$DATABASE; # → この値を安全な場所に保管
パターン(2): カタログ DB の最小構成
Shell
# カタログ DB は小さい DB で十分 # 表領域: 500MB〜1GB で開始 # バックアップ: nocatalog モードで RMAN バックアップ # (1) カタログ DB にスキーマ作成 # CREATE USER rman_catalog ... # GRANT RECOVERY_CATALOG_OWNER TO rman_catalog; # (2) カタログ作成 rman catalog rman_catalog/catalog_pass@catdb RMAN> CREATE CATALOG; # (3) ターゲット DB を登録 rman target sys/pass@proddb catalog rman_catalog/catalog_pass@catdb RMAN> REGISTER DATABASE;
パターン(3): 制御ファイル消失時のリカバリ(nocatalog)
Shell
# 制御ファイルが全て消失した場合 rman target / RMAN> STARTUP NOMOUNT; RMAN> SET DBID 1234567890; -- 事前に記録した DBID RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP; RMAN> ALTER DATABASE MOUNT; RMAN> RECOVER DATABASE; RMAN> ALTER DATABASE OPEN RESETLOGS;
Shell(制御ファイル消失時のリカバリ: カタログモード)
# カタログモードなら DBID 不要 + AUTOBACKUP 不要 rman target / catalog rman_catalog/catalog_pass@catdb RMAN> STARTUP NOMOUNT; RMAN> RESTORE CONTROLFILE; -- カタログから自動取得 RMAN> ALTER DATABASE MOUNT; RMAN> RECOVER DATABASE; RMAN> ALTER DATABASE OPEN RESETLOGS;
よくある質問
Qnocatalog とカタログでバックアップの速度は変わりますか?
A変わりません。バックアップ自体の処理は同じで、メタ情報の記録先が異なるだけです。カタログへのメタ情報の書き込みは数秒で完了するため、パフォーマンスへの影響はありません。
Qnocatalog で DBID を記録し忘れました。確認できますか?
ADB が稼働中なら
SELECT DBID FROM V$DATABASE で確認できます。停止中の場合は AUTOBACKUP のファイル名に含まれる c-DBID-日付-番号 のパターンから推定できます。Qカタログ DB が停止中でも nocatalog でバックアップできますか?
Aはい。カタログ DB が停止中でも
rman target /(nocatalog)でバックアップを実行できます。カタログへの情報同期は後で RESYNC CATALOG で行えます。Qカタログ DB のサイズはどのくらい必要ですか?
A管理する DB の数とバックアップ頻度に依存しますが、10 台程度の DB を管理する場合でも 500MB〜1GB で十分です。バックアップデータ自体はカタログに保存されず、メタ情報のみなのでサイズは小さいです。
Qnocatalog からカタログに移行できますか?
Aはい。
REGISTER DATABASE + RESYNC CATALOG で既存のバックアップ履歴をカタログに同期できます。バックアップの取り直しは不要です。Q1 つのカタログで複数の DB を管理する場合の注意は?
A仮想プライベートカタログ(VPC)を使えば DBA ごとに管理対象の DB を分離できます。VPC を使わないと全 DBA が全 DB のバックアップ情報を見れるため、セキュリティ上の懸念がある場合は VPC の設定を検討してください。
まとめ
カタログモードと nocatalog モードの使い分けをまとめます。
| やりたいこと | 推奨 |
|---|---|
| 最もシンプルにバックアップ | nocatalog + AUTOBACKUP ON + DBID 記録 |
| バックアップ履歴を長期保持 | カタログモード |
| 複数 DB のバックアップを一元管理 | カタログモード |
| バックアップスクリプトを標準化 | カタログモード(ストアドスクリプト) |
| 追加インフラなしで運用 | nocatalog(追加 DB 不要) |
| nocatalog からカタログに移行 | REGISTER DATABASE + RESYNC CATALOG |
| カタログ DB 自体のバックアップ | nocatalog モードで RMAN バックアップ |
増分バックアップは「RMAN 増分バックアップ完全ガイド」、制御ファイルのバックアップは「制御ファイルと SPFILE のバックアップ・復元」、バックアップの自動化は「RMAN バックアップを自動化する方法」も併せて参照してください。

