3章 RMANバックアップ その1
本章ではRMANを使用したバックアップの取得について確認していきます。
RMAN基本コマンド
RMANはOracleが提供するバックアップリカバリを実施するツールです。
RMANはデータベースがどんなファイルシステム(ASM,rawデバイス,OSファイルシステム etc)
でも取得することができるのが特徴です。
それではさっそく使用していきましょう。
RMANの起動方法は以下のとおりです。
[構文] RMANログイン(パスワード認証)
$ rman target sysユーザ/パスワード[@ネットサービス名]
[構文] RMANログイン(OS認証)
$ rman target /
上記コマンドでtargetというのは使用しているデータベースを表しています。
RMANのログインもSQL*Plusと同様にパスワード認証とOS認証でログインすることができます。
RMANのバックアップ取得
では次にバックアップの取得方法です。
バックアップの取得については全体、表領域単位で取得が可能です。
[構文] データベース全体バックアップ
RMAN> BACKUP [ as copy | as backupset ]
2> DATABASE [ format "バックアップファイル名" ];
データベース全体のバックアップを取得した場合はすべてのデータファイル、制御ファイル、SPFILEが取得されます。
また全体バックアップは、対象のデータファイルや対象の表領域のみリストアすることも可能です。
バックアップファイルのタイプはバックアップセットがデフォルトですが、as copyを指定することでイメージコピーで取得することが出来ます。
[構文] 表領域単位バックアップ
RMAN> BACKUP [ as copy | as backupset ]
2> TABLESPACE 表領域名 [ ,表領域名 ]
3> [ format "バックアップファイル名" ] ;
[構文] データファイル単位バックアップ
RMAN> BACKUP [ as copy | as backupset ]
2> DATAFILE データファイル名|データファイル番号
3> [ format "バックアップファイル名" ];
上記コマンドで表領域単位、データファイル単位で取得することができます。また取得したいデータファイル番号を指定することもできます。
データファイル番号はDBA_DATA_FILESで確認できます。
$ rman target /
Recovery Manager: Release 12.1.0.1.0 - Production on XX:XX:XX 2017
Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=397531058)
RMAN> select tablespace_name,file_id,file_name from dba_data_files;
TABLESPACE_NAME FILE_ID FILE_NAME
------------------------ ---------- ---------------------------------------------------
SYSTEM 1 /home/oracle/12101/oradata/orcl/system01.dbf
SYSAUX 3 /home/oracle/12101/oradata/orcl/sysaux01.dbf
UNDOTBS 4 /home/oracle/12101/oradata/orcl/undotbs01.dbf
USERS 6 /home/oracle/12101/oradata/orcl/users01.dbf
上記のように12c以降ではRMANでSQL文を実行できます。
RMANのデフォルト値
RMANにはデフォルト値が用意されているため、バックアップは「backup database;」だけで取得することが出来ます。
デフォルト値はshowコマンドで確認できます。
RMAN> show DEVICE TYPE;
RMAN configuration parameters for database with db_unique_name orcl are:
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
上記ではバックアップ先はディスクに保存、パラレル度は1、バックアップセットで取得することが分かります。
また変更はconfigureコマンドで設定できます。詳細は別の章にて書いていきたいと思います。
NOARCHIVELOGモードでのバックアップ取得
それでは今回はデータベース全体のバックアップを取得してみましょう。
データベースの状態はNOARCHIVELOGモードです。
$ rman target /
Recovery Manager: Release 12.1.0.1.0 - Production on XX:XX:XX 2017
Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=397531058)
RMAN> backup database;
Starting backup at XX-XX-XX
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on ORA_DISK_1 channel at MM/DD/YYYY
ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode
NOARCHIVELOGではオンラインバックアップの取得が出来ない為、エラーとなりました。
NOARCHIVELOGモードはオフラインバックアップのみ取得が出来ます。
RMAN> shutdown immediate
database closed
database dismounted
Oracle instance shut down
RMAN> startup mount
connected to target database (not started)
Oracle instance started
database mounted
Total System Global Area 1068937216 bytes
Fixed Size 2296576 bytes
Variable Size 746587392 bytes
Database Buffers 314572800 bytes
Redo Buffers 5480448 bytes
RMAN> backup database;
Starting backup at 08-JUL-16
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=6 device type=DISK
Starting Control File and SPFILE Autobackup at XX-XXX-XX
piece handle=/home/oracle/recovery_area/ORCL/autobackup/2016_XX_XX/o1_mf_s_
XX_XX_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at XX-XXX-XX
データベースをMOUNT状態にし、バックアップを取得しました。
分かりづらいですが、データベース全体のバックアップを取得したので、すべてのデータファイルと
制御ファイル、SPFILEが取得されています。
取得したバックアップの表示
取得したバックアップは自動的には削除されません。
不要なバックアップは削除し、新しく取得するバックアップの為に領域を確保したりする必要があります。
取得したバックアップの情報はlistコマンドで確認できます。
[構文] バックアップセットの表示
RMAN> LIST BACKUP [SUMMARY];
[構文] イメージコピーの表示
RMAN> LIST COPY;
[構文] アーカイブログの表示
RMAN> LIST ARCHIVELOG ALL;
LISTコマンドはその他にも色々な情報が取得できます。
その他はマニュアルを参照ください。
RMAN> list backup summary;
List of Backups
===============
Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
175 B F A DISK 08-JUL-16 1 1 NO TAG201
176 B F A DISK 08-JUL-16 1 1 NO TAG201
177 B F A DISK 08-JUL-16 1 1 NO TAG201
178 B F A DISK 08-JUL-16 1 1 NO TAG201
179 B F A DISK 08-JUL-16 1 1 NO TAG201
RMAN> list backup;
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
175 Full 6.28G DISK 00:03:07 26-JUL-16
BP Key: 175 Status: AVAILABLE Compressed: NO Tag: TAG20160726T090
Piece Name: /u01/app/oracle/product/12.1.0/dbhome_1/dbs/6irbld4t_1_1
List of Datafiles in backup set 175
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
1 Full 478677142 08-JUL-16 /u01/app/・・・/ORCL/system01.dbf
3 Full 478677142 08-JUL-16 /u01/app/・・・/ORCL/sysaux01.dbf
4 Full 478677142 08-JUL-16 /u01/app/・・・/ORCL/undotbs01.dbf
6 Full 478677142 08-JUL-16 /u01/app/・・・/ORCL/users01.dbf
LISTコマンドでどのファイルをバックアップし、どこに保存したか確認できます。
今回の例では「/u01/app/oracle/product/12.1.0/dbhome_1/dbs/6irbld4t_1_1」という
ファイル名でバックアップセットが作成されています。
取得したバックアップの削除
不要になったバックアップはDELETEコマンドで削除することが出来ます。
[構文] バックアップの削除
RMAN> DELETE [BACKUP|COPY] TAG タグ名;
上記コマンドを使用して、バックアップセットやイメージコピー、アーカイブログを削除することが出来ます。
RMAN> delete backup tag TAG20170407T164804;
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=15 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=259 device type=DISK
List of Backup Pieces
BP Key BS Key Pc# Cp# Status Device Type Piece Name
------- ------- --- --- ----------- ----------- ----------
342 313 1 1 AVAILABLE DISK /home/oracle/flash_reco
Do you really want to delete the above objects (enter YES or NO)? y
deleted backup piece
backup piece handle=/home/oracle/flash_recovery_area/ORCL/autobackup/2017
すべてのアーカイブログを削除する場合は、delete allコマンドを使用します。
RMAN> delete archivelog all;
released channel: ORA_DISK_1
released channel: ORA_DISK_2
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=15 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=259 device type=DISK
List of Archived Log Copies for database with db_unique_name ORCL
=====================================================================
Key Thrd Seq S Low Time
------- ---- ------- - ---------
2616 1 803 A 15-MAR-17
Name: /home/oracle/flash_recovery_area/ORCL/archivelog/2017_03_
・・・
Do you really want to delete the above objects (enter YES or NO)? yes
deleted archived log
archived log file name=/home/oracle/flash_recovery_area/ORCL/archivelog
バックアップを取得するとそれだけディスク領域を使用するため、定期的に削除を行ってください。
その他、バックアップの保存ポリシーも設定でき、不要になったバックアップを自動的に削除することもできます。
本章はNOARCHIVELOGモードでのバックアップ取得について確認していきました。