十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章给大家分享的是有关如何使用RMAN备份数据库的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名申请、网络空间、营销软件、网站建设、新荣网站维护、网站推广。
Oracle推荐的数据库备份和恢复工具是RMAN(恢复管理器,Recovery Manager)。不是必须要使用RMAN,Oracle支持通过使用操作系统实用程序来创建备份和执行恢复,但RMAN有着其它产品无法比拟的功能,以下列举几条采用RMAN备份的优点:
1、恢复过程是智能的,不需要考虑用哪些备份文件来恢复,系统自动选择和管理;
2、支持增量备份,只备份更改的数据块,而不用每次都去做完整备份,可以显著减少备份花费的时间和空间;
3、支持加密备份,保证备份数据的安全性,这对于存储在可移动设备上的数据备份很有必要;
4、支持灵活选择的表空间备份、数据文件备份、控制文件备份及归档日志文件备份等;
5、强大的管理命令和报表功能可以方便的查询和管理备份;
6、RMAN的备份恢复操作与OS无关,是跨平台的。
一、RMAN备份的概念和术语
用操作系统命令执行的备份被称为用户管理的备份,而使用RMAN执行的备份则被称为服务器管理的备份。在执行服务器管理的备份前,总体上需要考虑以下三种备份策略:
关闭状态还是打开状态?
全部备份还是局部备份?
完整备份还是增量备份?
关闭状态的备份在数据库关闭期间执行,也称为冷备份、一致备份、脱机备份,打开状态的备份在数据库使用期间执行,也称为热备份、非一致备份、联机备份。打开状态的备份只能在数据库处于归档日志模式下执行。如果数据库处于非归档日志模式,则只能进行关闭状态的备份。在大部分情况下,局部备份也必须在数据库处于归档日志模式下才能进行。增量备份可以是累积增量备份(包括自上一次完整备份以来更改的所有块)或差异增量备份(包括自上一次增量备份以来更改的所有块)。
RMAN可备份的文件类型为:
数据文件
控制文件
服务器初始化参数文件spfile
归档重做日志文件
备份集片
RMAN不能备份的文件包括:
临时文件
联机重做日志文件
口令文件
静态参数文件pfile
Oracle Net配置文件
RMAN可生成三类备份:
备份集(backup set):备份文件的专用格式,一个备份集文件可包含多个数据库文件的备份;
压缩备份集(compressed backup set):与备份集内容相同,但RMAN在写出到备份集时将应用压缩算法;
映像副本(image copy):是与输入文件相同的备份文件,映像副本可与源内容立即交换,与备份集文件相比,还原时不需要从备份集中提取文件。
RMAN备份和还原操作由被称为通道(channel)的服务器进程执行。通道可分为磁盘类型(可访问磁盘上的备份)或SBT_TAPE类型(可访问磁带上的备份)。
RMAN存储库(repository)是有关备份的元数据,存储库一般保存在目标数据库的控制文件中,也可以保存在被称为目录数据库中的一组表中。当进行多个不同数据库的备份时,可单独构建一个目录数据库来存储RMAN备份的元数据。
RMAN操作由RMAN可执行程序启动、监视和控制,可有三种连接数据库的方式:
目标数据库(target):需要备份、还原和恢复的数据库;
目录数据库(catalog):用于备份多个目标数据库;
辅助数据库(auxiliary):通过目标数据库的备份创建的数据库。
二、服务器管理的脱机备份
服务器管理的脱机备份是在数据库关闭后执行的备份,也称为冷备份、一致备份。对于非归档日志模式的数据库,备份时只能采用此模式。
只有数据库处于加载模式时才能执行RMAN一致备份。其原因在于,RMAN需要读取控制文件,以便查找数据文件。如果在加载模式下尝试执行用户管理的操作系统备份,则将无效,因为在加载模式中,当复制控制文件时可能已对控制文件执行了写操作,这样一来副本就变的不一致了,因而失去了作用。RMAN通过获取控制文件的读一致性快照并对其进行备份,避免此问题的发生。
有三种使用RMAN的技术:
交互界面:用于执行即席任务;
脚本接口:通过操作系统的调度程序运行作业;
Enterprise Manager界面:用于生成脚本,定义由Enterprise Manager调度的作业。
典型的脱机-全部-完整备份的脚本如下
run {
shutdown immediate;
startup mount;
allocate channel d1 type disk;
backup as compressed backupset database format 'd:\rman_bak\mes\%d_%u_%c_%T';
alter database open;
}
%d:数据库ID;
%u:产生唯一的文件名称;
%c:第几份备份;
%T:备份时间。
该脚本首先关闭数据库实例并重启到加载模式,之后分配一个磁盘备份的通道(disk表示是磁盘通道,另外还有一种备份通道是磁带sbt_tape),然后启动压缩备份命令完成全库备份(包括数据文件、控制文件和spfile文件的备份),并指定了备份文件的目标位置和文件名格式,备份完毕后打开数据库。
如将其保存为脚本文件offline_full_whole.rman,则可调度如下操作系统命令运行该脚本
rman target sys/hznj2010@mes @offline_full_whole.rman
注意,命令格式中,脚本文件名前面要加上@符号,target表示是连接到目标数据库。
也可以分两步,先用RMAN连接到目标数据库,再执行脚本文件
C:\Users\Administrator>rman target /
RMAN> @d:\offline_full_whole.rman
在目标位置将生成了两个备份集文件,备份集中包含了所有数据文件、控制文件和spfile文件的内容。
三、服务器管理的联机备份
在进行打开状态的备份时,RMAN可能会在DBWn进程写入块时尝试复制文件块,这将导致断裂块。断裂块在备份中可能是无用的,因为在其更新时复制它会导致副本内部不一致。RMAN会检测出现的断裂块,并重试块复制,直至获得一致的版本为止。为获取控制文件的读一致性版本,RMAN创建控制文件的读一致性快照副本,这是实际备份的内容。
在创建备份集时,RMAN不会备份未使用的块,这会节省大量的空间。
典型的联机-全部-完整备份的脚本如下
run {
allocate channel d1 type disk;
backup as compressed backupset database format 'd:\rman_bak\mes\%d_%u_%c_%T';
backup as compressed backupset archivelog all delete all input format 'd:\rman_bak\mes\%d_%u_%c_%T';
}
该脚本命令首先分配一个磁盘写入的通道进程,之后第一个backup命令备份整个数据库(数据文件、控制文件及spfile文件),第二个backup命令备份所有的归档日志文件,并在备份后将其从磁盘中删除,进而可以释放磁盘空间。结果将生成三个备份集文件,备份集中包含了所有数据文件、控制文件、spfile文件和归档日志文件的内容,并且备份完成后自动删除不必再保留的归档日志文件。
RMAN的有些命令可以是即席的,即可以直接在RMAN命令提示符下执行,而有些命令则只能在RUN脚本块中执行,如allocate channel命令需要放入脚本块中执行。
备份也可以只针对部分内容进行,如一个表空间、一个单独的文件等。
备份一个表空间
RMAN> backup as backupset format 'd:\rman_bak\mes\%d_%u_%c_%T' tablespace cmes;
备份一个数据文件,可以指定文件号或文件名
RMAN> backup as backupset format 'd:\rman_bak\mes\%d_%u_%c_%T' datafile 4;
备份一批归档日志文件,可以使用通配符%
RMAN> backup as backupset format 'd:\rman_bak\mes\%d_%u_%c_%T' archivelog like 'D:\oradata\mes\archivelog\ARC_752D1AF3_1_882311480_1%';
备份控制文件
RMAN> backup current controlfile format 'e:\rman_bak\mes\control_bak\c_%d_%u_%c_%T';
四、增量备份
增量备份分为差异增量备份和累积增量备份。增量备份依赖于包含所有块的起点时称之为增量级别(incremental level)0备份,之后差异增量级别1备份将提取自上一个级别1备份以来更改的所有块,如果没有介于其间的级别1备份,则提取自上一个级别0备份以来更改的所有块。而累积增量备份则始终提取自上一个级别0备份以来更改的所有块,不考虑其间是否存在任何级别1备份。
执行增量级别0备份的RMAN命令如下,备份集将包含所有使用过的块
RMAN> backup as backupset incremental level 0 database;
以下命令执行差异增量级别1备份,该命令提取自上一个级别1备份以来更改的所有块,如果没有运行过级别0备份,则第一次执行级别1的增量备份实际是执行级别0备份
RMAN> backup as backupset incremental level 1 database;
以下命令执行累积增量级别1备份,该命令提取自级别0备份以来更改的所有块
RMAN> backup as backupset incremental level 1 cumulative database;
可以指定大于1的增量级别,但它们没有效果,支持它们只是为了与老版本的RMAN兼容,因此现在可以不必再使用。
在很多情况下,可能希望增量备份能快一些,这可以通过启用块改变跟踪(block change tracking)来实现。
块改变跟踪依赖于启动一个额外的后台进程:CTWR(Change Tracking Writer,改变跟踪写入器)。这个进程在改变跟踪文件中记录每个已更改的块的地址。如果启用了块改变跟踪,RMAN将在执行增量备份时读取改变跟踪文件以确定哪些块需要备份。这比扫描整个数据文件要快的多。
改变跟踪文件默认位置可在初始化参数db_create_file_dest中指定。它的初始大小为10MB,并以10MB的增量增长。改变跟踪文件是位图格式,每位包含32个数据块。启用块改变跟踪会有一个最低的性能开销,经验表明这并不重要。要启用块改变跟踪并指定跟踪文件的名称和位置,可使用以下命令
alter database enable block change tracking using file 'd:\oradata\mes\change_tracking.dbf';
要监视块变更跟踪的有效性,可查询视图v$backup_datafile
col name for a50
col read_radio for a10
select t1.file#, t2.name, t1.datafile_blocks, t1.blocks_read, to_char(round(t1.blocks_read / t1.datafile_blocks, 2) * 100) || '%' read_radio, t1.completion_time
from v$backup_datafile t1 join v$datafile t2 on (t1.file# = t2.file#) and t1.used_change_tracking = 'YES' and t1.incremental_level > 0 order by file#, completion_time;
FILE# NAME DATAFILE_BLOCKS BLOCKS_READ READ_RADIO COMPLETION_TIME
---------- -------------------------------------------------- --------------- ----------- ---------- -------------------
1 D:\ORADATA\MES\SYSTEM01.DBF 65280 1895 3% 2016-12-04 14:58:49
1 D:\ORADATA\MES\SYSTEM01.DBF 65280 1135 2% 2016-12-04 20:58:03
2 D:\ORADATA\MES\UNDOTBS01.DBF 10880 1983 18% 2016-12-04 14:58:49
2 D:\ORADATA\MES\UNDOTBS01.DBF 10880 679 6% 2016-12-04 20:58:03
3 D:\ORADATA\MES\SYSAUX01.DBF 38400 5815 15% 2016-12-04 14:58:49
3 D:\ORADATA\MES\SYSAUX01.DBF 38400 3467 9% 2016-12-04 20:58:03
4 D:\ORADATA\MES\USERS01.DBF 640 1 0% 2016-12-04 14:58:48
4 D:\ORADATA\MES\USERS01.DBF 640 255 40% 2016-12-04 20:58:03
5 D:\ORADATA\MES\CMES01.DBF 12800 1 0% 2016-12-04 14:58:48
5 D:\ORADATA\MES\CMES01.DBF 12800 1 0% 2016-12-04 20:58:03
6 D:\ORADATA\MES\RMES01.DBF 131072 9 0% 2016-12-04 14:58:48
6 D:\ORADATA\MES\RMES01.DBF 131072 13 0% 2016-12-04 20:58:03
7 D:\ORADATA\MES\INDX01.DBF 131072 1 0% 2016-12-04 14:58:48
7 D:\ORADATA\MES\INDX01.DBF 131072 1 0% 2016-12-04 20:58:03
8 D:\ORADATA\MES\HMES01.DBF 64000 1 0% 2016-12-04 14:58:48
8 D:\ORADATA\MES\HMES01.DBF 64000 1 0% 2016-12-04 20:58:03
9 D:\ORADATA\MES\RMES02.DBF 131072 1 0% 2016-12-04 14:58:48
9 D:\ORADATA\MES\RMES02.DBF 131072 1 0% 2016-12-04 20:58:03
10 D:\ORADATA\MES\INDX02.DBF 131072 1 0% 2016-12-04 14:58:48
10 D:\ORADATA\MES\INDX02.DBF 131072 1 0% 2016-12-04 20:58:03
其中DATAFILE_BLOCKS反映的是数据文件的大小,BLOCKS_READ和READ_RADIO则显示了每次增量备份读取的块数和读块比率,如果每次备份这个比率在持续增加,则应考虑更频繁的执行增量备份。
要查看是否启用了块改变跟踪,并检查跟踪文件的位置和大小,可查询视图v$block_change_tracking
col filename for a50
select * from v$block_change_tracking;
STATUS FILENAME BYTES
---------- ----------------------------------------------- ----------
ENABLED D:\ORADATA\MES\BLOCK_CHANGE_TRACKING.DBF 11599872
确认是否启用了CTWR服务器进程(改变跟踪写入器),可查询视图v$process
select program from v$process where program like '%CTWR%';
PROGRAM
----------------------------------------------------------------
ORACLE.EXE (CTWR)
如果要取消块改变跟踪,则命令为
alter database disable block change tracking;
五、其它备份方式
1、映像副本
文件的映像副本是与数据文件、控制文件或归档日志文件完全相同的副本。结果就好像文件是用操作系统程序复制的,但机制是不同的,RMAN读写Oracle块,而不是操作系统块。映像副本备份方式的优点是还原非常快速,因为不需要从备份集中提取文件。
映像副本可由数据文件、控制文件或归档日志文件组成,但不能由spfile文件组成。
映像副本的备份命令使用关键字copy,如使用以下命令备份整个数据库,在没有更改默认配置的情况下,将启动一个磁盘通道,将所有数据文件和控制文件复制到闪回恢复区(同时还会自动生成一个spfile文件的备份集)
RMAN> backup as copy database;
如要将所有归档日志移入闪回恢复区,则命令为
RMAN> backup as copy archivelog all delete all input;
利用视图v$backup_files可以查询备份情况
SQL> select backup_type, file_type, status, fname, tag, df_tablespace, df_file# from v$backup_files;
BACKUP_TYPE FILE_TYPE STATUS FNAME TAG DF_TABLESPACE DF_FILE#
------------- --------------- ------------ --------------------------------------------- --------------------- ------------- --------
COPY DATAFILE AVAILABLE D:\RMAN_BAK\MES\MES_2OQJEQ48_1_20151011 TAG20151011T143448 RMES 6
COPY DATAFILE AVAILABLE D:\RMAN_BAK\MES\MES_2PQJEQ7I_1_20151011 TAG20151011T143448 RMES 7
COPY DATAFILE AVAILABLE D:\RMAN_BAK\MES\MES_2QQJEQBP_1_20151011 TAG20151011T143448 SYSTEM 1
COPY DATAFILE AVAILABLE D:\RMAN_BAK\MES\MES_2RQJEQD7_1_20151011 TAG20151011T143448 SYSAUX 2
COPY DATAFILE AVAILABLE D:\RMAN_BAK\MES\MES_2SQJEQEA_1_20151011 TAG20151011T143448 CMES 5
COPY DATAFILE AVAILABLE D:\RMAN_BAK\MES\MES_2TQJEQEI_1_20151011 TAG20151011T143448 UNDOTBS1 3
COPY CONTROLFILE AVAILABLE D:\RMAN_BAK\MES\MES_2UQJEQEP_1_20151011 TAG20151011T143448 0
COPY DATAFILE AVAILABLE D:\RMAN_BAK\MES\MES_2VQJEQES_1_20151011 TAG20151011T143448 USERS 4
BACKUP SET SPFILE
BACKUP SET PIECE AVAILABLE D:\RMAN_BAK\MES\MES_30QJEQEU_1_20151011 TAG20151011T143448
2、压缩备份
RMAN支持压缩方式的备份,使用compressed关键字,如下命令将完成数据库和归档日志的压缩备份
RMAN> backup as compressed backupset database plus archivelog;
3、保护备份
RMAN支持多重方式的备份,使用关键字copies,如下命令将在默认磁盘目标位置生成数据库及归档日志的两套备份集
RMAN>backup as backupset device type disk copies 2 database plus archivelog;
也可以对备份集进行备份,如用以下命令可以将备份集转移备份到其它目标设备上,并将原来位置的备份删除
RMAN>backup device type disk format 'd:\shift_bak\%d_%u_%c_%T' backupset all delete all input;
4、加密备份
在有些环境下可能希望需要加密的备份,因为这些备份可能存储在DBA几乎无法控制的可移动设备上。
加密有透明加密和口令加密两种方式。
1)透明加密
这是RMAN采用的默认方式,基于钱夹(wallet)的使用。这是一个包含用于加密和解密数据的密钥文件,其本身用口令保护。这种加密方式适合于只在本机上进行加密备份和恢复,只需要配置好钱夹证书。证书文件需要妥善保管不可丢失,否则以后无法恢复。
透明加密备份的操作过程如下:
a)首先在Oracle默认的指定位置创建钱夹目录
%ORACLE_BASE%\admin\
b)查看钱夹状态,默认是关闭的
SQL> select * from v$encryption_wallet;
WRL_TYPE WRL_PARAMETER STATUS
---------- ------------------------------ ----------
file C:\ORACLE\ADMIN\MES\WALLET CLOSED
c)打开钱夹,并给证书设置口令。系统可能会报ORA-28374错误,这是Oracle的Bug,不用理会
SQL>alter system set encryption key authenticated by "pm1234";
alter system set encryption key authenticated by "pm1234"
*
第 1 行出现错误:
ORA-28374: 在 Wallet 中未找到键入的主键
d)配置RMAN加密备份开启
RMAN> configure encryption for database on;
旧的 RMAN 配置参数:
CONFIGURE ENCRYPTION FOR DATABASE OFF;
新的 RMAN 配置参数:
CONFIGURE ENCRYPTION FOR DATABASE ON;
已成功存储新的 RMAN 配置参数
e)之后可进行正常的备份操作。
f)RMAN恢复操作前需要用正确的口令打开钱夹
SQL>alter system set wallet open identified by "pm1234";
系统已更改。
g)之后可进行正常的恢复操作。如果钱夹未打开,则恢复过程失败。
h)如果要取消加密备份功能,则可将RMAN的加密配置重置为默认值
RMAN> CONFIGURE ENCRYPTION FOR DATABASE clear;
旧的 RMAN 配置参数:
CONFIGURE ENCRYPTION FOR DATABASE ON;
RMAN 配置参数已成功重置为默认值
2)口令加密
这是在备份前设置好算法和密钥,之后进行正常的备份。加密备份的文件在恢复操作前需要提供正确的密钥,否则无法恢复。
通过视图v$rman_encryption_algorithms可以查看RMAN支持的加密算法,默认的加密算法是AES128
SQL> select * from v$rman_encryption_algorithms;
ALGORITHM_ID ALGORITHM_NAME ALGORITHM_DESCRIPTIO IS_DEFAULT RESTORE_ONLY
------------ --------------- -------------------- ---------- ------------
1 AES128 AES 128-bit key YES NO
2 AES192 AES 192-bit key NO NO
3 AES256 AES 256-bit key NO NO
口令加密备份的操作过程如下:
a)查看RMAN当前加密算法,#default表示该项是RMAN的默认设置
RMAN> show encryption algorithm;
db_unique_name 为 MES 的数据库的 RMAN 配置参数为:
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
b)若需要更改加密算法,可使用以下命令,如更改为AES256
RMAN> configure encryption algorithm 'aes256';
新的 RMAN 配置参数:
CONFIGURE ENCRYPTION ALGORITHM 'aes256';
已成功存储新的 RMAN 配置参数
c)可查看确认加密算法是否已更改
RMAN> show encryption algorithm;
db_unique_name 为 MES 的数据库的 RMAN 配置参数为:
CONFIGURE ENCRYPTION ALGORITHM 'aes256';
d)如果要恢复为默认的加密算法,可使用关键字clear
RMAN> configure encryption algorithm clear;
旧的 RMAN 配置参数:
CONFIGURE ENCRYPTION ALGORITHM 'aes256';
RMAN 配置参数已成功重置为默认值
e)设置密钥并开启加密
RMAN> set encryption on identified by 'pm1234' only;
正在执行命令: SET encryption
f)之后可开始执行正常的备份操作。
g)恢复操作前,需要提供密钥,否则无法恢复
RMAN> set decryption identified by 'pm1234';
正在执行命令: SET decryption
h)之后便可进行正常的恢复操作。
5、归档备份
在Oracle术语中,归档备份指的是希望长时间或永久保存的备份。通常,创建归档备份只是为了满足有关记录保留的规定。归档备份不理会RMAN配置的保留策略,也不会由delete obsolete命令自动删除。
创建归档备份的语法如下:
backup … keep { forever | until time 'date_expr' } [ restore point rpname ];
其中forever表示永久保存不过期,until time则指定过期的日期,二者选一。日期表达式可以是实际的日期或计算式。如下命令将生成数据库的完整归档备份,因为是归档备份,其中也将包括归档日志
RMAN>backup as compressed backupset database keep until time 'sysdate+90' restore point quarterly_bak;
六、并行化备份操作
每次使用RMAN时,都至少会对目标数据库启动两个会话,被称为默认会话和轮询会话。默认会话是调用实现RMAN的内核PL/SQL的会话,轮询会话监视RMAN操作的进展。当RMAN读写磁盘或磁带时,它将需要第三个会话:通道。通过启动多个通道来实现备份工作的并行化,可减少备份花费的时间。
RMAN备份时可达到的并行度受通道数和输入文件数的限制。考虑下列脚本
run {
allocate channel t1 type disk;
allocate channel t2 type disk;
allocate channel t3 type disk;
allocate channel t4 type disk;
backup database files per set 8;
}
脚本中启动了四个命名的通道,RMAN计算数据库中的文件数,并将它们分布到备份集中,每个备份集不超过8个文件。如果数据库由100个数据文件外加控制文件构成,那将生成13个备份集,前12个备份集每个包含8个文件,第13个备份集包含剩下的5个文件,并行度为4,并行度受通道数限制。但如果数据库只有20个数据文件,那将只生成3个备份集,并行度为3,有一个通道闲置,此时的并行度受输入文件数的限制。
默认情况下,最大并行度是不会超过输入文件数的,因为默认同一时间内,一个通道只能对应一个文件的读取,但采用多段备份功能后,一个文件可以分段同时被多个通道并行访问。这一应用主要是针对那些单个较大文件的备份进行的。
多段关键字的运用如下脚本
run {
allocate channel t1 type disk;
allocate channel t2 type disk;
allocate channel t3 type disk;
allocate channel t4 type disk;
backup as backupset datafile 16 section size 10g;
}
该脚本启动4个通道,每个通道读取数据文件16的一个10g大小的段,每个通道将生成包含段的备份的片(单独的物理文件)。假定文件大小为200G,则将生成20个备份片文件,一次并行的生成4个。如果没有section size关键字,则并行度将为1,只能用一个通道执行整个操作,而其它三个通道将闲置。
七、配置RMAN备份的默认参数
RMAN备份的默认参数往往并不适合我们的要求,在备份工作开始前可能需要配置好默认的备份参数,一旦这些参数配置好后,备份命令在未指定目标参数情况下将按设定的默认值来进行。
show命令可以查看RMAN当前配置的默认参数,以下是在未对这些参数设置过的情况下系统的默认取值,使用show all命令显示了所有配置参数,每一行配置语句结尾标注的#default表明该参数值是系统的默认取值
RMAN> show all;
使用目标数据库控制文件替代恢复目录
db_unique_name 为 MES 的数据库的 RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'C:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\SNCFMES.ORA'; # default
要调整这些参数的默认值,可使用configure命令,如以下一些设置:
更改控制文件的备份配置,设为自动备份,并指定备份的目标路径。这样在数据库结构发生改变或做RMAN备份时会自动备份控制文件,也会备份spfile文件,这里%F格式只对自动备份生效,手动备份时指定该参数是无效的
RMAN> configurecontrolfileautobackupon;
RMAN> configurecontrolfileautobackupformatfordevicetypediskto 'd:\rman_bak\mes\control_bak\%F';
更改数据文件备份集的目标位置和命名规则
RMAN> configurechanneldevicetypediskformat 'd:\rman_bak\mes\%d_%u_%c_%T';
更改备份类型由默认的backupset改为copy,使得RMAN的任何备份都不产生备份集,而产生映像副本
RMAN> configure device type disk backup type to copy;
更改默认的备份设备类型由磁盘disk改为磁带sbt
RMAN> configure default device type to sbt;
更改磁盘备份的并行数,以下启动2个通道
RMAN> configure device type disk parallelism 2;
启用备份优化功能,这允许RMAN如果认为有足够的文件副本,就不备份特定文件。优化与保留策略有关。默认的保留策略为1,意味着RMAN将试图至少保存一个副本。备份优化只适用于归档日志和只读或脱机表空间的数据文件。由于联机的可读写的数据文件总是在变化,RMAN将不会认为它有相同的副本
RMAN> configure backup optimization on;
更改备份的保留策略,以下将保留策略的冗余度设置为3,意味着RMAN将试图保存3个副本
RMAN> configure retention policy to redundancy 3;
可以设置两种保留策略,冗余级别指定应保存的文件副本数。另一种策略是设置恢复窗口,以下的备份设置保证可以通过执行时间点恢复回到过去90天中的任意一个时间
RMAN> configure retention policy to recovery window of 90 days;
要将配置的设置恢复为系统默认值,可使用clear命令。如下所示,首先用show命令查看相关配置信息,再用clear命令恢复到系统默认值
RMAN> show device type;
db_unique_name 为 MES 的数据库的 RMAN 配置参数为:
CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
RMAN> configure device type disk clear;
旧的 RMAN 配置参数:
CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
RMAN 配置参数已成功重置为默认值
RMAN> show device type;
db_unique_name 为 MES 的数据库的 RMAN 配置参数为:
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
实际上,在这些配置参数中,大多数的默认设置都不需要调整,RMAN就能很好的完成我们期望的备份效果。但要特别留意的是默认备份的目标位置并未体现在这一配置列表中。默认情况下,RMAN磁盘备份的目标位置是闪回恢复区flash_recovery_area,Oracle安装时它的默认选定位置是在Oracle基目录%ORACLE_BASE%中,在Oracle安装时建议调整到其它磁盘位置以提高系统性能。
可以查看初始化参数db_recovery_file_dest和db_recovery_file_dest_size来查看闪回恢复区信息,Oracle 10g中这个区域大小默认是2G,11g中则提升为4G
SQL>show parameter db_recovery_file_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string c:\oracle\flash_recovery_area
db_recovery_file_dest_size big integer2G
如果闪回恢复区容量不够,可以调整其大小
SQL> alter system set db_recovery_file_dest_size=4G;
采用闪回恢复区位置存放备份的好处是RMAN可以自动管理该区域,如果闪回恢复区已满,RMAN将从中自动删除过时的备份。
在完成以上的配置后,可以用以下一条命令完成数据库的联机备份
backup as compressed backupset incremental level 1 database plus archivelog delete all input;
八、管理和监视RMAN备份
一旦生成了一些备份,就需要对这些备份进行管理,如报告已经创建了哪些备份,这些备份包含的内容和状态怎样,哪些还需要备份,哪些备份已经无效或多余可以删除,如何删除之前的备份等。
1、list、validate、restore...validate、restore...preview、report、delete和crosscheck命令
list命令列出已创建的备份。
列出备份汇总信息
RMAN> list backup summary;
列出所有备份集
RMAN> list backupset;
以上也可以使用命令
RMAN> list backup;
查看单个备份集
RMAN> list backupset 5;
列出所有映像副本
RMAN> list copy;
列出所有数据库文件备份集(不包含控制文件、服务器初始化参数文件和归档日志文件)
RMAN> list backup of database;
列出包含控制文件的备份集
RMAN> list backup of controlfile;
列出包含服务器初始化参数文件的备份集
RMAN> list backup of spfile;
列出所有归档日志文件备份集
RMAN> list backup of archivelog all;
列出包含日志切换系列号为1000~1050的归档日志的备份集
RMAN> list backup of archivelog from sequence 1000 until sequence 1050;
列出包含数据文件1的备份集
RMAN> list backup of datafile 1;
列出包含USERS表空间的备份集
RMAN> list backup of tablespace users;
列出所有归档日志文件列表
RMAN> list archivelog all;
要改变list输出信息中的日期时间格式,可在启动RMAN前设置操作系统的环境变量nls_date_format,如在Windows下执行命令
C:\> set nls_date_format=yyyy-mm-dd hh34:mi:ss
validate、restore...validate、restore...preview用于验证备份集的可用性以及验证和查看需要的恢复内容是否在备份集中。
验证备份集的可用性
RMAN> validate backupset 20;
验证表空间是否在备份集中
RMAN> restore tablespace users validate;
验证数据文件是否在备份集中
RMAN> restore datafile 'd:\oradata\mes\system01.dbf' validate;
以上命令也可以使用文件号来表示
RMAN>restore datafile 1 validate;
查看恢复整个数据库的备份是否存在
RMAN> restore database preview;
查看恢复某个表空间所需的备份是否存在
RMAN> restore tablespace users preview;
查看恢复某个数据文件所需的备份是否存在
RMAN> restore datafile 5 preview;
report命令按照设定的保留策略,通过询问目标数据库确定哪些需要备份。
列出构成数据库的数据文件
RMAN> report schema;
应用保留策略,列出至少需要一个备份来满足策略的所有数据文件
RMAN> report need backup;
列出一周未备份的所有对象,使用这一命令将忽略配置的保留策略
RMAN> report need backup days 7;
列出备份数不足2份的数据文件
RMAN> report need backup redundancy 2;
按照保留策略的冗余度,列出所有多余的不再需要而可以删除的备份
RMAN> report obsolete;
该命令之后可以使用delete命令将多余的备份删除
RMAN> delete obsolete;
列出以7天为恢复窗口策略的过期备份
RMAN> report obsolete recovery window of 7 days;
该命令之后可以使用delete命令将多余的备份删除
RMAN> delete obsolete recovery window of 7 days;
列出以冗余度2为冗余策略的过期备份
RMAN> report obsolete redundancy 2;
该命令之后可以使用delete命令将多余的备份删除
RMAN> delete obsolete redundancy 2;
delete命令也可以一次性删除所有的备份或有选择性的删除备份。
删除所有的备份
RMAN> delete backup;
删除所有的映像副本
RMAN> delete copy;
删除所有的数据库文件备份(不包括控制文件、服务器初始化参数文件和归档日志文件)
RMAN> delete backup of database;
删除控制文件备份
RMAN> delete backup of controlfile;
删除初始化参数文件备份
RMAN> delete backup of spfile;
删除所有归档日志文件备份
RMAN> delete backup of archivelog all;
删除指定编号的备份集
RMAN> delete backupset 36;