Oracle RMAN リカバリカタログは、バックアップ情報を一元管理する重要な機能です。本記事では、カタログ用ユーザーの作成からデータベース登録、バックアップ実行までの手順を詳しく解説します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
結論:リカバリカタログ作成の最短ステップ
リカバリカタログの構築は、以下の 4 ステップで完了します。
- カタログ用 DB の準備: 専用の表領域とユーザーを作成し、権限を付与する。
- 接続設定:
tnsnames.oraにカタログ DB への接続定義を追加する。 - カタログ作成: RMAN からカタログ DB に接続し
CREATE CATALOGを実行する。 - DB 登録: ターゲット DB をカタログに
REGISTER DATABASEする。
リカバリカタログの背景と基礎知識
リカバリカタログとは、ターゲットデータベースの制御ファイルに格納されている RMAN メタデータを、外部の Oracle データベースに二重管理するためのスキーマです。
- メリット: 制御ファイルの保持期間を超えた古いバックアップ情報の維持、複数 DB のバックアップ情報の一元管理、RMAN スクリプトの保存が可能です。
- 注意点: カタログ DB 自体のバックアップも必要になります。
リカバリカタログ作成のやり方・実装手順
以下の手順では、カタログを格納するデータベース(カタログ DB)と、バックアップ対象のデータベース(ターゲット DB)が構成されていることを前提とします。
1. カタログ用表領域とユーザーの作成
カタログ DB に管理者権限(SYSDBA 等)でログインし、専用の格納エリアと所有ユーザーを作成します。
前提条件:
- 対象 OS:Oracle Linux / Windows(共通)
- OS ユーザー:oracle (DB 運用ユーザー)
- 権限:カタログ DB への SYSDBA 接続権限
まず、SQL*Plus でカタログ DB に接続し、以下の SQL を実行します。
-- リカバリカタログ用表領域の作成
CREATE TABLESPACE rctbs DATAFILE '/u01/app/oracle/oradata/V19/rctbs01.dbf' SIZE 500M;
-- リカバリカタログ所有ユーザーの作成
-- パスワードに「@」などの特殊文字は避けるのが無難です
CREATE USER rcuser IDENTIFIED BY oracle_password123
DEFAULT TABLESPACE rctbs
QUOTA UNLIMITED ON rctbs;
-- カタログ所有者に必要なロールを付与
GRANT RECOVERY_CATALOG_OWNER TO rcuser;
補足:
RECOVERY_CATALOG_OWNERロールには、カタログ作成に必要なメタデータ・テーブルの作成権限が含まれています。
SQL> create tablespace rctbs datafile '/u01/app/oracle/oradata/V19/rctbs01.dbf' size 500m;
表領域が作成されました。
SQL> create user rcuser identified by oracle
2 default tablespace rctbs
3 quota unlimited on rctbs;
ユーザーが作成されました。
SQL> grant recovery_catalog_owner to rcuser;
権限付与が成功しました。
2. tnsnames.ora の設定
ターゲット DB サーバーからカタログ DB へ接続できるよう、ネットワーク構成ファイル tnsnames.ora にエントリを追加します。
RCATALOG =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = v19single)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = v19)
)
)
3. RMAN によるカタログの作成
RMAN を起動し、カタログ DB に対してカタログの実体(メタデータ・テーブル群)を作成します。
# カタログDBに接続(ターゲットDBへの接続は任意)
rman catalog rcuser/oracle_password123@rcatalog
RMAN プロンプトで以下を実行します。
-- カタログスキーマ内にオブジェクトを作成
CREATE CATALOG;
4. ターゲットデータベースの登録
バックアップを管理したいデータベース(ターゲット DB)をリカバリカタログに紐付けます。
# ターゲットDBとカタログDBの両方に接続
rman TARGET / CATALOG rcuser/oracle_password123@rcatalog
RMAN プロンプトで以下を実行します。
-- ターゲットDBの情報をカタログへ書き込み
REGISTER DATABASE;
-- 登録状態の確認(インカネーション情報の表示)
LIST INCARNATION;
実行結果の意図:
LIST INCARNATIONでターゲット DB の名前と DBID が表示されれば、カタログへの登録は成功です。
[oracle@restart ~]$ rman target / catalog rcuser/oracle@rcatalog
Recovery Manager: Release 19.0.0.0.0 - Production on 月 2月 10 18:42:03 2025
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
ターゲット・データベース: V19 (DBID=2960846808)に接続されました
リカバリ・カタログ・データベースに接続されました。
RMAN> create catalog;
リカバリ・カタログが作成されました。
RMAN> register database;
データベースがリカバリ・カタログに登録されました。
リカバリ・カタログの完全再同期を開始しています
完全再同期が完了しました
RMAN> list incarnation;
データベース・インカネーション・リスト
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 16 V19 2960846808 PARENT 1 19-04-17
1 2 V19 2960846808 CURRENT 1920977 24-01-05
実行例:バックアップの取得と確認
登録が完了したら、実際にバックアップを取得してカタログに情報が記録されるか確認します。
-- アーカイブログを含めたフルバックアップの実行
BACKUP DATABASE PLUS ARCHIVELOG;
-- カタログに記録されたバックアップ情報の表示
LIST BACKUP;
解説:
LIST BACKUPコマンドは、カタログに接続している場合、制御ファイルではなくカタログ内のメタデータを参照して結果を表示します。
トラブルシューティング
| エラーコード | 主な原因 | 対処方法 |
| ORA-01017 | ユーザー名/パスワードが不一致 | rcuser のパスワードを再確認、または SQLNet 認証を確認 |
| ORA-12154 | TNS 接続識別子を解決できない | tnsnames.ora の記述ミス、またはファイルの配置場所を確認 |
| RMAN-06004 | カタログ DB が起動していない | カタログ DB のインスタンス状態を確認し、OPEN する |
| RMAN-06428 | カタログがインストールされていない | CREATE CATALOG コマンドを先に実行する |
運用・セキュリティ上の注意
- カタログ DB のバックアップ: リカバリカタログを失うと、古いバックアップ情報が参照できなくなります。カタログ DB 自体も必ずバックアップ(エクスポート等)を取ってください。
- パスワード管理:
rcuserのパスワードは厳重に管理してください。平文でスクリプトに書く場合は、ファイルのパーミッションを適切に設定します。 - カタログのアップグレード: ターゲット DB のバージョンを上げた場合、
UPGRADE CATALOGコマンドが必要になる場合があります。
FAQ:リカバリカタログに関するよくある質問
Q: リカバリカタログは必ず作成しなければなりませんか?
A: いいえ、必須ではありません。小規模な環境であれば、制御ファイルのみによる管理(NO CATALOG モード)でも運用可能です。
Q: カタログ DB はターゲット DB と同じインスタンスでも良いですか?
A: 技術的には可能ですが、推奨されません。ターゲット DB が壊れた際にカタログも道連れになるリスクがあるため、別の DB インスタンスまたは別のサーバーに配置するのがベストプラクティスです。
Q: 登録したデータベースを削除(解除)するには?
A: RMAN で接続し UNREGISTER DATABASE; を実行します。
まとめ
- リカバリカタログはバックアップ情報の冗長化と長期保存に有効。
- 作成には
CREATE USER、GRANT、CREATE CATALOGの 3 段階が必要。 - 19c 以降でも、基本的な RMAN の操作体系に大きな変更はありません。
- カタログ DB 自体の可用性とバックアップも考慮した設計を行いましょう。
本記事は Oracle Database 19c を対象に解説します(他バージョンは画面や既定値が異なる場合があります)。
[参考]
Oracle Database バックアップおよびリカバリ・ユーザーズ・ガイド 19c
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?



コメント