ablog

不器用で落着きのない技術者のメモ

rman で制御ファイルとSPFILEを自動バックアップする方法

Oracle Database で rman を使って制御ファイルと SPFILE が変更されると自動的にバックアップされるようにする方法。
rman リポジトリには制御ファイルを使う構成。


設定する。

$ su - oracle 
$ rman target / nocatalog
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup01/backup_data/oracle/orcl/rman/%F';
RMAN> SHOW ALL;
RMAN> EXIT

制御ファイルを変更すると、自動的にバックアップが取得されることを確認する。

$ sqlplus / as sysdba
SQL> create tablespace test datafile '/u02/oradata/orcl/test01.dbf' size 5m;
SQL> exit
$ ls -l /backup01/backup_data/oracle/orcl/rman
-rw-r----- 1 oracle oinstall 12550144 Jan 19 11:28 c-2080349925-20100119-04
-rw-r----- 1 oracle oinstall 12550144 Jan 19 11:29 c-2080349925-20100119-05
$ sqlplus / as sysdba
SQL> drop tablespace test including contents  and datafiles cascade constraints;

うまくいかないときは、アラートログを確認すべし。以下はバックアップ先のパスにスペースが入っていて自動バックアップに失敗したときのエラーメッセージ。

$ less $ORACLE_HOME/admin/bbump/alert_orcl.log
drop tablespace test including contents  and datafiles cascade constraints
Tue Jan 19 11:27:37 2010
Deleted file /u02/oradata/orcl/test01.dbf
Starting control autobackup
********************  WARNING ***************************
The errors during Server autobackup are not fatal, as it
is attempted after sucessful completion of the command.
However, it is recomended to take an RMAN control file
backup as soon as possible because the Autobackup failed
with the following error:
ORA-19624: operation failed, retry possible
ORA-19504: failed to create file "/u01/app/oracle/product/10.2.0/db_1/dbs/ /backup01/backup_data/oracle/orcl/rman/c-2080349925-20100119-03"
ORA-27040: file create error, unable to create file
Linux-x86_64 Error: 2: No such file or directory
********************  END OF WARNING *******************
Completed: drop tablespace test including contents  and datafiles cascade constraints

SPFILE を変更してみると、

SQL> show parameter sga_target
SQL> alter system set sga_target = 1G scope=both;
SQL> show parameter sga_target
SQL> alter system set sga_target = 2G scope=both;
SQL> show parameter sga_target
SQL> exit
$ ls -l /backup01/backup_data/oracle/orcl/rman
total 24544
-rw-r----- 1 oracle oinstall 12550144 Jan 19 11:28 c-2080349925-20100119-04
-rw-r----- 1 oracle oinstall 12550144 Jan 19 11:29 c-2080349925-20100119-05

あれ?バックアップが取得されてない。
OTN のドキュメントを見てみると、

制御ファイル内のデータベースの構造メタデータが変更されたり、バックアップ・レコードが追加されると、Recovery Managerは、制御ファイルおよびサーバー・パラメータ・ファイルを自動的にバックアップするように構成できます。

バックアップおよびリカバリの設定と構成

なるほど。制御ファイルが変更されると、制御ファイルと SPFILE が自動バックアップされる。つまり、SPFILE を変更しても自動バックアップされないということか。