Database
tablespace
datafile
Archivelog[all]
Current controlfile
Datafilecopy [TAG]
controlfilecopy
Backupset[all]
ALLOCATE CHANNEL C2 DEVICE TYPE DISK
FORMAT '/U01/BACKUP/%U';
BACKUP
(TABLESPACE SYSTEM,USERS,SALES01,SALES02,FILESPERSET 5)
}
*******************************************************************************************
**备份数据文件及数据文件的复制文件
RMAN>BACKUP DATAFILE 1,2,3,4 FILESPERSET 3(每备份集只有3个文件)
RMAN>BACKUP DATAFILECOPY '/U01/BACKUP/DF1.COPY';
显示备份结果
RMAN>LIST BACKUP OF DATAFILE 1,2,3,4;
*******************************************************************************************
备份控制文件
如果设置CONFIGURE CONTROLFILE AUTOBACKUP为on,则RMAN在执行BACKUP及copy命令时自动备份控制文件
控制文件备份命令是
RMAN>BACKUP CURRENT CONTROLFILE;
RMAN>BACKUP CURRENT CONTROLFILE TAG = 'MONDAY_BACKUP';
RMAN>BACKUP CURRENT CONTROLFILE;
可以使用以下的命令,在备份表空间时同时备份控制文件
RMAN>BACKUP TABLESPACE SALES INCLUDE CURRENT CONTROLFILE;
将控制文件备份到其他的目录
RMAN>COPY CURRENT CONTROLFILE TO '/U01/CONTROL.F';
RMAN>BACKUP CONTROLFILECOPY '/U01/CONTROL.F';
显示备份结果
RMAN>LIST BACKUP OF CONTROLFILE;
*******************************************************************************************
备份归档日志
*备份归档日志后,删除多个归档目录文件:
RMAN>backup archivelog all delete all input;
RMAN>backup archivelog like '/u01/dest %' delete all input;
*使用磁带按规定时间备份归档日志:
RMAN>backup device type sbt archivelog all;
RMAN>backup device type sbt backupset created before `sysdate-14` delete input;
*按时间段备份归档日志
backup archivelog from time `sysdate-30` until time `sysdate-7`;
*备份数据库时,同时备份归档日志
backup database plus archvielog;
显示归档日志备份结果时,可以使用以下命令显示备份结果:
list backup of archivelog all;
list backup of database summary;
list backup of archivelog summary;
*备份备份集
RMAN>BACKUP DEVICE TYPE SBT BACKUPSET ALL;
RMAN>BACKUP DEVICE TYPE SBT BACKUPSET ALL DELETE INPUT(删除备份集);
*******************************************************************************************
多份数据备份
*backup copies设置
可以在BAKCUP命令中直接设置。例如,在默认的磁盘目录中进行了3个备份集的备份;
RMAN>BACKUP COPIES 3 INCREMENTAL LEVEL = 0 DATABASE;
*set backup copies设置
在备份时,使用SET BACKUP COPIES设置备份的份数即可。例如,对表空间USERS在磁盘上进行3个备份,分别存储于3个不同的目录
RUN
{
SET BACKUP COPIES = 3 ;
BACKUP DEVICE TYPE DISK
FORMAT '/BACKUP1/%U', '/BACKUP2/%U', '/BACKUP3/%U' TABLESPACE USERS;
}
使用自通道对表空间进行了了两个备份,分别存储于不同目录,对于日志进行3个备份
RUN
{
SET BACKUP COPIES 3;
BACKUP COPIES 2 FORMAT '/BACKUP1/%U', '/BACKUP2/%U'
TABLESPACE USERS;
BAKCUP ARCHIVELOG ALL;
}
其中BACKUP COPIES设置了份数覆盖了SET BACKUP COPIES。
*configure ...backup copies
该命令仅使用于自动通道设置,只可以用于对数据文件,归档日志的备份。在使用这种设置方式时,首先需要对于所使用的设备备份次数进行配置。例如:
configure device type sbt parallelism 1;
configure default device type to sbt;
configure datafile backup copies for device type sbt to 2;
configure archivelog backup copies for device type sbt to 2;
RMAN>BACKUP DATABASE;
BACKUP命令使用了默认的自动通道及设备
list bakcup summary显示备份份数,其中,列#copy表示备份份数
*******************************************************************************************
BACKUP增量备份
backup命令可以进行增量备份(Incremental Backups),增量级别为0~3。增量备份可以在归档及非归档两种方式下使用,如果是非档方式,只能进行冷备份。在进行增加备份时,可以在BACKUP命令后增加增量备份的关键字incremental level指出增量级别。
*************************************************************************************************
对数据库进行一次全备份:
backup incremental level = 0 database;
仅备份系统表空间SYSTEM自最近一次1级增量备份以后改变的数据块:
backup incremental level = 1 tablespace system
仅备份表空间sales自最近一次1级或0级备份以后改变的数据块:
backup incremental level = 2 cumulative tablespace sales;
*************************************************************************************************
BACKUP命令的其他选项
*backup中定义多个通道
在使用BACKUP命令进行数据库备份时,允许同时分配多个通道,以提高数据库备份的速度。例如,以下程序定义了两个磁带通道:
configure device type sbt parallelism 2
configure channel 1 device type sbt
parms="env=(nsr_server=tape_server_1)";
configure channel 2 device type sbt
parms="env=(nsr_server=tape_server_2)";
backup
filesperset=20 format='al_%d/%t%s%p'
(archivelog like '/u01/%' channel ora_sbt_tape_1);
(archivelog like '/u02/%' channel ora_sbt_tape_2);
**************************************************************************************************since time
参数since time用于设置备份时间段。例如,使用默认配置通道对于一周内没有进行备份的所有数据库文件进行备份:
backup not backed up since time `sysdata - 7` database;
如果没有使用参数SINCE,则RMAN备份所有从未备份的数据文件
对于数据库及日志进行备份,不备份近一周的数据
backup database archivelog all not backed up
since time `sysdate - 7`;
*************************************************************************************************
*configure backup optimization on
设置optimixation为on时,则使用了备份优化,这时rman会自动跨过对已经存在的文件备份.
例如:
configure backup optimization on;
backup device type disk copies 2 database plus archivelog;
*************************************************************************************************
*备份校验
备份校验用于检查数据文件的物理及逻辑的损坏,并确认数据文件存储目录是否存在。
backup validate database archivelog all;
需要注意的是,进行校验时,RMAN实际上是不备份文件的,只是检验备份是否有效。
*************************************************************************************************
*将数据库备份到多个文件系统
如果要备份的数据库较大,可以增加参数MAXPIECESIZE,限制每一个通道的最大备份文件尺寸。这样,可以将一个数据库备份成为多个文件,多个文件可以存储到不同的物理磁盘,例如,将40G数据库备份到4个文件系统,产生4个10G的备份集,每个备份集大小约为2G,共5个文件。备份程序如下:
configure device type disk parallelism 4;
configure channel 1 device type disk
format='/u01/%u.%p maxpiecesize2G;
configure channel 2 device type disk
format='/u02/%u.%p maxpiecesize2G;
configure channel 3 device type disk
format='/u03/%u.%p maxpiecesize2G;
configure channel 4 device type disk
format='/u04/%u.%p maxpiecesize2G;
configure default device type to disk;
bakcup database;
*************************************************************************************************
参数filesperset maxsetsize
参数filesperset指定一个备份集中的文件个数,参数maxsetsize限制一个备份集的最大值。例如,每3个数据文件备份为一个备份集,每10个日志文件备份为一个备份集 :
configure device type disk parallelism 4;
backup
{
datafile 1,2,3,4,5,9
filesperset = 3
archivelog all
filesperset = 10;
}
在下面的例子中,分配一个磁带通道,设置磁带为默认设备,每一个备份集的最大值为100M
configure device type sbt parallelism 1;
configure default device type to sbt;
backup maxsetsize = 100M archivelog all;
一朋友问我一个问题:
RMAN> BACKUP RECOVERY AREA;
这个命令备份哪些内容, 还真不太清楚。 Google了一下。 这个命令是备份Flash recovery Area的内容的。 这是也是Oracle 10g以后才有的。10g引进了flash recovery area,同时在rman备份中支持对该区域的备份。
在9i中oracle引入flashback查询,依赖于undo表空间存储的信息来闪回查询以前的版本,当然这个受限于undo表空间的大小,以及保留策略。
在10g中oracle又引入了新的flashback功能,使用了flash recovery area来存储flashback 1og等等。这个区域默认创建在oracle_base目录下。在其中可以存放备份集、镜像拷贝、归档日志、自动备份的控制文件以及spfile和flashback logs。存放位置和大小由参数db_recovery_file_dest和db_recovery_file_dest_size决定。
默认情况数据库的flashback database是关闭,可以在mount exclusive状态下打开。
看一下Oracle 官方文档上的几段文字。
To free space in the FRA we could do take a backup of the Flash Recovery Area using the command BACKUP RECOVERY AREA.This command will take the backup of all the files in the FRA to tape only. After this the space occupied by the files in the FRA will be marked as reclaimable。
the larger the fast recovery area, the more useful it is. Ideally, the fast recovery area should be large enough for copies of the data files, control files, online redo log files, and archived redo log files needed to recover the database, and also the copies of these backup files that are kept based on the retention policy.
The Flash Recovery Area is a unified storage location for all recovery-related files and activities in an Oracle Database. It includes Control File, Archived Log Files, Flashback Logs, Control File Autobackups, Data Files, and RMAN files.
从上面的几段话,我们可以得到一下信息:
(1) BACKUP RECOVERY AREA 命令只能备份到磁带上。 在磁盘上备份会报如下错误:
RMAN> BACKUP RECOVERY AREA;
启动 backup 于 12-8月 -10
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=15 设备类型=DISK
说明与资料档案库中的任何归档日志都不匹配
说明与资料档案库中的任何数据文件副本都不匹配
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: backup 命令 (在 08/12/2010 13:50:10 上) 失败
RMAN-06603: 必须在磁盘设备上使用 RECOVERY AREA, RECOVERY FILES 或 DB_RECOVERY_FILE_DEST 指定 TO DESTINATION 选项
(2) Flash recovery area 包含内容:控制文件,归档文件,flashback logs, 控制文件,自动备份的控制文件,数据文件,数据文件拷贝,RMAN 文件(包括备份集,镜像备份)。
我们可以从以下SQL 的查询结果可以看出:
SQL> select file_type from v$flash_recovery_area_usage;
FILE_TYPE
--------------------
CONTROL FILE
REDO LOG
ARCHIVED LOG
BACKUP PIECE
IMAGE COPY
FLASHBACK LOG
FOREIGN ARCHIVED LOG
已选择7行。
(3) BACKUP RECOVERY AREA 将备份所有Flash recovery area中的内容。