RMAN学习笔记06——知识点
还有一些RMAN的细节知识点需要学习一下,可以更好得了解RMAN备份的特性和工作机制。看一下这些内容是很有必要的。另外在RMAN学习的最后一篇,摘录了一个使用RMAN备份的实例,包括了简单的备份策略。具体如下:
一、FORMAT字符串的含义
%c:备份片的拷贝数(从1开始编号);
%d:数据库名称;
%D:位于该月中的天数 (DD);
%M:位于该年中的月份 (MM);
%F:一个基于DBID唯一的名称。格式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII为该数据库的DBID,YYYYMMDD为日期,QQ是一个1-256的序列;
%n:数据库名称,并且会在右侧用x字符进行填充,使其保持长度为8;
%u:是一个由备份集编号和建立时间压缩后组成的8字符名称。利用%u可以为每个备份集生成一个唯一的名称;
%p:表示备份集中备份片段的编号,从1 开始编号;
%U:是%u_%p_%c的简写形式,利用它可以为每一个备份片段(即磁盘文件)生成一个唯一名称,这是最常用的命名方式;
%s:备份集的号;
%t:备份集时间戳;
%T:年月日格式(YYYYMMDD);
注:注意区分大小写;若不特别指定,则默认使用%U。
二、冗余备份
RMAN提供了一种更谨慎的备份策略:Duplexed方式备份,其实质即是在生成备份集的同时,向指定位置生成指定份数(最大不超过4份)的备份集复制,以避免在灾难性事故时数据库损坏和备份丢失的情况下导致完全崩溃,提高备份可用性。
RMAN中提供了三种方式实现Duplexed方式备份:
1、在RMAN中执行BACKUP命令时显式指定COPIES参数
RMAN> BACKUP COPIES 3 DATABASE;
上述命令将会在全库备份的同时,自动生成当前备份集的2份拷贝到默认备份目录。
2、在RUN{}命令块中利用SET BACKUP COPIES命令为该命令块中所有的BACKUP命令设置Duplexed方式
RMAN> RUN{
2> SET BACKUP COPIES 2;
3> BACKUP DEVICE TYPE DISK FORMAT 'D:\BACKUP1\%U','D:\BACKUP2\%U'
4> TABLESPACE USERS,SALES;
5> }
上述命令将生成两份备份集,分别存储到d:\backup1和d:\backup2目录。
3、通过CONFIGURE ..... BACKUP COPIES命令设置预定义的备份Duplexed方式
CONFIGURE ... BACKUP COPIES命令可以为指定的设备类型设置默认的备份拷贝数量。这个配置仅适用于数据文件与归档重做日志文件和备份,并且,只有在使用自动分配的通道时才能够使用CONFIGURE ... BACKUP COPIES命令设置的配置。例如:
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK;
RMAN> CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE disk TO 2;
RMAN> CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE disk TO 2;
上述命令将disk设置上数据文件与归档文件的拷备数量设置为2,当再执行BACKUP DATABASE备份时,即会自动生成2份数据文件的备份集。
三、RMAN备份相关的动态性能表
V$ARCHIVED_LOG:
本视图包含了所有归档重做日志文件的创建情况,备份情况以及其他信息。
V$BACKUP_CORRUPTION:
这个视图显示了RMAN在哪些备份集中发现了损坏的数据坏。在你使用BACKUP VALIDATE命令对备份集进行检查时如果发现了损坏的数据块,RMAN将在这个视图中写入记录。
V$COPY_CORRUPTIO:
本视图显示了哪些镜像复制备份文件已经被损坏。
V$BACKUP_DATAFILE:
本视图通常用来获取每个数据文件中非空白数据块的数量,从而帮助你创建出大小基本相等的备份集。另外,在视图中也包含了数据文件中损坏的数据块的信息。
V$BACKUP_REDOLOG:
本视图显示了在现有的备份集中有哪些归档重做日志文件。
V$BACKUP_SET:
本视图显示了已经创建的备份集的信息。
V$BACKUP_PIECE:
本视图显示了已经创建的备份片段的信息。
四、增量备份的工作机制:
RMAN中增量备份有两种:Differential方式和Cumulative方式。通过level来判断备份策略:
Differential:
Cumulative:
五、RMAN备份类型:
完全备份(Full Backup)与增量备份(Incremental Backup)
全备与增备是针对数据文件而言,控制文件和归档日志文件不能进行增量备份。当然,后两者可以做备份优化。
打开备份(Open Backup)或关闭备份(Closed Backup)
数据库打开状态下进行备份即是打开备份,数据库关闭状态下(加载状态)进行的备份即关闭备份。
一致备份(Consistent Backup)与不一致备份(Inconsistent Backup)
数据库打开状态或不干净关闭状态(shutdown abort)进行的备份是不一致备份,利用不一致的备份修复数据库后还需要做数据库的恢复。在数据库干净关闭状态进行的备份是一致备份,利用一致备份修复数据库后不需要做数据库的恢复。
六、备份示例:
在写脚本之前,我们先明确一下我们的目标:
1
、每天夜间
1
点执行;
2
、数据库全备,同时备份控制文件及归档日志文件,备份文件保存至:
D:\backup\
目录下,并在完成归档日志文件备份后,自动删除已备份的归档日志;
3
、备份保留
7
天,过期则自动删除;
4
、保留操作日志备查;
以
Windows
环境为例
(linux
环境下与此基本类似,
rman
的脚本您甚至连改都不用改,就把调用
rman
脚本的命令行改改就行了
)
:
1
、编写
rman
批处理文件
保存至:
E:\oracleScript\backup\database_backup_jssweb.rman
RUN {
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:/backup/%F';
ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT 'd:/backup/%U';
BACKUP DATABASE SKIP INACCESSIBLE FILESPERSET 10
PLUS ARCHIVELOG FILESPERSET 20
DELETE ALL INPUT;
RELEASE CHANNEL CH1;
}
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
CROSSCHECK BACKUPSET;
DELETE NOPROMPT OBSOLETE;
SKIP INACCESSIBLE
:表示跳过不可读的文件。我们知道一些
offline
的数据文件只要存在于磁盘上就仍然可被读取,但是可能有些文件已经被删除或移到它处造成不可读,加上这个参数就会跳过这些文件;
SKIP OFFLINE
:跳过
offline
的数据文件;
SKIP READONLY
:跳过那些所在表空间为
read-only
的数据文件;
注意哟,你从网上搜索
rman
备份脚本,可能有些脚本中会出现一项:
sql 'alter system archive log current';
这句是让
archivelog
日志归档,实际上完全没必要,我们在第三节的时候讲过,通过
plus archivelog
方式备份时,
rman
会自动对当前的
archivelog
进行归档。
2
、编写
dos
批处理
保存至:
E:\oracleScript\backup\database_backup_jssweb.bat
设定要备份的数据库
sid
为
jssweb
,将日志按照日期输出到
E:\oracleScript\backup\logs\
目录。
set oracle_sid=jssweb
rman target / msglog E:\oracleScript\backup\logs\%date:~0,10%.log cmdfile=E:\oracleScript\backup\database_backup_jssweb.rman
3
、设定执行计划
控制面板
->
任务计划中添加计划,运行
E:\oracleScript\backup\database_backup_jssweb.bat
,设定日程安排中的时间。
竣工!