转载自 RAMESH NATARAJAN on 8,27, 2013 原文链接:https://www.thegeekstuff.com/2013/08/oracle-rman-backup/
即使您不是Oracle DBA,也会遇到必须备份Oracle数据库的情况。 使用Oracle RMAN,您可以为数据库进行热备份,即使在数据库正在运行中,数据库备份也会保持和线上一致。 本教程将介绍如何使用RMAN执行Oracle DB备份。 对于没有耐心的人来说,下面是一个快速片段,它对数据库和存档日志都进行RMAN备份。
RMAN> BACKUP AS BACKUPSET DATABASE PLUS ARCHIVELOG;
* 1. 查看当前RMAN配置
在进行备份之前,我们必须配置某些RMAN参数。例如,您希望RMAN多长时间重新备份,等等。 在修改任何配置之前,执行以下命令查看所有当前RMAN配置设置。 要连接到RMAN,请从命令行执行以下操作。这将带您到RMAN>命令提示符,从这里您可以执行所有RMAN命令。
$ rman target /
Recovery Manager: Release 10.2.0.3.0 - Production on Sat Aug 10 11:21:29 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: DEVDB (DBID=821773)
RMAN>
要查看当前的RMAN配置,请执行“show all”。
RMAN> SHOW ALL;
using target database control file instead of recovery catalog
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO "/backup/rman/ctl_%F";
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET PARALLELISM 2;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT "/backup/rman/full_%u_%s_%p" MAXPIECESIZE 2048 M;
CONFIGURE MAXSETSIZE TO UNLIMITED;
CONFIGURE ENCRYPTION FOR DATABASE OFF;
CONFIGURE ENCRYPTION ALGORITHM 'AES128';
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE;
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/10.2.0/dbs/snapcf_devdb.f'; # default
如上所示,它显示各种RMAN参数及其当前值。
* 2. 稍微修改下RMAN配置
Location:一个重要配置参数是要保存RMAN备份的位置。在下面的示例中,我将RMAN备份loacation设置为“/backup/ RMAN /”
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/rman/full_%u_%s_%p';
Retention Period:接下来,您应该指定备份保留时间。当RMAN进行备份时,它会自动删除所有超过保留期的旧备份。在下面的示例中,我将保留期设置为7天,这将使数据库备份保持一周。
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
验证上述两个更改已经完成。
RMAN> SHOW ALL;
..
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/rman/full_%u_%s_%p';
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
..
Clear a Parameter:如果希望清除已经配置的参数并将其值设置为默认值,请在配置末尾使用Clear,如下所示。
RMAN> CONFIGURE RETENTION POLICY CLEAR;
在本例中,由于清除了保留率策略的值,所以将其设置为默认值,即1。因此,保留策略设置为1天,如下所示。
RMAN> SHOW ALL;
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
* 3.Oracle数据库备份
确保CHANNEK DEVICE TYPE DISK FORMAT中配置的目录存在。比如上栗中: /backup/rman/
$ mkdir -p /backup/rman
目录创建后。执行备份,我们来看看到它里面有什么。
$ ls -l /backup/rman
total 0
我们可以使用镜像复制或在备份集中进行备份。强烈建议使用RMAN备份集备份数据库。 RMAN将备份存储在备份集中,备份集就是包含备份数据的一大堆文件。只有RMAN了解这些文件的格式。因此,如果使用RMAN备份Oracle DB,只有RMAN知道如何读取备份并恢复它。 通常,我们将使用“BACKUP AS BACKUPSET”备份数据库。因此,要在没有启用存档日志的情况下对数据库进行完全备份,请执行以下操作。
RMAN> BACKUP AS BACKUPSET DATABASE
启用存档日志时对数据库进行全面备份,请执行以下操作:
RMAN> BACKUP AS BACKUPSET DATABASE PLUS ARCHIVELOG;
还可以只备份特定的表空间。下面的示例只备份PRD01表空间。
RMAN> BACKUP AS BACKUPSET TABLESPACE PRD01;
RMAN备份输出将类似于以下内容:
RMAN> BACKUP AS BACKUPSET DATABASE
Starting backup at 10-AUG-13
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=193 devtype=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: sid=192 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00025 name=/u03/oradata/devdb/devuser07.dbf
input datafile fno=00003 name=/u02/oradata/devdb/temp01.dbf
channel ORA_DISK_1: starting piece 1 at 10-AUG-13
channel ORA_DISK_2: starting full datafile backupset
channel ORA_DISK_2: specifying datafile(s) in backupset
input datafile fno=00008 name=/u03/oradata/devdb/devusers05.dbf
channel ORA_DISK_2: starting piece 1 at 10-AUG-13
...
..
piece handle=/backup/rman/full_4dogpd0u_4237_1 tag=TAG20130808T114846 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 10-AUG-13
...
Starting Control File and SPFILE Autobackup at 10-AUG-13
piece handle=/backup/rman/ctl_c-758818131-20130808-00 comment=NONE
Finished Control File and SPFILE Autobackup at 10-AUG-13
备份完成后,在/backup/rman目录上执行ls,您将看到rman备份文件。
$ ls -l /backup/rman
total 14588
-rw-r----- 1 oracle dba 14585856 Aug 8 11:48 ctl_c-758818131-20130808-00
-rw-r----- 1 oracle dba 327680 Aug 8 11:48 full_4dogpd0u_4237_1
注意:一旦进行了备份,要查看RMAN中所有可用的数据库备份,需要使用“list”命令,该命令在下面的示例中探讨。 虽然这可能是显而易见的,但是值得再次重复:因为我们正在进行热备份,所以Oracle数据库必须可以启动并运行。在执行上述任何RMAN备份命令之前,请确保Oracle数据库正在运行。
* 4. 为快速识别指定备份标记名称
如果您正在进行大量备份,给特定的备份标记一个容易区分的名称,稍后我们将在Oracle恢复期间(或使用list命令查看备份时)使用该备份将会更加容易。 下面的示例将一个名为“WEEEKLY_PRD01_TBLS_BK_ONLY”的备份标记分配给这个特定的备份。
RMAN> BACKUP AS BACKUPSET TAG 'WEEEKLY_PRD01_TBLS_BK_ONLY' TABLESPACE PRD01;
Starting backup at 10-AUG-13
using channel ORA_DISK_1
using channel ORA_DISK_2
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00002 name=/u03/oradata/devdb/PRD01_1.dbf
channel ORA_DISK_1: starting piece 1 at 10-AUG-13
channel ORA_DISK_1: finished piece 1 at 10-AUG-13
piece handle=/backup/rman/full_4fogpdb3_4239_1 tag=WEEEKLY_PRD01_TBLS_BK_ONLY comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 10-AUG-13
Starting Control File and SPFILE Autobackup at 10-AUG-13
piece handle=/backup/rman/ctl_c-758818131-20130808-01 comment=NONE
Finished Control File and SPFILE Autobackup at 10-AUG-13
一旦备份完成,如果您从rman目录中查看文件,看到的不会是标记名。标记名称仅用于RMAN从存储库中查看和恢复备份。所以,现在您看到这个目录中有更多的文件,因为我们已经做了几次备份。
$ ls -l /backup/rman/
total 29176
-rw-r----- 1 oracle dba 14585856 Aug 8 11:48 ctl_c-758818131-20130808-00
-rw-r----- 1 oracle dba 14585856 Aug 8 11:54 ctl_c-758818131-20130808-01
-rw-r----- 1 oracle dba 327680 Aug 8 11:48 full_4dogpd0u_4237_1
-rw-r----- 1 oracle dba 327680 Aug 8 11:54 full_4fogpdb3_4239_1
* 5. 更改Oracle RMAN备份文件名格式
如果希望备份文件名本身具有特定的格式,则需要更改RMAN配置中的格式,如下所示。在本例中,我们将标记“full_devdb_bk_”前缀附加到所有备份文件中。
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT "/backup/rman/full_devdb_bk_%u_%s_%p" MAXPIECESIZE 2048 M;
现在,让我们对这个修改后的配置进行另一个备份。
RMAN> BACKUP AS BACKUPSET TAG 'WEEEKLY_PRD01_TBLS_BK_ONLY' TABLESPACE PRD01;
现在,当您查看RMAN文件时,您将看到新的RMAN备份文件具有该文件的新文件名格式。仅通过查看文件名就可以更容易地识别关于备份的特定信息。
$ ls -l /backup/rman/
total 43764
-rw-r----- 1 oracle dba 14585856 Aug 8 11:48 ctl_c-758818131-20130808-00
-rw-r----- 1 oracle dba 14585856 Aug 8 11:54 ctl_c-758818131-20130808-01
-rw-r----- 1 oracle dba 14585856 Aug 8 11:56 ctl_c-758818131-20130808-02
-rw-r----- 1 oracle dba 327680 Aug 8 11:48 full_4dogpd0u_4237_1
-rw-r----- 1 oracle dba 327680 Aug 8 11:54 full_4fogpdb3_4239_1
-rw-r----- 1 oracle dba 327680 Aug 8 11:55 full_devdb_bk_4hogpdef_4241_1
* 6. 压缩RMAN备份
如果要备份一个大型数据库,您将注意到RMAN备份文件更大(几乎与数据库本身一样大)。 因此,在大多数情况下,应该始终使用数据库的ea压缩备份。 下面的示例以tablepsace PRD01的压缩备份为例。
RMAN> BACKUP AS COMPRESSED BACKUPSET TAG 'WEEEKLY_PRD01_TBLS_BK_ONLY' TABLESPACE PRD01;
当您从文件系统级别查看备份文件时,您不会看到任何.gz(或.zip或.bz2)来表示RMAN已经进行了压缩备份。文件命名约定仍然遵循与非压缩备份相同的原则。
$ ls -l /backup/rman/
total 58352
-rw-r----- 1 oracle dba 14585856 Aug 8 11:48 ctl_c-758818131-20130808-00
-rw-r----- 1 oracle dba 14585856 Aug 8 11:54 ctl_c-758818131-20130808-01
-rw-r----- 1 oracle dba 14585856 Aug 8 11:56 ctl_c-758818131-20130808-02
-rw-r----- 1 oracle dba 14585856 Aug 8 11:59 ctl_c-758818131-20130808-03
-rw-r----- 1 oracle dba 327680 Aug 8 11:48 full_4dogpd0u_4237_1
-rw-r----- 1 oracle dba 327680 Aug 8 11:54 full_4fogpdb3_4239_1
-rw-r----- 1 oracle dba 327680 Aug 8 11:55 full_devdb_bk_4hogpdef_4241_1
-rw-r----- 1 oracle dba 127680 Aug 8 11:59 full_devdb_bk_4jogpdl0_4243_1
注意:通过RMAN的“list”命令可以查看备份的大小(如下面的一节所示),可以判断RMAN是否进行了压缩备份。
* 7. 查看所有RMAN备份
要查看所有RMAN备份,请执行“list backup summary”,如下所示。
RMAN> LIST BACKUP SUMMARY;
using target database control file instead of recovery catalog
List of Backups===============
Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
.
4215 B F A DISK 10-AUG-13 1 1 NO TAG20130808T114846
4216 B F A DISK 10-AUG-13 1 1 NO TAG20130808T114849
4217 B F A DISK 10-AUG-13 1 1 NO WEEEKLY_PRD01_TBLS_BK_ONLY
4218 B F A DISK 10-AUG-13 1 1 NO TAG20130808T115413
4219 B F A DISK 10-AUG-13 1 1 NO WEEEKLY_PRD01_TBLS_BK_ONLY
4220 B F A DISK 10-AUG-13 1 1 NO TAG20130808T115600
4221 B F A DISK 10-AUG-13 1 1 YES WEEEKLY_PRD01_TBLS_BK_ONLY
正如您在上面看到的,它显示了关于备份的各种信息。在上面的输出中,显示了7个RMAN备份。最后一列显示了备份时指定的“标记”。如果没有指定任何标记,RMAN将创建一个默认标记,前缀“TAG”后面跟着一些数字。您还可以看到,在“压缩”列下,最后一个RMAN备份显示“YES”,这表明在所有7个RMAN备份中,只有最后一个被压缩。 此外,在运行RMAN备份时,如果希望查看proress,可以从sql*plus查询 V$RMAN_STATUS 表,如下所示。
SQL> SELECT OPERATION, STATUS, MBYTES_PROCESSED, START_TIME, END_TIME from V$RMAN_STATUS;
OPERATION STATUS MBYTES_PROCESSED START_TIM END_TIME
--------------------------------- ----------------------- ---------------- --------- ---------
CONTROL FILE AND SPFILE AUTOBACK COMPLETED 14 07-NOV-12 07-NOV-12
RMAN COMPLETED 0 07-NOV-12 07-NOV-12
RESTORE VALIDATE COMPLETED 0 07-NOV-12 07-NOV-12
RMAN COMPLETED WITH ERRORS 0 07-NOV-12 07-NOV-12
DELETE COMPLETED 0 08-NOV-12 08-NOV-12
BACKUP COMPLETED 0 10-AUG-13 10-AUG-13
CONTROL FILE AND SPFILE AUTOBACK COMPLETED 14 10-AUG-13 10-AUG-13
RMAN COMPLETED WITH ERRORS 1832 10-AUG-13 10-AUG-13
RMAN COMPLETED 0 10-AUG-13 10-AUG-13
好了!这就是使用Oracle RMAN备份并平静地睡觉的方法。