トップ > DBA上級 バックアップリカバリ > 3章
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モードでのバックアップ取得について確認していきました。