书归正传,在开始之前俺先强调一点,通过RMAN的方式不论要备份还是要恢复,都必须先启动实例并加载数据库。(有人在抗议,说这太初级了。俺说明一下,这是一个超级菜鸟摸爬滚打的心路历程,别说初级,连弱智的内容都有,所以俺友情提醒大虾们务必开启初级内容过滤功能,以妨过多占用您宝贵时间,什么?你不会这一招,哎,我这里有秘制一目十行术,看你是大虾给你打8折,pm我吧)
RMAN有两种操作方式,一种是类似dos,通过键盘操作的命令方式,第二种是类似windows通过鼠标操作的图形化界面方式。图形化方式操作简单但也因此省略了一些具体过程,你可能成功操作但却不知道oracle究竟做了什么,怎么做的。俺立志也是要做名oracle大虾地,所以第二种方式完全不在考虑之列,最多只是参考。本篇后续内容所做的各项操作也都将以命令方式进行。
连接本地数据库
通过rman连接本地数据库非常简单,以windows平台为例,进入到命令提示符界面:
C:Documents and SettingsAdministrator>set oracle_sid=jssweb
C:Documents and SettingsAdministrator>rman target /
恢复管理器: 版本9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: JSSWEB (DBID=3391142503)
RMAN>
注:如果本地库只有一个实例,则不需要指定oracle_sid。Rman会自动连接到默认实例。
当然,你也可以先启动rman,然后再通过connect来连接目标数据库,如下:
C:Documents and SettingsAdministrator>set oracle_sid=jssweb
C:Documents and SettingsAdministrator>rman
恢复管理器: 版本9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
RMAN> connect target /
连接到目标数据库: JSSWEB (DBID=3391142503)
RMAN>
连接远程数据库
如果要连接的目标数据库是一个远程数据库,那么必须在建立连接时指定一个有效的网络服务名,同时你本地的tnsname.ora文件中也必须已经建立了该网络服务名的正确配置。示例如下:
C:Documents and SettingsAdministrator>rman target sys/change_on_install@testdb
恢复管理器: 版本9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: TESTDB (DBID=2220262593)
RMAN>
当然,在这里你也可以同样先启动rman,再通过connect创建连接。具体示例与上类似,如果再做演示那这个环节不仅是弱,而是超弱,即使坚定如我也承受不了如此强烈的呕吐加鄙视的欲望,所以还是做罢吧。
退出RMAN
哈哈,退出就太简单啦,敲个EXIT试试~~~~~~
还有一点各位新友也了解一下,对于以后写rman批处理会有帮助。在启动rman时可以指定日志输出,之前的示例中均没有指定,rman就将执行结果直接打印到屏幕了,如果我们以后写了一堆超长的rman批处理放在后台执行,可能会希望能够把执行日志记录下来备查,这个时候日志输出功能就用上了。这个功能也非常简单,如下:
C:Documents and SettingsAdministrator>rman target / log d:logs man_log.txt
RMAN>
rman会将执行的结果直接输出到指定的d:logs man_log.txt文件,一旦脚本放入后台执行出现问题,我们可以根据rman_log文件来辅助分析。
RMAN非常有意思,做为一个专业的备份工具,它几乎考虑到了备份及恢复过程中可能遇到的各种操作,由此它也提供了各种各样的命令来为这些操作提供便利。
一、启动、关闭数据库
在RMAN中执行关闭和启动数据库的命令与SQL环境下一模一样。当然,在执行之前,你需要先连接到目标数据库,如例:
C:Documents and SettingsAdministrator>rman target /
恢复管理器: 版本9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: JSSWEB (DBID=3391142503)
RMAN> shutdown immediate
正在使用目标数据库控制文件替代恢复目录
数据库已关闭
数据库已卸载
Oracle 例程已关闭
RMAN> startup
已连接到目标数据库 (未启动)
Oracle 例程已启动
数据库已加载
数据库已打开
系统全局区域总计 143727516 字节
Fixed Size 453532 字节
Variable Size 109051904 字节
Database Buffers 33554432 字节
Redo Buffers 667648 字节
RMAN>
当然,你也可以执行startup mount,然后再利用alter database open命令打开数据库以及shutdown normal,shutdown abort等。总之启动和关闭的命令跟SQL环境下相比就仨字儿:完全一模一样。
二、执行操作系统命令
Rman支持通过执行host命令暂时退出rman的命令提示符而进入到操作系统的命令环境,如下例:
RMAN> host;
Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.
C:Documents and SettingsAdministrator>cd
C:>exit
主机命令完成
RMAN>
执行完系统命令后可以再通过执行exit退出到rman命令提示符下。
三、执行SQL语句
在rman中执行sql语句稍嫌复杂。
在RMAN的命令提示符后输入SQL命令,然后在一对单引号(双引号亦可)中输入要执行的SQL语句,例如:
RMAN> SQL 'ALTER SYSTEM ARCHIVE LOG ALL';
需要注意的一点是,rman中的sql环境不能执行SELECT语句,或者说执行不报错,但你也看不到结果。
其实我们完全可以通过更取巧的方式来实现更强大的SQL操作,比如利用第二项介绍的内容,如下:
RMAN> host;
Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.
C:Documents and SettingsAdministrator>sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on 星期四 6月 28 17:40:24 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn / as sysdba
已连接。
SQL> select sysdate from dual;
SYSDATE
----------
28-6月 -07
SQL> exit
从Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production中断开
C:Documents and SettingsAdministrator>exit
主机命令完成
RMAN>
萝卜青菜各有所爱,大家是爱萝卜还是爱青菜啊,爱萝卜的请选第一种,爱青菜的请选第二种。我爱吃肉,我要找第三种出来~~~~~
四、定义RMAN配置
RMAN中具有一系列的默认配置,这些配置决定了备份和恢复时的一些选项(此节内容枯燥,眼神不好的同学请自觉跳过),比如:
自动分配通道的配置;
备份保留时间的配置;
备份集大小的限制;
启用或禁用备份优化功能;
镜像复制的备份数量;
是否将某个表空间排队在备份之外。
修改配置是通过CONFIGURE命令,具体用法非常简单,但由于可供configure的配置非常之多,这里不做详细介绍,在后续实际演练章节中会有体现。当然,有心的朋友也可以通过google搜索一下,更有耐心的新友就等着看俺写的外传。
五、显示RMAN默认配置
Rman中可以利用show命令来显示当前的配置参数。例如,通过SHOW ALL显示当前所有的配置。
RMAN> show all;
RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:/backup/%F';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1; # 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 SNAPSHOT CONTROLFILE NAME TO 'F:ORAHOME1DATABASESNCFJSSWEB.ORA'; #
default
RMAN>
注:配置项后面跟了# default的表示该项仍是初始配置,未被修改过。
该命令使用也相当灵活,其后跟上不同的类型的配置参数,即可以显示不同类型的配置,如:
SHOW CHANNEL;
SHOW DEVICE TYPE;
SHOW DEFAULT DEVICE TYPE;
六、列出备份信息
LIST命令用来查看通过RMAN生成的备份信息,照我看来,这个应用应该会非常少,大家了解即可(引申一下,不仅是list,俺基本认为备份这种操作,脚本一次定型,100年不许变,哪有DBA天天干备份恢复的,如果真是这样,那您这库。。。。。。)。例如:
列出数据库中所有文件的备份信息:
RMAN>LIST BACKUP OF DATABASE;
列出指定表空间的备份信息:
RMAN>LIST COPY OF TABLESPACE 'SYSTEM';
列出指定数据文件的备份信息:
RMAN>LIST BACKUP OF DATAFILE 'F:ORAHOME1ORADATAJSSWEBJWEB.ORA';
七、删除备份
用于删除RMAN备份记录及相应的物理文件。当使用RMAN执行备份操作时,会在RMAN资料库中生成RMAN备份记录,并且RMAN备份记录被存放在目标数据库的控制文件中,如果配置了恢复目录,那么该备份记录也会被存放到恢复目录中。
1、删除陈旧备份
当使用RMAN执行备份操作时,RMAN会根据备份冗余策略确定陈旧备份。
RMAN> delete obsolete;
2、删除EXPIRED备份
执行crosscheck命令核对备份集,那么会将该备份集标记为EXPIRED状态。为了删除相应的备份记录,可以执行delete expired backup命令。
RMAN> delete expired backup;
3、删除EXPIRED副本
RMAN> delete expired copy;
4、删除特定备份集
RMAN> delete backupset 19;
5、删除特定备份片
RMAN> delete backuppiece 'd:ackupDEMO_19.bak';
6、删除所有备份集
RMAN> delete backup;
7、删除特定映像副本
RMAN> delete datafilecopy 'd:ackupDEMO_19.bak';
8、删除所有映像副本
RMAN> delete copy;
9、在备份后删除输入对象
RMAN> delete archivelog all delete input;
RMAN> delete backupset 22 format = ''d:ackup%u.bak'' delete input;
一、RMAN备份形式
1、镜像复制(Image Copies)
镜像复制实际上就是数据文件、控制文件或归档文件的复制,与用户通过操作系统命令建立的文件复制实质一样,只不过RMAN是利用目标数据库中的服务进程来完成文件复制,而用户则是用操作系统命令。所以镜像复制的方式体现不出RMAN的优势,也并非我们讨论的重点,大家了解一下即可(啥?想知道镜像复制咋用?卡,问村长去~~~~~)。
2、备份集(Backup Sets)
备份集是通过RMAN创建的逻辑备份对象。一个备份集中可以包含多个数据文件、控制文件或归档文件。备份集在物理上是由多个备份片段组成,每个备份片段是一个操作系统文件。
二、RMAN命令执行方式
在进入演练之前,大家还有必要了解运行rman命令的方式,就目前已知的情况,共有4种运行方式。
1、单个执行(没啥说的,之前的示例都是这种方式)
RMAN>backup database;
2、批处理(呵呵,跳票的补上)
RMAN>RUN{
.......................
.......................
}
批处理方式实质是将原来单个执行的命令组合到一起,并放在run{}之间,这种方式最大的好处是所有在run中的命令被视为一个作业,如果作业中任何一条命令执行失败,则整个命令停止执行,即失败命令后的其它命令都不会再被执行。这种方式是最常使用的方式,特别对于后台执行。
3、运行脚本(又能细分为几种方式如下:)
C:>rman TARGET / @backup_db.rman
RMAN> @backup_db.rman
RMAN> RUN { @backup_db.rman }
运行存储在恢复目录中的脚本(需要首先为rman创建恢复目录)
RMAN> RUN { EXECUTE SCRIPT backup_whole_db };
看看,够灵活吧。
4、操作系统脚本(linux,windows环境下小有差异,但只是操作系统命令的不同)
C:>rman cmdfile=backup_db.rman
明眼人看的出来,后两种其实是前面两种加上操作系统命令的综合应用。
三、对数据库进行全备
1、使用backup database命令执行备份
RMAN> BACKUP DATABASE;
执行上述命令后将对目标数据库中的所有数据文件进行备份,由于没有显式指定FORMAT参数,rman会自动为每个备份片段命名,并保存在ORACLE_HOME/database目录下。
当然,也可以通过显式指定format参数来自定义备份片段的命令规则,比如:
RMAN> BACKUP DATABASE FORMAT 'D:BACKUP/%U';
(关于%U的格式说明,请参考本篇外传。Ooo,外传好像还没写,没关系没关系,大家表着急,我保证大家在有生之年一定等的到的。)
2、通过list命令查看刚刚创建的备份信息:
RMAN> list backup of database;
正在使用目标数据库控制文件替代恢复目录
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
11 Incr 0 827M DISK 00:01:30 26-6月 -07
BP 关键字: 11 状态: AVAILABLE 标记:TAG20070629T150701
段名:D:BACKUPCILGG8L_1_1
备份集 11 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ---------- ----
1 0 Incr 5233577896 26-6月 -07 F:ORAHOME1ORADATAJSSWEBSYSTEM01.DBF
2 0 Incr 5233577896 26-6月 -07 F:ORAHOME1ORADATAJSSWEBUNDOTBS01.DBF
3 0 Incr 5233577896 26-6月 -07 F:ORAHOME1ORADATAJSSWEBDRSYS01.DBF
4 0 Incr 5233577896 26-6月 -07 F:ORAHOME1ORADATAJSSWEBEXAMPLE01.DBF
5 0 Incr 5233577896 26-6月 -07 F:ORAHOME1ORADATAJSSWEBINDX01.DBF
6 0 Incr 5233577896 26-6月 -07 F:ORAHOME1ORADATAJSSWEBODM01.DBF
7 0 Incr 5233577896 26-6月 -07 F:ORAHOME1ORADATAJSSWEBTOOLS01.DBF
8 0 Incr 5233577896 26-6月 -07 F:ORAHOME1ORADATAJSSWEBUSERS01.DBF
9 0 Incr 5233577896 26-6月 -07 F:ORAHOME1ORADATAJSSWEBXDB01.DBF
10 0 Incr 5233577896 26-6月 -07 F:ORAHOME1ORADATAJSSWEBJWEB.ORA;
四、备份表空间
只要实例启动并处于加载状态,不论数据库是否打开,都可以在rman中对表空间进行备份,而且不需要像手动备份那样先'ALTER TABLESPACE ... BEGIN BACKUP'。例如:
RMAN> backup tablespace jweb;
启动 backup 于 26-6月 -07
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动 full 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00010 name=F:ORAHOME1ORADATAJSSWEBJWEB.ORA
通道 ORA_DISK_1: 正在启动段 1 于 26-6月 -07
通道 ORA_DISK_1: 已完成段 1 于 26-6月 -07
段 handle=F:ORAHOME1DATABASEJIM0BBV_1_1 comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:15
完成 backup 于 26-6月 -07
启动 Control File and SPFILE Autobackup 于 26-6月 -07
段 handle=D:BACKUPC-3391142503-20070704-00 comment=NONE
完成 Control File and SPFILE Autobackup 于 26-6月 -07
同样,我们在使用backup tablespace也可以通过显式指定format参数自定义备份片段名称。
我们再通过LIST BACKUP 查看一下备份:
RMAN> LIST BACKUP OF TABLESPACE JWEB;
发现有两份备份片段,复习一下2章的内容,删除其中一个备份(删除的方法非常多,下例使用删除backupset,有心的朋友不妨自己尝试一下通过其它方式删除指定备份片段)。
RMAN> DELETE BACKUPSET 18;
五、备份指定数据文件
首先可以先通过数据字典DBA_DATA_FILES查询出表空间对应的数据文件及其序号,例如:
select file_name,file_id,tablespace_name from dba_data_files
然后再通过BACKUP DATAFILE备份指定序号的数据文件,例如:
RMAN> BACKUP DATAFILE n;
如果要查看指定数据文件的备份,可以用:
RMAN> LIST BACKUP OF DATAFILE n;
注:n=指定的的数据文件序号,如果需要备份的数据文件有多个,n=多个序号,中间以逗号分隔即可。
六、备份控制文件
控制文件在ORACLE中的重要性是毋庸置疑的,你看,连RMAN都给予特殊的照顾,在RMAN中备份控制文件的方式是最多的。
1.最简单的方式,通过CONFIGURE命令将CONTROLFILE AUTOBACKUP置为ON。
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
然后你再通过rman做任何备份操作的同时,都会自动对控制文件做备份。
2.对编号为1的数据文件,即SYSTEM表空间的数据文件做备份时,RMAN也会自动对控制文件做备份。
3.手动执行备份命令。
RMAN> BACKUP CURRENT CONTROLFILE;
4.执行BACKUP时指定INCLUDE CURRENT CONTROLFILE参数,例如:
RMAN> BACKUP DATABASE INCLUDE CURRENT CONTROLFILE;
如果要查看备份的控制文件,可以通过:
RMAN> LIST BACKUP OF CONTROLFILE;
七、备份归档日志文件
归档日志对于数据库介质恢复相当关键,其虽然不像控制文件那样一旦损坏则数据库马上崩溃但重要性丝毫不减。归档日志文件能确保我们将数据库恢复到备份之前的任意时刻。在RMAN中备份归档日志有两种方式:
1、利用BACKUP ARCHIVELOG命令备份
RMAN> BACKUP ARCHIVELOG ALL;
2、在BACKUP过程中利用PLUS ARCHIVELOG参数备份,例如:
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
则在备份数据库的同时自动对所有归档文件进行备份。这种方式与上种有什么区别呢,区别太明显了,BACKUP.....PLUS ARCHIVELOG命令在备份过程中会依次执行下列步骤:
1>.运行ALTER SYSTEM ARCHIVE LOG CURRENT语句对当前redolog进行归档。
2>.执行BACKUP ARCHIVELOG ALL命令备份所有已归档日志。
3>.执行BACKUP命令对指定项进行备份。
4>.再次运行ALTER SYSTEM ARCHIVE LOG CURRENT对当前redolog归档。
5>.对新生成的尚未备份的归档文件进行备份。
在完成归档日志文件备份后,我们通过需要删除已备份过的归档文件(归档文件记录下了数据库进行过的所有操作,如果您的数据库操作频繁而且量大,那归档文件大小也是相当恐怖,备份后删除释放存储空间是相当有必要地)。RMAN提供了DELETE ALL INPUT参数,加在BACKUP命令后,则会在完成备份后自动删除归档目录中已备份的归档日志。
完成备份之后,可以通过下列命令查看已备份的归档日志片段:
RMAN> LIST BACKUP OF ARCHIVELOG ALL;
综述:上述示例中出现的命令格式较多,但细细看来是否能发现些格式上的规律?比如查看备份基本都是LIST BACKUP OF备份项名称,如果想自定义片段的话则在备份命令后加上FORMAT参数(后三项没有列举加format参的示例,大家千万表以为是不可以哟,俺都说乐 rman是超灵活地泥,大家一定要多多尝试,反正执行的是备份操作不是删除,又搞不坏目标数据库,你还有啥可担心的泥)。
前篇介绍了通过rman进行各种备份,进阶篇则主要是rman的一些功能扩展和增加功能,利用前篇你已经完全可以完成数据库的备份,而通过本篇你可以更好更方便的完成数据库的备份。
一步一步学RMAN第一篇 进入RMAN
http://junsansi.itpub.net/post/29894/307688
一步一步学RMAN第二篇 RMAN命令知多少
http://junsansi.itpub.net/post/29894/308749
一步一步学RMAN第三篇 RMAN备份演练初级篇
http://junsansi.itpub.net/post/29894/308751
一、建立增量备份
如果数据库运行于不归档模式下,那么你只能在数据库干净关闭的情况下(以NORMAL、IMMEDIATE、TRANSACTIONAL方式关闭)才能进行一致性的增量备份,如果数据库运行于归档模式下,那即可以在数据库关闭状态进行,也可以在数据库打开状态进行备份。再次说明了打开归档模式的优势,归档日志也就是多占些磁盘空间,好处不是一些是很多,可是也相当于又给数据库加了层保险啊。
建立增量备份也是相当简单,实质就是一个参数INCREMENTAL LEVEL=n,在执行BACKUP命令时加上即可,例如,建立一个增量级别0的全库备份:
RMAN> BACKUP INCREMENTAL LEVEL=0 DATABASE;
再例如,建立一个增量级别1的users01.dbf数据文件备份
RMAN> BACKUP INCREMENTAL LEVEL=1 TABLESPACE SYSTEM DATAFILE 'F:ORAHOME1ORADATAJSSWEBUSERS01.DBF';
注:Rman默认创建的增量备份是Differential方式,如果要建立Cumulative方式的增量备份,在执行BACKUP命令时显式指定即可,例如:
RMAN> BACKUP INCREMENTAL LEVEL=2 CUMULATIVE DATABASE;
关于增量备份概念性解释,比如Differential与Cumulative两种方式间的区别请参考本篇外传,括弧,外传整理中,如果您看到本篇的时候外传还没出,这个。。。。表着急,耐心等候,面包牛奶都会有的。
二、建立镜像复制
首先大家需要明了这个概念,rman中的镜像复制实质与通过操作系统copy命令备份相同,甚至连命令的格式都相似,只不过直接应用操作系统的copy命令复制数据文件时,只是文件拷贝,而rman的copy则能够在复制的同时,验证数据的有效性。
个人认为rman中的镜像复制应用有限,而且也体现不出rman的优势,所以俺也只是大致了解了概念,没有进行过实际操作,感兴趣的朋友可以自己做做试验,这里就不多做介绍了。
三、建立冗余备份
RMAN提供了一种更谨慎的备份策略:Duplexed方式备份,其实质即是在生成备份集的同时,向指定位置生成指定份数(最大不超过4份)的备份集复制,以避免在灾难性事故时数据库损坏和备份丢失的情况下导致完全崩溃,提高备份可用性。当然,这是人类美好的愿意,对于那些没有异机异地备份条件的,假如机房发生火灾、地震之类大灾难,就算dba把备份文件复制了100份也照样玩完,上述是个假设,万勿对号入座,火灾、地震也不是哪都会发生地,大家好好活着,别害怕。
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:ackup1和d:ackup2目录。
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备份的保存策略
策略,啧啧,想不到咱也能说出这么专业的词儿啊,人家说专家就是能把任何事务都描述的很专业,我一定要再多学几个类似的词,要让自己离专家的距离更近一些,或者,我直接搬到eygle他们家床头边上住去~~~~
如果你的数据库非常大,并且备份执行也比较频繁(废话,不大不频繁也得这么干,优秀的dba一定要拥有对应其身份的良好的工作习惯),有必要对你这些备份文件的保存制订合理的策略。该挪的挪,该搬的搬,该删除的删,合理释放,最大化利用有限的磁盘空间嘛。
在通过RMAN创建的备份片段中,由于备份文件也是由rman创建和维护,所以手工删除并不明智,并且RMAN也提供了备份保留策略,合理制订,由RMAN自动删除过旧的备份文件更加安全也更加方便。
RMAN中提供了两种备份保留策略:基于时间,和基于冗余数量
为RMAN设置了备份保留策略之后,RMAN会自动判断哪些备份集或镜像复制文件不必再保留。这些备份文件将会被标记为“废弃(Obsolete)”,可以通过REPORT OBSOLETE命令查看当前处于废弃状态的备份文件,或者通过DELETE OBSOLETE命令删除这些废弃的备份。例如:
RMAN> report obsolete;
正在使用目标数据库控制文件替代恢复目录
RMAN 保留策略将应用于该命令
将 RMAN 保留策略设置为 3 天的恢复窗口
已废弃的备份和副本报表
类型 关键字 完成时间 文件名/句柄
-------------------- ------ ------------------ --------------------
备份集 21 04-7月 -07
备份段 21 04-7月 -07 D:BACKUPC-3391142503-20070704-01
RMAN> delete obsolete;
RMAN 保留策略将应用于该命令
将 RMAN 保留策略设置为 3 天的恢复窗口
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=14 devtype=DISK
删除以下已废弃的备份和副本:
类型 关键字 完成时间 文件名/句柄
-------------------- ------ ------------------ --------------------
备份集 21 04-7月 -07
备份段 21 04-7月 -07 D:BACKUPC-3391142503-20070704-01
是否确定要删除以上对象 (输入 YES 或 NO)? y
已删除备份段
备份段 handle=D:BACKUPC-3391142503-20070704-01 recid=21 stamp=627061645
1 对象已删除
在执行删除命令时有两点需要了解:
如果被判断为废弃的备份是一个单独数据文件的镜像复制,那么在执行DELETE命令时将直接删除这个镜像复制文件。
如果被判断为废弃的备份是一个备份集中的一部分,则必须等到整个备份集中所有其它文件都被废弃之后,才能删除这个备份集。
1、基于时间的备份保留策略。
说的简单些,就是你希望数据库最早能恢复到几天前。比如将恢复时间段设置为7,那么RMAN所保留的备份即是可以保证你将数据库恢复到一周内任何时刻下那些文件。
设置基于时间的备份保留策略可以通过CONFIGURE命令,例如:
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF n DAYS;
注:n=大于0的正整数
执行该命令后,RMAN将始终保留那些将数据库恢复到n天前的状态时需要用到的备份,比如,恢复时间段被设置为7天,那么各个数据文件的备份必须满足如下条件:
SYSDATE-(SELECT CHECKPOINT_TIME FROM V$DATAFILE)>=7
任何不满足上述条件的备份都将被RMAN废弃并可通过DELETE OBSOLETE命令删除。Ok,基本知识讲完了,下面考验你的时刻到了,提问:如果满足条件的备份你也想删,咋整?啥?DEL?D你个大头鬼,再回去看看第二章。
2、基于冗余数量的备份保留策略
基于冗余数量实质即某个数据文件以各种形式(包括备份集和镜像复制)存在的备份的数量。如果某个数据文件的冗余备份数量超出了指定数量,RMAN将废弃最旧的备份。
同样,基于数量的备份保留策略也是通过CONFIGURE命令设置,例如:
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF n DAYS;
同上:n=大于0的正整数
你也可以通过下列命令设置成不采用任何备份保留策略:
RMAN> CONFIGURE RETENTION POLICY TO NONE;
五、备份优化
RMAN中的备份优化(Backup Optimization)是指在备份过程中,如果满足特定条件,RMAN将自动跳过某些文件而不将它们包含在备份集中以节省时间和空间。说的直白些就是能不备的它就不备了,不像原来甭管文件有没有备份过统统再备一遍。由上可知,优化就是偷懒嘛,en,我也要优化的干活:)
话说回来,这个懒也不是什么时候都能偷的,ooo,说错了,是优化。通常必须满足如下几个条件的情况下,才能够启用备份优化的功能:
CONFIGURE BACKUP OPTIMIZATION参数置为on;
执行的BACKUP DATABASE或BACKUP ARCHIVELOG命令中带有ALL或LIKE参数。
分配的通道仅使用了一种设备类型,也就是没有同时分配使用sbt与disk的多个通道。(我知道我知道,通道还没讲,你也等着看外传吧。不过在这儿可以简单描述一下我的理解,In my opinion,sbt与disk就像一条是公路,一条是海路,而通道则相当于你选择了走公路之后,还得选择是走北三环,还是走北五环,还是两条一块走)
打开备份优化设置通过如下命令:
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
那么在进行备份优化时,RMAN是如何判断要备份的文件是否需要被优化呢,这个算法就相当复杂了,而且可能影响优化算法的因素也非常多,假如某库在上午9 点被执行过一次全库备份,等下午3点再次执行全库备份时,备份的文件没有变动而且也已经被备份过时,才会跳过这部分文件。所以理论上备份优化仅对于只读表空间或offline表空间起作用。当然对于已经备份过的archivelog文件,它也会跳过(注:上述言论出自yangtingkun大牛
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lhp547/archive/2009/03/22/4014700.aspx