Oracleリカバリカタログとは?制御ファイル運用との違いと作り方

Oracle Master Gold

Oracle Databaseのバックアップ運用で「RMAN(Recovery Manager)」を使う際、バックアップ情報をどこに保存するかは重要な選択肢です。Oracleリカバリカタログを利用すれば、制御ファイルの保持期間制限を超えた長期管理や、複数DBの一元管理が可能になります。本記事では、リカバリカタログのメリットや、初心者でも迷わない作成・登録手順をわかりやすく解説します。

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

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


結論:リカバリカタログを使うべきケース

結論から言うと、「バックアップ情報を長期間(365日以上など)残したい場合」「複数のデータベースを1つの場所で集中管理したい場合」は、リカバリカタログの導入を強く推奨します。

  • やることリスト(最短ステップ)
    1. カタログ用DBに専用スキーマ(ユーザー)を作成し、権限を付与する。
    2. RMANからカタログDBに接続し CREATE CATALOG を実行する。
    3. ターゲットDBをリカバリカタログに REGISTER(登録)する。

背景と基礎:リカバリカタログの仕組み

通常、RMANのバックアップ履歴はターゲットDB自身の「制御ファイル(Control File)」に記録されます。しかし、制御ファイルは上書きされる運命にあるため、古い履歴は消えてしまいます。これを解決するのが「リカバリカタログ」という専用の外部データベースです。

制御ファイル運用とリカバリカタログ運用の比較

比較項目制御ファイル運用(デフォルト)リカバリカタログ運用
情報の保存先ターゲットDBの制御ファイル外部の専用データベース(カタログDB)
保持期間CONTROL_FILE_RECORD_KEEP_TIME に依存(通常7日〜)無期限(手動削除するまで保持)
DB全損時制御ファイルのリストアが必要カタログから即座に情報参照が可能
複数DB管理DBごとにバラバラに管理1つのカタログで全DBを一覧可能
構成の複雑さシンプル(追加DB不要)カタログ用DBの運用保守が必要

リカバリカタログの作成手順

リカバリカタログを構築する際、「カタログ用DB(情報を溜める側)」「ターゲットDB(バックアップ対象)」の2つが登場します。

前提条件

  • 対象OS:Oracle Linux / Windows(共通)
  • 対象バージョン:Oracle Database 19c
  • カタログ用DBが別途起動しており、ネットワーク接続(SQL*Net)が可能であること。

1. カタログ用ユーザーの作成

カタログ用DBにログインし、カタログ情報を格納するスキーマを作成します。

-- カタログ用DB側で実施 (SYSユーザー等で接続)
-- パスワードに「@」などの特殊文字は避けるのが無難です
CREATE USER rcat_owner IDENTIFIED BY password_2026;
ALTER USER rcat_owner QUOTA UNLIMITED ON users;
GRANT CONNECT, RESOURCE, RECOVERY_CATALOG_OWNER TO rcat_owner;

補足:RECOVERY_CATALOG_OWNER ロールが、カタログ管理に必要な権限を網羅しています。

2. リカバリカタログの初期化

RMANを起動し、カタログ用DBに接続してカタログ機能(テーブル群)を作成します。

# OSコマンドラインから接続
# rcat_owner: カタログユーザー名, catdb: カタログDBの接続識別子
rman catalog rcat_owner/password_2026@catdb

-- RMANプロンプトで実施
-- カタログ用のスキーマ内に管理用テーブルを作成します
RMAN> CREATE CATALOG;

ターゲットDBの登録と使用

ターゲットDBの登録(Register)

バックアップ対象となるデータベースを、カタログに認識させます。

# ターゲットDBとカタログDBの両方に接続
rman target / catalog rcat_owner/password_2026@catdb

-- ターゲットDBの情報をカタログに登録
RMAN> REGISTER DATABASE;

注意:DBを再作成(DBID変更)した場合は、再度登録が必要です。

実行例:バックアップと管理

登録後は、通常通りバックアップを取るだけでカタログに情報が自動同期されます。

-- フルバックアップの取得
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

-- バックアップ履歴の確認(カタログから情報を取得)
RMAN> LIST BACKUP;

意図:LISTコマンドを実行すると、制御ファイルが消失していてもカタログDBから過去の履歴を一覧表示できます。


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

エラーコード原因確認・対処法
ORA-12154カタログDBへの接続識別子が解決できないtnsnames.ora の設定を確認してください。
RMAN-06004カタログDBがオープンしていないカタログ用DBの状態を確認し、MOUNT/OPENしてください。
RMAN-06428リカバリカタログがインストールされていないCREATE CATALOG コマンドを先に実行してください。

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

  • メリットとリスク:メリットは管理の柔軟性ですが、デメリットは「カタログDB自体のバックアップが必要になる」ことです。カタログDBが壊れると、最新のバックアップ情報がわからなくなるため、カタログDB自身も CONTROLFILE AUTOBACKUP を有効にするなど対策をしてください。
  • 同期の重要性:通常は自動同期されますが、ターゲットDBの制御ファイルを手動で操作(古いログをOS削除するなど)した場合は、以下のコマンドで整合性を取ります。RMAN> RESYNC CATALOG;

FAQ:リカバリカタログのやり方に関するよくある質問

Q: リカバリカタログを使わないとリカバリできないのですか?

A: いいえ、制御ファイルだけでもリカバリは可能です。ただし、制御ファイルが完全に失われ、かつ自動バックアップもないような最悪のケースでは、カタログがある方が復旧難易度が下がります。

Q: カタログDBは同じサーバー内に作ってもいいですか?

A: 技術的には可能ですが、サーバー故障時に共倒れするリスクがあるため、別サーバー(またはOCIの別インスタンス等)に配置するのがベストプラクティスです。

Q: 19cから23aiへアップグレードする場合、カタログはどうなりますか?

A: UPGRADE CATALOG コマンドでカタログスキーマのバージョンアップが可能です。


まとめ

  • リカバリカタログは、RMANのバックアップ履歴を保存する「外部データベース」。
  • 長期保存・複数DB一元管理・制御ファイル破損対策に有効。
  • 構築には専用ユーザー作成と CREATE CATALOG が必要。
  • カタログDB自身のバックアップも忘れずに行う。

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


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

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

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

コメント

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