RMAN(Recovery Manager)是一种用于备份(backup)、还原(restore)和恢复(recover)数据库的 Oracle 工具。RMAN只能用于ORACLE8或更高的版本中。它能够备份整个数据库或数据库部件,如表空间、数据文件、控制文件、归档文件以及Spfile参数文件。RMAN也允许您进行增量数据块级别的备份,增量RMAN备份是时间和空间有效的,因为他们只备份自上次备份以来有变化的那些数据块。而且,通过RMAN提供的接口,第三方的备份与恢复软件如veritas将提供更强大的备份与恢复的管理功能。通过RMAN,也提供了其它更多功能,如数据库的克隆、采用RMAN建立备用数据库、利用RMAN备份与移动裸设备(RAW)上的文件等工作将变得更方便简单。9i的RMAN通过增强的自动配置与管理功能,以及特有的块级别的恢复,将使备份与恢复工作变得更加快捷与完美。

  RMAN可以用来备份和还原数据库文件、归档日志和控制文件。它也可以用来执行完全或不完全的数据库恢复。与传统工具相比,RMAN具有独特的优势:跳过未使用的数据块。当备份一个RMAN备份集时,RMAN不会备份从未被写入的数据块,而传统的方式无法获知那些是未被使用的数据块。

  本文讲解rman以下内容:

    • rman的备份;包括整个数据库或者表空间、数据文件、控制文件、参数文件、归档文件的示例
    • rman的增量备份
    • rman的备份脚本
    • rman的还原和恢复

本文涉及到是日常工作能涉及到的内容:若要深入学习rman;还请您去撸一撸官方文档或者相关书籍。如数据库的克隆、采用RMAN建立备用数据库这部分内容留在后面章节学习。

在学习之前;先了解下rman如何连接数据库

[oracle@oracle235 ~]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Wed Aug 8 18:07:35 2018

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

connected to target database: ORA235 (DBID=2047494122)

RMAN>

二. rman备份

2.1 备份整个数据库

eg: backup database format '/data/backup/db_full_%U';

RMAN> backup database format '/data/backup/db_full_%U';

Starting backup at 08-AUG-18
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00005 name=/data/oracle/data/lottu01.dbf
input datafile file number=00001 name=/u01/app/oradata/ora235/system01.dbf
input datafile file number=00002 name=/u01/app/oradata/ora235/sysaux01.dbf
input datafile file number=00003 name=/u01/app/oradata/ora235/undotbs01.dbf
input datafile file number=00004 name=/u01/app/oradata/ora235/users01.dbf
channel ORA_DISK_1: starting piece 1 at 08-AUG-18
channel ORA_DISK_1: finished piece 1 at 08-AUG-18
piece handle=/data/backup/db_full_03ta2cqc_1_1 tag=TAG20180808T180916 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:45
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 08-AUG-18
channel ORA_DISK_1: finished piece 1 at 08-AUG-18
piece handle=/data/backup/db_full_04ta2crp_1_1 tag=TAG20180808T180916 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 08-AUG-18

2.2 备份表空间

eg: backup tablespace lottu format '/data/backup/tsp_lottu_%U';

RMAN>  backup tablespace lottu format '/data/backup/tsp_lottu_%U';

Starting backup at 08-AUG-18
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00005 name=/data/oracle/data/lottu01.dbf
channel ORA_DISK_1: starting piece 1 at 08-AUG-18
channel ORA_DISK_1: finished piece 1 at 08-AUG-18
piece handle=/data/backup/tsp_lottu_05ta2e01_1_1 tag=TAG20180808T182921 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 08-AUG-18

2.3 备份数据文件

eg: backup datafile 5 format '/data/backup/df_5_%U';

RMAN> backup datafile 5 format '/data/backup/df_5_%U';

Starting backup at 08-AUG-18
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00005 name=/data/oracle/data/lottu01.dbf
channel ORA_DISK_1: starting piece 1 at 08-AUG-18
channel ORA_DISK_1: finished piece 1 at 08-AUG-18
piece handle=/data/backup/df_5_06ta2e6k_1_1 tag=TAG20180808T183252 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 08-AUG-18

  在rman中备份数据文件有两种形式;backup datafile file_idbackup datafile file_name。根据SQL‘select file_id,file_name from dba_data_files’可得:

SQL> select file_id,file_name from dba_data_files;

   FILE_ID FILE_NAME
---------- ----------------------------------------
  1 /u01/app/oradata/ora235/system01.dbf
  2 /u01/app/oradata/ora235/sysaux01.dbf
  3 /u01/app/oradata/ora235/undotbs01.dbf
  4 /u01/app/oradata/ora235/users01.dbf
  5 /data/oracle/data/lottu01.dbf

  上面等同于:backup datafile '/data/oracle/data/lottu01.dbf' ;

RMAN> backup datafile '/data/oracle/data/lottu01.dbf' format '/data/backup/dfname_5_%U';

Starting backup at 08-AUG-18
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00005 name=/data/oracle/data/lottu01.dbf
channel ORA_DISK_1: starting piece 1 at 08-AUG-18
channel ORA_DISK_1: finished piece 1 at 08-AUG-18
piece handle=/data/backup/dfname_5_07ta2ei5_1_1 tag=TAG20180808T183901 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 08-AUG-18

2.4 备份控制文件

rman对控制文件备份有特殊保护;一般不需要单独备份控制文件。在备份系统表空间system或者备份数据库。都会自动备份控制文件。在前面备份数据库时;我们可以看到这样的信息

including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 08-AUG-18
channel ORA_DISK_1: finished piece 1 at 08-AUG-18
piece handle=/data/backup/db_full_04ta2crp_1_1 tag=TAG20180808T180916 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 08-AUG-18

  在查看控制文件的备份集;我们可以看到:说明对控制文件已经有备份了。

RMAN> list backup of controlfile;


List of Backup Sets
===================


BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
2       Full    9.36M      DISK        00:00:01     08-AUG-18      
        BP Key: 2   Status: AVAILABLE  Compressed: NO  Tag: TAG20180808T180916
        Piece Name: /data/backup/db_full_04ta2crp_1_1
  Control File Included: Ckp SCN: 915985       Ckp time: 08-AUG-18

  eg: backup current controlfile format '/data/backup/ct_%U';

RMAN> backup current controlfile format '/data/backup/ct_%U';

Starting backup at 08-AUG-18
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
channel ORA_DISK_1: starting piece 1 at 08-AUG-18
channel ORA_DISK_1: finished piece 1 at 08-AUG-18
piece handle=/data/backup/ct_08ta2f97_1_1 tag=TAG20180808T185119 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 08-AUG-18

2.5 备份归档日志

rman对备份归档日志有两种形式:backup archivelog plus archivelog

  • eg: backup archivelog all format '/data/backup/arch_%U';
  • eg: backup current controlfile format '/data/backup/ct_%U' plus archivelog;
RMAN> backup current controlfile format '/data/backup/ct_%U' plus archivelog;

Starting backup at 08-AUG-18
current log archived
using channel ORA_DISK_1
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=56 RECID=1 STAMP=983577870
input archived log thread=1 sequence=57 RECID=2 STAMP=983579059
channel ORA_DISK_1: starting piece 1 at 08-AUG-18
channel ORA_DISK_1: finished piece 1 at 08-AUG-18
piece handle=/u01/app/oracle/dbs/09ta2grj_1_1 tag=TAG20180808T191811 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
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=1 RECID=3 STAMP=983641357
input archived log thread=1 sequence=2 RECID=4 STAMP=983647091
channel ORA_DISK_1: starting piece 1 at 08-AUG-18
channel ORA_DISK_1: finished piece 1 at 08-AUG-18
piece handle=/u01/app/oracle/dbs/0ata2grk_1_1 tag=TAG20180808T191811 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 08-AUG-18

Starting backup at 08-AUG-18
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
channel ORA_DISK_1: starting piece 1 at 08-AUG-18
channel ORA_DISK_1: finished piece 1 at 08-AUG-18
piece handle=/data/backup/ct_0bta2grl_1_1 tag=TAG20180808T191813 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 08-AUG-18

Starting backup at 08-AUG-18
current log archived
using channel ORA_DISK_1
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=3 RECID=5 STAMP=983647095
channel ORA_DISK_1: starting piece 1 at 08-AUG-18
channel ORA_DISK_1: finished piece 1 at 08-AUG-18
piece handle=/u01/app/oracle/dbs/0cta2grn_1_1 tag=TAG20180808T191815 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 08-AUG-18
View Code

相关文章: