designs\project\database-BACKUP

转载自 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备份并平静地睡觉的方法。

发布了26 篇原创文章 · 获赞 4 · 访问量 2540

猜你喜欢

转载自blog.csdn.net/u012296499/article/details/95765646