[Oracle] シンプルなRMANバックアップの取得方法

Oracle

本記事では今日から使えるシンプルなRMANバックアップ方法を解説します。

Oracleのバックアップ取得では、差分増分バックアップ、累積増分バックアップなど、お客様要件によって色々なオプションが用意されているのですが、できるだけシンプルにするためにフルバックアップのみを解説対象とします。

シンプルなバックアップやリストアでも実際に動かして試してもらうことで、万が一問題が発生した時にも対処することができます。

りお
りお

データ破損はもちろん、データを誤って削除してしまった場合などでも
バックアップは最後の砦になります。

本記事の前提

本記事は以下を前提としています。

  • データベースバージョン:Oracle 19c (19.21) / シングル環境(RAC環境でも取得方法は変わりません。)
  • アーカイブログモード:有効化(有効化していないとオンラインバックアップを取得できません。有効化する方法はこちらの記事を参照ください。『[Oracle] RMANバックアップを取得するためのアーカイブログモード設定』
  • リカバリカタログの保存先:制御ファイル(保存先としてデータベースを指定することもできます。本記事では制御ファイルに保存します。)
  • バックアップタイプ:バックアップ・セット(イメージ・コピーも選択できます。デフォルトはバックアップ・セットです。)
  • バックアップの保存先:ローカルディスク(/backup)(通常はNFSなどの外部ストレージに保存します。ローカルディスクの場合、対象マシンが破損した場合にバックアップも利用できなくなるためです。本記事では「/backup」ディレクトリに保存しますが、NFSディレクトリの場合もバックアップ方法は変わりませんので、ディレクトリを適宜読み替えてください。)

フルバックアップ取得

まずはRMANでフルバックアップを取得します。

RMANコマンドでデータベースに接続しますので、SQL*Plusでデータベースに接続する時と同様に、事前にSIDなどの環境変数を設定しておきます。
本記事では以下の環境変数を読み込んでおくものとします。
このあたりは適宜読み替えてください。

$ cat ru21.env 

export NLS_LANG=American_America.AL32UTF8
export ORACLE_SID=ru21db
export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/db_home1
export PATH=$PATH:$ORACLE_HOME/bin

$ . ru21.env

RMANコマンドでの接続は以下のコマンドを実行します。

rman target / nocatalog

以下のようにデータベースに接続できます。

$ rman target / nocatalog

Recovery Manager: Release 19.0.0.0.0 - Production on Thu Sep 18 23:47:30 2025
Version 19.22.0.0.0

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

connected to target database: RU22DB (DBID=683921111)
using target database control file instead of recovery catalog

RMAN> 

RMANコマンドを受け付けられるプロンプトになっていますので、この状態で以下を実行します。
フルバックアップと関連するアーカイブログ、制御ファイル、SPFILEを一緒に取得するようにしています。
本記事でのバックアップ保存先ディレクトリ「/backup」は適宜修正してください。

backup database format '/backup/FULL_%d_%T_%U' include current controlfile spfile format '/backup/SPFILE_%d_%T_%U' plus archivelog format '/backup/ARCH_%d_%T_%U';
りお
りお

万一に備えて、制御ファイルやSPFILEも明示的に取得しておきましょう。
フルバックアップがあっても制御ファイルが破損して戻せないケースもありますし、
SPFILEは初期化パラメータ設定だけなのですが、
手動で復旧しようとすると意外に手間が掛かります。

フルバックアップの取得が開始されますので、完了するまで待ちます。
バックアップ時間はデータベースのサイズが大きければ大きいほど時間が掛かります。

エラーなくプロンプトが返ってきたら、フルバックアップは完了です。

$ export NLS_DATE_FORMAT='YYYY/MM/DD HH24:MI:SS'
$ rman target / nocatalog
  :
RMAN> backup database format '/backup/FULL_%d_%T_%U' include current controlfile spfile format '/backup/SPFILE_%d_%T_%U' plus archivelog format '/backup/ARCH_%d_%T_%U';

Starting backup at 2025/10/07 23:58:33
current log archived
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=22 device type=DISK
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=14 RECID=1 STAMP=1213918568
input archived log thread=1 sequence=15 RECID=2 STAMP=1213918578
input archived log thread=1 sequence=16 RECID=3 STAMP=1213918582
  :
piece handle=/backup/ARCH_RU21DB_20251007_0m45lsmo_22_1_1 tag=TAG20251007T235920 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 2025/10/07 23:59:21

Starting Control File and SPFILE Autobackup at 2025/10/07 23:59:21
piece handle=/u01/app/oracle/product/19.0.0.0/db_home1/dbs/c-3272260048-20251007-02 comment=NONE
Finished Control File and SPFILE Autobackup at 2025/10/07 23:59:22

RMAN> 
りお
りお

export NLS_DATE_FORMAT=’YYYY/MM/DD HH24:MI:SS’
を設定しておくことで、RMAN実行時の出力ログの実行日時が分かりやすくなります。

最後に「quit」コマンドで終了します。

RMAN> quit

Recovery Manager complete.
$

バックアップ確認

取得されたバックアップはRMANコマンドで確認することができます。
RMANコマンドでデータベースに接続後、「list backup」コマンドを実行すると、現在取得されているバックアップの情報が表示されます。

list backup;

実行結果は以下のようになります。

RMAN> list backup;


List of Backup Sets
===================


BS Key  Size       Device Type Elapsed Time Completion Time    
------- ---------- ----------- ------------ -------------------
1       199.57M    DISK        00:00:00     2025/10/07 23:45:51
        BP Key: 1   Status: AVAILABLE  Compressed: NO  Tag: TAG20251007T234551
        Piece Name: /backup/ARCH_RU21DB_20251007_0145lrtf_1_1_1

  List of Archived Logs in backup set 1
  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  1    14      830545     2024/03/06 23:23:00 932617     2025/10/07 23:36:05
  1    15      932617     2025/10/07 23:36:05 933333     2025/10/07 23:36:18
  1    16      933333     2025/10/07 23:36:18 933375     2025/10/07 23:36:22
  1    17      933375     2025/10/07 23:36:22 933381     2025/10/07 23:36:25
  1    18      933381     2025/10/07 23:36:25 933630     2025/10/07 23:44:56
  1    19      933630     2025/10/07 23:44:56 933671     2025/10/07 23:45:50

BS Key  Size       Device Type Elapsed Time Completion Time    
------- ---------- ----------- ------------ -------------------
2       203.15M    DISK        00:00:00     2025/10/07 23:47:09
        BP Key: 2   Status: AVAILABLE  Compressed: NO  Tag: TAG20251007T234709
        Piece Name: /backup/ARCH_RU21DB_20251007_0245lrvt_2_1_1

  List of Archived Logs in backup set 2
  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time
  ---- ------- ---------- ------------------- ---------- ---------
  1    14      830545     2024/03/06 23:23:00 932617     2025/10/07 23:36:05
  1    15      932617     2025/10/07 23:36:05 933333     2025/10/07 23:36:18
  1    16      933333     2025/10/07 23:36:18 933375     2025/10/07 23:36:22
  1    17      933375     2025/10/07 23:36:22 933381     2025/10/07 23:36:25
  :

バックアップファイル確認

取得されたバックアップファイルを確認してみます。
ファイルサイズに違いはあると思いますが、フルバックアップ(FULL_)とアーカイブログ(ARCH_)が取得されていることを確認できます。

$ cd /backup
$ ls -ltr
-rw-r-----. 1 oracle oinstall 213612544 10月  7 23:56 ARCH_RU21DB_20251007_0g45lsgu_16_1_1
-rw-r-----. 1 oracle oinstall 213623808 10月  7 23:58 ARCH_RU21DB_20251007_0h45lsl9_17_1_1
-rw-r-----. 1 oracle oinstall 916160512 10月  7 23:58 FULL_RU21DB_20251007_0i45lsld_18_1_1
-rw-r-----. 1 oracle oinstall 619675648 10月  7 23:59 FULL_RU21DB_20251007_0j45lsm6_19_1_1
-rw-r-----. 1 oracle oinstall  18808832 10月  7 23:59 FULL_RU21DB_20251007_0k45lsml_20_1_1
-rw-r-----. 1 oracle oinstall    114688 10月  7 23:59 SPFILE_RU21DB_20251007_0l45lsmn_21_1_1
-rw-r-----. 1 oracle oinstall      5632 10月  7 23:59 ARCH_RU21DB_20251007_0m45lsmo_22_1_1
  :

アーカイブログバックアップ取得

次にアーカイブログのみをバックアップしてみます。

アーカイブログのバックアップがあることで、できるだけ直前の状態にまでリカバリすることができます。
例えば、フルバックアップを0時に取得して、アーカイブログバックアップを1時、2時、3時のように1時間単位で取得するようにしておけば、朝9時半くらいにデータベースが破損してしまった場合でも、フルバックアップ+9時に取得したアーカイブログバックアップによって、9時の状態にまでリカバリすることができます。
アーカイブログバックアップが取得されていない場合、フルバックアップを取得した0時の状態までしかリカバリすることができません。

RMANコマンドでデータベースに接続後、以下を実行します。

backup archivelog all format '/backup/ARCH_%d_%T_%U';

こちらもエラーなくプロンプトが返ってきたら、アーカイブログのバックアップは完了です。

RMAN> backup archivelog all format '/backup/ARCH_%d_%T_%U';

Starting backup at 2025/10/08 00:05:39
current log archived
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=23 device type=DISK
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=14 RECID=1 STAMP=1213918568
input archived log thread=1 sequence=15 RECID=2 STAMP=1213918578
input archived log thread=1 sequence=16 RECID=3 STAMP=1213918582
input archived log thread=1 sequence=17 RECID=4 STAMP=1213918585
input archived log thread=1 sequence=18 RECID=5 STAMP=1213919096
input archived log thread=1 sequence=19 RECID=6 STAMP=1213919150
input archived log thread=1 sequence=20 RECID=7 STAMP=1213919229
input archived log thread=1 sequence=21 RECID=8 STAMP=1213919298
input archived log thread=1 sequence=22 RECID=9 STAMP=1213919535
input archived log thread=1 sequence=23 RECID=10 STAMP=1213919602
input archived log thread=1 sequence=24 RECID=11 STAMP=1213919773
input archived log thread=1 sequence=25 RECID=12 STAMP=1213919913
input archived log thread=1 sequence=26 RECID=13 STAMP=1213919960
input archived log thread=1 sequence=27 RECID=14 STAMP=1213920339
channel ORA_DISK_1: starting piece 1 at 2025/10/08 00:05:40
channel ORA_DISK_1: finished piece 1 at 2025/10/08 00:05:43
piece handle=/backup/ARCH_RU21DB_20251008_0o45lt2k_24_1_1 tag=TAG20251008T000540 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 2025/10/08 00:05:43

Starting Control File and SPFILE Autobackup at 2025/10/08 00:05:43
piece handle=/u01/app/oracle/product/19.0.0.0/db_home1/dbs/c-3272260048-20251008-00 comment=NONE
Finished Control File and SPFILE Autobackup at 2025/10/08 00:05:44

RMAN> 

フルバックアップとアーカイブログ削除

本記事ではリカバリカタログの保存先を制御ファイルとしていますので、RMANで取得したバックアップのエントリは、制御ファイル内で管理されています。
ですので、例えばOS上のバックアップファイルだけを削除しても、制御ファイル内の管理データは削除されません。

管理データが削除されないだけで、データベースに何か影響を与えるわけではないのですが、バックアップからのリカバリ時には管理データを参照しますので、存在しないバックアップファイルを探しに行ってしまい、結果的に必要なファイルが見つからずにリカバリがエラーになってしまう場合があります。

基本的にRMANで取得したバックアップファイルは、RMANで削除するようにします。
以下のRMANコマンドで取得したバックアップをすべて削除することができます。

-- 対話形式で削除したい場合
delete backupset;

-- 確認など不要で削除したい場合
delete noprompt backupset;

実行結果は以下のようになります。

RMAN> delete backupset;

allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=24 device type=DISK

List of Backup Pieces
BP Key  BS Key  Pc# Cp# Status      Device Type Piece Name
------- ------- --- --- ----------- ----------- ----------
11      11      1   1   AVAILABLE   DISK        /backup/ARCH_RU22DB_20250920_0b444vjd_11_1_1
12      12      1   1   AVAILABLE   DISK        /backup/FULL_RU22DB_20250920_0c444vjf_12_1_1
13      13      1   1   AVAILABLE   DISK        /backup/FULL_RU22DB_20250920_0d444vk8_13_1_1
14      14      1   1   AVAILABLE   DISK        /backup/FULL_RU22DB_20250920_0e444vkn_14_1_1
15      15      1   1   AVAILABLE   DISK        /backup/FULL_RU22DB_20250920_0f444vl6_15_1_1
16      16      1   1   AVAILABLE   DISK        /backup/FULL_RU22DB_20250920_0g444vll_16_1_1
17      17      1   1   AVAILABLE   DISK        /backup/ARCH_RU22DB_20250920_0h444vmf_17_1_1
18      18      1   1   AVAILABLE   DISK        /u01/app/oracle/product/19.0.0.0/db_home2/dbs/c-683921111-20250920-00
19      19      1   1   AVAILABLE   DISK        /backup/ARCH_RU22DB_20250920_0j444vtf_19_1_1
20      20      1   1   AVAILABLE   DISK        /u01/app/oracle/product/19.0.0.0/db_home2/dbs/c-683921111-20250920-01

Do you really want to delete the above objects (enter YES or NO)? YES ★YESを入力します。キャンセルしたい場合はNOを入力します。
deleted backup piece
backup piece handle=/backup/ARCH_RU22DB_20250920_0b444vjd_11_1_1 RECID=11 STAMP=1212317293
deleted backup piece
backup piece handle=/backup/FULL_RU22DB_20250920_0c444vjf_12_1_1 RECID=12 STAMP=1212317295
deleted backup piece
backup piece handle=/backup/FULL_RU22DB_20250920_0d444vk8_13_1_1 RECID=13 STAMP=1212317320
deleted backup piece
backup piece handle=/backup/FULL_RU22DB_20250920_0e444vkn_14_1_1 RECID=14 STAMP=1212317335
deleted backup piece
backup piece handle=/backup/FULL_RU22DB_20250920_0f444vl6_15_1_1 RECID=15 STAMP=1212317350
deleted backup piece
backup piece handle=/backup/FULL_RU22DB_20250920_0g444vll_16_1_1 RECID=16 STAMP=1212317365
deleted backup piece
backup piece handle=/backup/ARCH_RU22DB_20250920_0h444vmf_17_1_1 RECID=17 STAMP=1212317391
deleted backup piece
backup piece handle=/u01/app/oracle/product/19.0.0.0/db_home2/dbs/c-683921111-20250920-00 RECID=18 STAMP=1212317392
deleted backup piece
backup piece handle=/backup/ARCH_RU22DB_20250920_0j444vtf_19_1_1 RECID=19 STAMP=1212317616
deleted backup piece
backup piece handle=/u01/app/oracle/product/19.0.0.0/db_home2/dbs/c-683921111-20250920-01 RECID=20 STAMP=1212317618
Deleted 10 objects

RMAN> list backup;

specification does not match any backup in the repository

RMAN> 

バックアップ保存先ディレクトリ内のファイルも同時に削除されます。

まとめ

本記事ではシンプルなRMANバックアップ方法を解説しました。
RMANコマンドでは、色々な要件を満たせるように多様なオプションが存在していますが、まずはフルバックアップをしておくことができれば、万が一の際にも安心できるかと思います。

Oracle Database 19c Backup and Recovery
Oracle Database Backup and Recovery 12c, 19c and 23ai
おススメ記事

コメント

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