一. RMAN 备份的一些优点
1. RMAN 会检测和报告损坏的数据块。
2. 不需要将表空间置入热备份模式,RMAN 就可以连接备份数据库。 热备份期间会额外的生成重做日志。
3. RMAN 会自动跟踪新的数据文件和表空间,这样就不再需要在脚本中添加新的表空间和数据文件。
4. RMAN 只备份使用过的数据库(直至最高使用标记(High wate mark)),这样RMAN 备份映像通常小于联机备份的备份脚本。
5. RMAN 提供备份映像的实际压缩。
6. RMAN 提供自动且方便的备份,还原和恢复操作。 RMAN 跟踪恢复数据库所需要的所有备份,在要求还原操作时需要使用这些备份,并且只还原必要的对象。
7. RMAN 可以与第三方介质管理产品一起无缝的工作。
8. RMAN 支持增量备份策略。
9. 可以使用RMAN 来测试备份而不要实际还原他们。
二. RMAN 兼容性问题
在启动备份操作之前,需要考虑一些兼容性问题。在一个企业中,可能会运行不同的Oracle 版本,因此我们在设计备份策略时必须考虑RMAN 的兼容性问题。
原因可以参考:RMAN 体系结构概述
下表是Oracle 兼容性的一个参照表:
RMAN 目标数据库版本
(应用补丁)
RMAN 客户端版本
(应用补丁)
RMAN 目录数据库版本
(应用补丁)
RMAN 目录模式版本
(应用补丁)
9.0.1
9.0.1
>=8.1.7
>=RMAN 客户端
9.2.0
>=9.0.1.3 并且<= 目录数据库可执行文件版本
>=8.1.7
>=RMAN 客户端
10.1.0
>=9.0.1.3 并且<=目录数据库可执行文件版本
>=9.0.1
>=RMAN 客户端
10.2.0
>=9.0.1.3 并且<=目录数据库可执行文件版本
>=9.0.1
>=RMAN 客户端
表中的 目录模式版本 可以从RCVER 表中查看:
SQL> conn rman/rman@orcl; -- 用catalog 用户登录
已连接。
SQL> select * from rcver;
VERSION
------------
11.02.00.01
三. 监控RMAN 备份情况
RMAN 在备份期间产生输出,如果在启动RMAN 时启用登录,则取消该输出。可以通过查看生成的日志文件来监控RMAN 操作,或者通过V$RMAN_OUTPUT视图来查看。
SQL> conn /@orcl as sysdba;
已连接。
SQL> select output from v$rman_output order by stamp;
四. 脱机RMAN 数据库备份
4.1 使用默认的设置执行备份操作:
RMAN 会有一些参数有默认值,在没有更改这些参数的情况下,我们也可以进行备份。 此时备份集将会备份到闪回区中。我们可以用catalog 模式或者是非catalog 模式来连接RMAN。 如果采用catalog 模式,只需在连接的时候加上catalog 参数即可。 不过要注意的是,一般建议在服务器本地直接连接RMAN,然后通过网络连接来连接catalog目录。
执行脱机备份操作时,数据库必须处于mount 状态。 一些命令如下:
Shutdown immediate
Startup mount
Backup database
或者
Backup as compressed backupset database -- 将数据库作为压缩的备份集来备份
C:/Users/Administrator.DavidDai>rman target '/@orcl as sysdba';
恢复管理器: Release 11.2.0.1.0 - Production on 星期一 6月 21 23:24:47 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到目标数据库: ORCL (DBID=1247395743)
RMAN>
C:/Users/Administrator.DavidDai>rman target '/@orcl as sysdba' catalog 'rman/rman@orcl';
恢复管理器: Release 11.2.0.1.0 - Production on 星期一 6月 21 23:25:24 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到目标数据库: ORCL (DBID=1247395743)
连接到恢复目录数据库
RMAN>
4.2 不使用默认参数执行脱机备份操作
先来看一段脚本:
Shutdown immediate
Startup mount
Run
{
Allocate channel c1 device type disk format 'D:/backup/sid_%U';
Allocate channel c2 device type disk format 'E:/backup/sid_%U';