制御ファイルの自動バックアップ機能を試す（Oracle Database 19c）

制御ファイルは小さなファイルですが、データベースの構成情報やチェックポイントの情報等を保存する重要なファイルです。通常複数のファイルに多重化します（初期化パラメーターcontrol_files）。Oracle Databaseにはこのファイルを自動的にバックアップする機能が提供されています。


# 制御ファイルの自動バックアップ

Oracle Database 12c (12.1) 以降、制御ファイルの自動バックアップ機能がデフォルトで有効になっています。
この機能はRMANのパラメーター CONTROLFILE AUTOBACKUPパラメーターで制御します。また自動バックアップ先はCONTROLFILE AUTOBACKUP FORMATで構成します。


```
$ rman target /

Recovery Manager: Release 19.0.0.0.0 - Production on 月 1月 11 15:51:35 2021
Version 19.8.0.0.0

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

ターゲット・データベース: O19A (DBID=2941070004)に接続されました

RMAN> SHOW CONTROLFILE AUTOBACKUP;

db_unique_name O19AのデータベースにおけるRMAN構成パラメータ:
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default

RMAN> SHOW CONTROLFILE AUTOBACKUP FORMAT;

db_unique_name O19AのデータベースにおけるRMAN構成パラメータ:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default

RMAN>
```

[バックアップ・フォーマット](https://docs.oracle.com/cd/F19136_01/rcmrf/formatSpec.html)のデフォルト値である%Fは、「c-{DBID}-{YYMMDD}-{順序}」のフォーマットになることを示しています。またディレクトリを省略した場合は$ORACLE_HOME/dbsが使われます。


#いつ自動バックアップされるか

[バックアップおよびリカバリ・リファレンス](https://docs.oracle.com/cd/F19136_01/rcmrf/CONFIGURE.html#GUID-B5094E73-C26C-4FED-AE39-8C2E9540050A)マニュアルによると、
自動バックアップは以下の場合に取得されます。


- RMANプロンプトでBACKUPまたはCREATE CATALOGコマンドが発行された後。
- RUNブロック内のBACKUPコマンドの後に、BACKUP以外のコマンドが続いている場合。
- 各RUNブロックの終わり(そのブロックの最後のコマンドがBACKUPだった場合)。
- ARCHIVELOGモードでのデータベース構造の変更後。NOARCHIVELOGモードでは、構造の変更後にデータベースの自動バックアップは実行されません。

上記のうち、「データベース構造の変更」時に自動バックアップが取得されることを確認します。
マニュアルには構造変更が行われた場合にはすぐにバックアップが取得されるわけではなく、数分ごとに発生したイベントを単一の自動バックアップにまとめると記載があります。

まず、表領域を追加してみます。

```
SQL> CREATE TABLESPACE users2 DATAFILE '/u01/app/oracle/oradata/O19A/users02.dbf' SIZE 10M;

表領域が作成されました。
```

10分後にバックアップを確認します。表領域作成時間は16:06:56でした。TAG項目から制御ファイルの自動バックアップはほぼ7分後の16:14:07に自動バックアップが動作しています。

```
RMAN> LIST BACKUP;

リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています

バックアップ・セットのリスト
===================


BS Key  Type LV Size       Device Type Elapsed Time 終了時間
------- ---- -- ---------- ----------- ------------ --------
50      Full    10.39M     DISK        00:00:00     21-01-11
        BPキー: 50   ステータス: AVAILABLE  圧縮: NO  タグ: TAG20210111T161407
        ピース名: /u01/app/oracle/product/19.0.0/dbhome_1/dbs/c-2941070004-20210111-00
  含まれている制御ファイル: Ckp SCN: 10748728     Ckp時間: 21-01-11
```

次に複数の表領域を１分間隔で追加します。


```
SQL> CREATE TABLESPACE users3 DATAFILE '/u01/app/oracle/oradata/O19A/users03.dbf' SIZE 10M;

表領域が作成されました。

SQL> CREATE TABLESPACE users4 DATAFILE '/u01/app/oracle/oradata/O19A/users04.dbf' SIZE 10M;

表領域が作成されました。

```

最後の表領域追加が16:19:49でした。RMANの出力結果を確認すると約10分後の 16:29:07 に自動バックアップが追加されていることがわかります。

```
RMAN> LIST BACKUP;


バックアップ・セットのリスト
===================


BS Key  Type LV Size       Device Type Elapsed Time 終了時間
------- ---- -- ---------- ----------- ------------ --------
50      Full    10.39M     DISK        00:00:00     21-01-11
        BPキー: 50   ステータス: AVAILABLE  圧縮: NO  タグ: TAG20210111T161407
        ピース名: /u01/app/oracle/product/19.0.0/dbhome_1/dbs/c-2941070004-20210111-00
  含まれている制御ファイル: Ckp SCN: 10748728     Ckp時間: 21-01-11

BS Key  Type LV Size       Device Type Elapsed Time 終了時間
------- ---- -- ---------- ----------- ------------ --------
51      Full    10.39M     DISK        00:00:00     21-01-11
        BPキー: 51   ステータス: AVAILABLE  圧縮: NO  タグ: TAG20210111T162907
        ピース名: /u01/app/oracle/product/19.0.0/dbhome_1/dbs/c-2941070004-20210111-01
  含まれている制御ファイル: Ckp SCN: 10750995     Ckp時間: 21-01-11

```

当然ながら、RMANを使ってデータベース全体のバックアップを実行した場合でも制御ファイルのバックアップが行われます。

```
RMAN> BACKUP DATABASE;

backupを21-01-11で開始しています
チャネルORA_DISK_1の使用
チャネルORA_DISK_1: フル・データファイル・バックアップ・セットを開始しています
チャネルORA_DISK_1: バックアップ・セットにデータファイルを指定しています
入力データファイル ファイル番号=00002 名前=/u01/app/oracle/oradata/O19A/sysaux01.dbf
入力データファイル ファイル番号=00001 名前=/u01/app/oracle/oradata/O19A/system01.dbf
入力データファイル ファイル番号=00003 名前=/u01/app/oracle/oradata/O19A/undotbs01.dbf
入力データファイル ファイル番号=00004 名前=/u01/app/oracle/oradata/O19A/users01.dbf
チャネルORA_DISK_1: ピース1 (21-01-11)を起動します
チャネルORA_DISK_1: ピース1 (21-01-11)が完了しました
ピース・ハンドル=/u01/app/oracle/admin/O19A/backup/rman_O19A_20210111_7uvkchs8_1_1.bkp タグ=TAG20210111T164040 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:03
backupを21-01-11で終了しました

Control File Autobackupを21-01-11で開始しています
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/c-2941070004-20210111-03 コメント=NONE
Control File Autobackupを21-01-11で終了しました

RMAN> LIST BACKUP;


バックアップ・セットのリスト
===================


BS Key  Type LV Size       Device Type Elapsed Time 終了時間
------- ---- -- ---------- ----------- ------------ --------
50      Full    10.39M     DISK        00:00:00     21-01-11
        BPキー: 50   ステータス: AVAILABLE  圧縮: NO  タグ: TAG20210111T161407
        ピース名: /u01/app/oracle/product/19.0.0/dbhome_1/dbs/c-2941070004-20210111-00
  含まれている制御ファイル: Ckp SCN: 10748728     Ckp時間: 21-01-11

BS Key  Type LV Size       Device Type Elapsed Time 終了時間
------- ---- -- ---------- ----------- ------------ --------
51      Full    10.39M     DISK        00:00:00     21-01-11
        BPキー: 51   ステータス: AVAILABLE  圧縮: NO  タグ: TAG20210111T162907
        ピース名: /u01/app/oracle/product/19.0.0/dbhome_1/dbs/c-2941070004-20210111-01
  含まれている制御ファイル: Ckp SCN: 10750995     Ckp時間: 21-01-11

BS Key  Type LV Size       Device Type Elapsed Time 終了時間
------- ---- -- ---------- ----------- ------------ --------
54      Full    1.04G      DISK        00:00:02     21-01-11
        BPキー: 54   ステータス: AVAILABLE  圧縮: NO  タグ: TAG20210111T164040
        ピース名: /u01/app/oracle/admin/O19A/backup/rman_O19A_20210111_7uvkchs8_1_1.bkp
  バックアップ・セット54のデータファイルのリスト
  File LV Type Ckp SCN    Ckp時間 Abs Fuz SCN Sparse Name
  ---- -- ---- ---------- -------- ----------- ------ ----
  1       Full 10752812   21-01-11              NO    /u01/app/oracle/oradata/O19A/system01.dbf
  2       Full 10752812   21-01-11              NO    /u01/app/oracle/oradata/O19A/sysaux01.dbf
  3       Full 10752812   21-01-11              NO    /u01/app/oracle/oradata/O19A/undotbs01.dbf
  4       Full 10752812   21-01-11              NO    /u01/app/oracle/oradata/O19A/users01.dbf

BS Key  Type LV Size       Device Type Elapsed Time 終了時間
------- ---- -- ---------- ----------- ------------ --------
55      Full    10.39M     DISK        00:00:00     21-01-11
        BPキー: 55   ステータス: AVAILABLE  圧縮: NO  タグ: TAG20210111T164043
        ピース名: /u01/app/oracle/product/19.0.0/dbhome_1/dbs/c-2941070004-20210111-03
  含まれている制御ファイル: Ckp SCN: 10752825     Ckp時間: 21-01-11

RMAN>
```


上記のように制御ファイルのバックアップは、RMANによるバックアップ時だけでなく構造変化が発生したときにも自動的に行われることがわかります。