Oracle RMAN バックアップのやり方は?ノーアーカイブログモードでの手順

Oracle Master Gold

Oracle Database の運用で「アーカイブログを出力せずに運用したいが、バックアップはどうすればいいか」と悩んでいませんか?ノーアーカイブログ(NOARCHIVELOG)モードでは、稼働中のバックアップ(オンライン・バックアップ)ができません。

この記事では、ノーアーカイブログモード下で Oracle RMAN バックアップを確実に取得するための、データベース停止を伴う一貫性バックアップの手順を解説します。これを読めば、テスト環境などで安全にバックアップを取得できるようになります。

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

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

結論:ノーアーカイブログモードのバックアップ手順(最短)

ノーアーカイブログモードでバックアップを取得するには、必ずデータベースを MOUNT(マウント) 状態にする必要があります。

  1. DB停止: SHUTDOWN IMMEDIATE;
  2. マウント起動: STARTUP MOUNT;
  3. バックアップ実行: BACKUP DATABASE;
  4. DBオープン: ALTER DATABASE OPEN;

背景と基礎:ノーアーカイブログモードとは

ノーアーカイブログモードとは、オンラインREDOログが一杯になった際、その内容を保存(アーカイブ)せずに上書きする設定です。

  • メリット: アーカイブログ出力によるディスクI/Oや領域消費を抑えられる。
  • デメリット: 障害発生時にバックアップ取得時点以降のデータを復旧できない。

アーカイブログモードとの比較

項目アーカイブログモードノーアーカイブログモード
データ保護障害直前まで復旧可能(完全リカバリ)バックアップ時点までのみ復旧可能
バックアップ稼働中(OPEN時)に取得可能停止(MOUNT時)が必須
主な用途本番環境、基幹システム開発・テスト環境、参照専用DB

手順・実装:モード確認から切り替えまで

1. 現在のモードを確認する

まずは、現在のデータベースがどのモードで動作しているか確認します。

-- SQL*Plusにて実行
SELECT LOG_MODE FROM V$DATABASE;

結果が NOARCHIVELOG であれば、今回解説する手順が必要です。

2. モードを切り替える(NOARCHIVELOGへの変更)

もし現在 ARCHIVELOG モードで、ノーアーカイブログに変更したい場合は以下の手順を踏みます。

-- データベースを正常停止
SHUTDOWN IMMEDIATE;

-- マウント状態で起動
STARTUP MOUNT;

-- モード変更(SQL内にマルチバイト文字は使用しません)
ALTER DATABASE NOARCHIVELOG;

-- データベースをオープン
ALTER DATABASE OPEN;

実行例:RMANによる一貫性バックアップ

実際に RMAN(Recovery Manager)を使用してバックアップを取得する例です。

前提: SYSDBA権限を持つユーザー(通常は oracle ユーザー)で実行。PDB環境の場合は、CDB全体を停止・起動する操作が必要です。

失敗例:OPEN状態での実行

データベースが OPEN 状態のままバックアップを試みると、以下のエラーが発生します。

RMAN> SELECT STATUS FROM V$INSTANCE;
-- STATUS: OPEN

RMAN> BACKUP DATABASE FORMAT '/u01/app/oracle/backup/db_%U.bkp';
-- RMAN-06149: NOARCHIVELOGモードでデータベースをバックアップできません

正しい実行手順

データベースを一度停止し、MOUNT 状態でバックアップを実行します。

# 1. データベースをシャットダウン
RMAN> SHUTDOWN IMMEDIATE;

# 2. マウント状態で起動
RMAN> STARTUP MOUNT;

# 3. バックアップ実行(場所を明示的に指定)
# パスワード等に「@」記号は使用しないでください
RMAN> BACKUP DATABASE FORMAT '/u01/app/oracle/backup/db_%U.bkp';

# 補足:バックアップが完了すると、自動的に制御ファイルとSPFILEのオートバックアップも行われます

SQLの意図: BACKUP DATABASE は全てのデータファイルをバックアップします。FORMAT 句で出力先とファイル名(%U はシステム生成のユニーク識別子)を指定しています。

RMAN> SELECT LOG_MODE FROM V$DATABASE;

リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
LOG_MODE
------------
NOARCHIVELOG ★ノーアーカイブログモード

RMAN> SELECT STATUS FROM V$INSTANCE;

STATUS
------------
OPEN ★オープン状態

RMAN> BACKUP DATABASE FORMAT '/u01/app/oracle/backup/db_%U.bkp'; ★バックアップ失敗

backupを25-02-22で開始しています
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=104 デバイス・タイプ=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: backupコマンドが02/22/2025 00:09:51で失敗しました
RMAN-06149: NOARCHIVELOGモードでデータベースをバックアップできません

RMAN> SHUTDOWN IMMEDIATE; ★停止

データベースがクローズしました
データベースがディスマウントされました。
Oracleインスタンスがシャットダウンしました

RMAN> STARTUP MOUNT; ★マウントで起動

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

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

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

RMAN> BACKUP DATABASE FORMAT '/u01/app/oracle/backup/db_%U.bkp'; ★バックアップ

backupを25-02-22で開始しています
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=37 デバイス・タイプ=DISK
チャネル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-22)を起動します
チャネルORA_DISK_1: ピース1 (25-02-22)が完了しました
ピース・ハンドル=/u01/app/oracle/backup/db_013ictk8_1_1_1.bkp タグ=TAG20250222T001048 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:36
backupを25-02-22で終了しました

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

RMAN>

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

エラーコード原因対処法
RMAN-06149DBがOPEN状態でバックアップを実行したSHUTDOWN 後、STARTUP MOUNT してから再実行
ORA-00257(参考)アーカイブ領域が一杯ノーアーカイブログモードでは発生しませんが、モード切替忘れを確認
ORA-01031権限不足OSの dba グループ所属ユーザーか確認し as sysdba で接続

運用・監視上の注意

  • リスク: バックアップ後にデータを更新し、その後ディスク障害が発生した場合、更新分は永久に失われます
  • 戻し方(リカバリ): 障害時は RESTORE DATABASE および RECOVER DATABASE を行いますが、REDOログがないため「一貫性のあるバックアップ時点」への書き戻しのみとなります。
  • 推奨事項: 制御ファイル(BACKUP CURRENT CONTROLFILE)と初期化パラメータ(BACKUP SPFILE)も個別にバックアップしておくと、より復旧の確実性が増します。

FAQ:よくある質問

Q1. インスタンスを停止せずにバックアップする方法はありますか?

いいえ。ノーアーカイブログモードでは、データファイルの整合性を保つために必ずマウント状態(または停止状態)にする必要があります。

Q2. 特定のテーブルスペースだけバックアップできますか?

ノーアーカイブログモードでは、個別のデータファイル単位でのオンラインバックアップはサポートされていません。原則としてデータベース全体のバックアップを行います。

Q3. バックアップファイルの保存先はどこが良いですか?

データベース本体とは物理的に異なるディスク、または OCI(Oracle Cloud Infrastructure)上の Object Storage などを検討してください。


まとめ

  • ノーアーカイブログモードは、REDOログを破棄するためパフォーマンス面で有利だが、リカバリ能力に制限がある。
  • RMANバックアップ時は、必ず SHUTDOWN IMMEDIATE → STARTUP MOUNT の手順を踏む。
  • 本番環境では、万が一の事態に備えて ARCHIVELOG モードへの切り替えを強く推奨。

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


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

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

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

コメント

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