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

Oracle

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

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

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

りお
りお

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

本記事の前提

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

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

フルバックアップ取得

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

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

$ cat ru22.env 

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

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

backup database format '/backup/FULL_%d_%T_%U' plus archivelog format '/backup/ARCH_%d_%T_%U';

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

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

RMAN> backup database format '/backup/FULL_%d_%T_%U' plus archivelog format '/backup/ARCH_%d_%T_%U';

Starting backup at 20-SEP-25
current log archived
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=13 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=31 RECID=9 STAMP=1212317279
input archived log thread=1 sequence=32 RECID=10 STAMP=1212317280
input archived log thread=1 sequence=33 RECID=11 STAMP=1212317281
  :
channel ORA_DISK_1: finished piece 1 at 20-SEP-25
piece handle=/backup/ARCH_RU22DB_20250920_0h444vmf_17_1_1 tag=TAG20250920T104951 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 20-SEP-25

Starting Control File and SPFILE Autobackup at 20-SEP-25
piece handle=/u01/app/oracle/product/19.0.0.0/db_home2/dbs/c-683921111-20250920-00 comment=NONE
Finished Control File and SPFILE Autobackup at 20-SEP-25

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
------- ---------- ----------- ------------ ---------------
11      5.86M      DISK        00:00:00     20-SEP-25      
        BP Key: 11   Status: AVAILABLE  Compressed: NO  Tag: TAG20250920T104813
        Piece Name: /backup/ARCH_RU22DB_20250920_0b444vjd_11_1_1

  List of Archived Logs in backup set 11
  Thrd Seq     Low SCN    Low Time  Next SCN   Next Time
  ---- ------- ---------- --------- ---------- ---------
  1    31      1675810    18-SEP-25 1677795    20-SEP-25
  1    32      1677795    20-SEP-25 1677802    20-SEP-25
  1    33      1677802    20-SEP-25 1677809    20-SEP-25
  1    34      1677809    20-SEP-25 1677830    20-SEP-25

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
12      Full    1.10G      DISK        00:00:10     20-SEP-25      
        BP Key: 12   Status: AVAILABLE  Compressed: NO  Tag: TAG20250920T104814
        Piece Name: /backup/FULL_RU22DB_20250920_0c444vjf_12_1_1
  List of Datafiles in backup set 12
  File LV Type Ckp SCN    Ckp Time  Abs Fuz SCN Sparse Name
  ---- -- ---- ---------- --------- ----------- ------ ----
  1       Full 1677850    20-SEP-25              NO    /u01/app/oracle/oradata/RU22DB/system01.dbf
  3       Full 1677850    20-SEP-25              NO    /u01/app/oracle/oradata/RU22DB/sysaux01.dbf
  5       Full 1677850    20-SEP-25              NO    /u01/app/oracle/oradata/RU22DB/undotbs01.dbf
  7       Full 1677850    20-SEP-25              NO    /u01/app/oracle/oradata/RU22DB/users01.dbf
  :

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

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

$ cd /backup
$ ls -ltr
合計 3356312
-rw-r-----. 1 oracle oinstall    6144000  9月 20 10:48 ARCH_RU22DB_20250920_0b444vjd_11_1_1
-rw-r-----. 1 oracle oinstall 1180409856  9月 20 10:48 FULL_RU22DB_20250920_0c444vjf_12_1_1
-rw-r-----. 1 oracle oinstall  670760960  9月 20 10:48 FULL_RU22DB_20250920_0d444vk8_13_1_1
-rw-r-----. 1 oracle oinstall  490094592  9月 20 10:48 FULL_RU22DB_20250920_0e444vkn_14_1_1
-rw-r-----. 1 oracle oinstall  446504960  9月 20 10:49 FULL_RU22DB_20250920_0f444vl6_15_1_1
-rw-r-----. 1 oracle oinstall  642940928  9月 20 10:49 FULL_RU22DB_20250920_0g444vll_16_1_1
-rw-r-----. 1 oracle oinstall       5632  9月 20 10:49 ARCH_RU22DB_20250920_0h444vmf_17_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 20-SEP-25
current log archived
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=13 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=31 RECID=9 STAMP=1212317279
input archived log thread=1 sequence=32 RECID=10 STAMP=1212317280
input archived log thread=1 sequence=33 RECID=11 STAMP=1212317281
input archived log thread=1 sequence=34 RECID=12 STAMP=1212317293
input archived log thread=1 sequence=35 RECID=13 STAMP=1212317391
input archived log thread=1 sequence=36 RECID=14 STAMP=1212317615
channel ORA_DISK_1: starting piece 1 at 20-SEP-25
channel ORA_DISK_1: finished piece 1 at 20-SEP-25
piece handle=/backup/ARCH_RU22DB_20250920_0j444vtf_19_1_1 tag=TAG20250920T105335 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 20-SEP-25

Starting Control File and SPFILE Autobackup at 20-SEP-25
piece handle=/u01/app/oracle/product/19.0.0.0/db_home2/dbs/c-683921111-20250920-01 comment=NONE
Finished Control File and SPFILE Autobackup at 20-SEP-25

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コマンドでは、色々な要件を満たせるように多様なオプションが存在していますが、まずはフルバックアップをしておくことができれば、万が一の際にも安心できるかと思います。

コメント

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