• 调用和配置Recovery Manager (RMAN)
下列任务需要备份和恢复功能:
• 数据保护
– 介质故障
– 用户错误
– 应用程序错误
• 数据保留和历史保留
• 数据传输
备份和恢复功能的用途
备份和恢复的用途是还原失败的数据库。
备份用于在出现以下问题时保护数据库:硬件故障、介质故障、用户错误和应用程序错误。
介质错误会因硬件级故障而引发数据问题;
控制器故障或磁盘驱动器故障可能导致不太明显的错误,也可能导致明显的错误。如果用户发出不该发出的命令,则还会导致数据错误。应用程序故障也会导致这些相同类型的错误。
备份还可用于数据保留和历史保留。在ARCHIVELOG模式下创建和保留的备份可用于将数据库恢复到过去的某个时间点(该时间点用于满足法规要求)。
还可以使用备份和恢复工具将数据移到其它数据库,甚至移到其它位置。数据库备份是将数据库复制到其它位置的一种可能方法。
为了能够以最短的停机时间从数据丢失问题中恢复,执行以下任务:
• 配置数据库以实现可恢复性
• 定义备份计划
• 对各种类型的故障情形进行计划和测试
• 监视、优化备份和恢复环境,并排除其中的问题
• 从备份还原数据
• 将事务处理恢复到所需的时间点
典型的备份和恢复任务
如果数据库损坏会造成非常严重的后果,则制订一个可靠的备份和恢复计划非常重要。该计划包含下列任务:
• 配置:需要针对环境配置备份和恢复策略。这应该包括备份方法、备份目标、备份保留时间和备份的删除,必要时还应包括备份保护(加密)。
• 日程安排:应该将备份安排在非峰值时段自动运行。
• 测试:定期测试备份和恢复活动。
• 监视:监视备份操作的影响以确定生产数据库上的性能下降,并在必要时改进备份效率。
• 还原:用数据文件的备份覆盖损坏的数据文件。数据文件在当前数据库之前的一个时间点。
• 恢复:恢复使用归档和重做信息将更改应用于各个块,将数据库向前移动至当前时间点。
对于可恢复系统:
• RMAN
– 块介质恢复
– 压缩未使用的块
– 二进制压缩
– 备份加密
• 解决方案是通过以下备份类型实现的:
– 所选文件中的所有数据块(完全备份或增量级别为0 的备份)
– 只限自以前某次备份以来更改过的信息(增量备份)
— 累积(自上次0 级备份以来的更改)
— 差异(自上次增量备份以来的更改)
Oracle 备份和恢复解决方案
下面是主要的备份和恢复解决方案:
Recovery Manager:用于执行备份和恢复的实用程序(具有图形界面和命令行界面)。
使用RMAN 时,可使用的一些主要功能有:
• 块介质恢复:一种恢复特定数据块的方法,与恢复整个表(通过数据泵)或数据文件(通过RMAN)相对。
• 压缩未使用的块:通过压缩未使用的块这一方法,备份将不读取数据库当前未使用的块,因此,备份中将不包括未使用的块。
• 二进制压缩:一种节省空间的功能,它使用大家熟知的算法(与Linux 中的zip等实用程序类似)压缩备份文件。
• 备份加密:一种用于保护所创建备份的安全设备。
解决方案是通过以下备份类型实现的:
• 完全备份:为包含数据且位于要备份的文件中的每个数据块创建副本。
• 增量备份:为自以前某次备份以来发生更改的所有数据块创建副本。
Oracle DB 支持两个级别的增量备份(0 和1)。
1 级增量备份可以为以下两种类型之一:累积或差异。
累积备份用于备份自上次0 级备份以来发生的所有更改。
差异备份用于备份自上次增量备份(可以为0 级或1 级备份)以来发生的所有更改。
上图显示了备份集。左侧部分是OS 级的数据文件。可看到这些文件与RMAN 映像副本和备份片段(中间的段)的关联方式以及这些文件与Oracle Secure Backup (OSB) 备份映像的关联方式。
图表的底部是文件系统文件,这些文件没有RMAN 等效体;它们直接关联到OSB 备份映像。
• RMAN 备份数据文件、控制文件、重做日志归档和SPFILE,无论这些文件是原始文件、备份集还是映像副本。RMAN 执行以磁盘为目标的备份和恢复操作,在介质管理层(MML)(如Oracle Secure Backup)的帮助下还可以备份至磁带或从磁带备份。
• Oracle Secure Backup (OSB) 是用于整个Oracle 环境(包括文件系统和Oracle DB)的集中式磁带管理软件。OSB 可以在本地备份和还原数据,也可以通过局域网(LAN)、广域网(WAN) 或SAN 备份和还原数据。
该图表显示了Oracle 备份解决方案的一个子集。其中未包括一些媒体管理器可能支持的映像副本和代理副本。
几个需要掌握的概念:
部分数据库备份:备份数据库的一部分。其中可能包括也可能不包括控制文件。
冷备份或脱机备份: 是一致备份,因为数据文件头中的SCN 与控制文件中的SCN 匹配。
完全备份: 为包含数据且位于要备份的文件中的每个数据块创建备份。
联机备份:是非一致备份,因为不能确保数据文件与控制文件同步。
整个数据库备份: 包括所有数据文件和至少一个控制文件。
映像副本: 它们是数据文件或归档日志文件的副本(类似于文件副本)。
备份集:它们是一个或多个二进制文件的集合,这些二进制文件包含一个或多个数据文件、控制文件、服务器参数文件或归档日志文件。不存储空数据块和当前未使用的块。
使用Oracle Enterprise Manager 可以很容易地设置Oracle 建议的备份策略,该策略可以保护数据并提供有效的恢复,可恢复到过去24 内的任意时间点,甚至还有可能恢复到48 小时前,具体取决于上次备份创建的时间。Oracle 建议的策略使用了增量备份和增量更新功能,与从归档日志文件应用数据库更改相比,可提供更快的恢复速度。
要建立Oracle 建议的策略,导航到“Maintenance(维护)”页。在“Backup/Recovery(备份/恢复)”区域中,选择“Schedule Backup(调度备份)”。使用“Backup Strategies(备份策略)”部分可在“Oracle-Suggested Backup(Oracle 建议的备份)”策略和“Customized Backup(定制备份)”策略中进行选择。
Oracle 建议的策略是在第一次备份时采用完全数据库复制。由于这是整体数据库备份,可能要在活动最少的时段进行此备份。之后,每天执行到磁盘的增量备份。也可以选择每周执行磁带备份,以备份与恢复有关的所有文件。
因为保留了磁盘上的备份,所以始终可执行完全数据库恢复,或者至少可以执行到过去24 小时内任意时间的时间点恢复。恢复时间最长可达过去48 小时。这是因为在指定日期创建备份之前,从第n–1 天起的备份仍存在。
在操作系统命令行中调用RMAN,并指定相应选项。下面是最常用的选项:
• target:目标数据库的连接字符串
• catalog:恢复目录的连接字符串
• nocatalog:指定不存在恢复目录。这是默认设置
• cmdfile:输入命令文件的名称
• log:输出消息日志文件的名称
下面是一个RMAN 调用示例,该示例使用OS 验证连接到本地数据库,并指定要运行的命令文件和要接收属于该会话的RMAN 命令副本的日志文件:
$ rman target / cmdfile=~/fullbu.rman log=~/fullbu.log
在RMAN 提示符下,可以通过提交RMAN 命令来根据需要以多种不同的方式管理备份环境和创建备份。幻灯片中显示的命令用于列出现有的备份(LIST BACKUP),删除任何过时的备份(DELETE OBSOLETE)。
RMAN 命令具有以下类型:
• 独立命令:
– 在RMAN 提示符下单独执行
– 不能在RUN内作为子命令出现
• 作业命令:
– 必须位于RUN命令的大括号内
– 作为一个组执行
有些命令既可以作为独立命令执行,也可以作为作业命令执行。
RMAN 命令的类型
可以发出两种基本类型的RMAN 命令:独立命令和作业命令。
独立命令在RMAN 提示符下执行,通常是自包含的。以下是一些独立命令:
• CHANGE
• CONNECT
• CREATE CATALOG、RESYNC CATALOG
• CREATE SCRIPT、DELETE SCRIPT、REPLACE SCRIPT
作业命令通常被组合在命令块内并按顺序执行。如果块内的任一命令失败,RMAN 就会停止处理,不再执行块内的其它命令。但仍然保留所有已执行命令的结果,不会以任何形式撤消。
只能作为作业命令运行的命令的示例有ALLOCATE CHANNEL。因为仅为执行作业分配通道,所以该命令不能作为独立命令发出。有些命令既可通过提示符发出,又可在RUN命令块内发出,如BACKUP DATABASE。如果发出的是独立命令,则RMAN 将使用自动
通道分配功能分配所需的通道。
可以交互模式或批处理模式执行独立命令和作业命令。
RMAN> RUN
2> {
3> ALLOCATE CHANNEL c1 DEVICE TYPE DISK
4> FORMAT "/disk2/%U";
5> BACKUP ASBACKUPSET DATABASE;
6> SQL 'alter system archive log current';
7> }
与独立命令不同,作业命令必须出现在RUN命令的大括号内。上图中所示的RUN块内的命令是作为单个命令单元运行的。在RUN 块中进行的任何配置都应用于整个块,并覆盖以前的所有设置。
下面是作业命令的示例,这些命令必须位于RUN块内部:
• ALLOCATE CHANNEL
• SWITCH
RMAN 按顺序执行RUN命令块内的作业命令。如果块内的任一命令失败,RMAN 就会停止处理,不再执行块内的其它命令。事实上,RUN命令定义了一个命令执行单元。当RUN块内的最后一个命令完成后,Oracle DB 会释放所有服务器端资源,如块内分配的输入/输
出(I/O) 缓冲区或I/O 从属进程。
注:第6 行上的SQL 命令只是一个示例。并不是备份操作所需的命令。
“保留策略”说明了要保留的备份及保留的时间长度。可以通过使用RMAN 的CONFIGURE命令或Oracle Enterprise Manager 来设置保留策略的值。
恢复窗口保留策略
最佳做法是确定一个时段,在此期间内可以发现逻辑错误,然后通过执行时间点恢复正好恢复到错误前的那一点来修复受影响的对象。此时间段称为恢复窗口。此策略用天数指定。
对于每个数据文件,都必须始终存在至少一个满足以下条件的备份:
SYSDATE – backup_checkpoint_time >= recovery_window
可以使用下列命令语法配置恢复窗口保留策略:
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF <天数>DAYS;
其中<天数> 是恢复窗口的长度。
如果未使用恢复目录,则要防止控制文件中旧的备份记录被覆盖,恢复窗口时段应小于等于控制文件参数CONTROL_FILE_RECORD_KEEP_TIME的值。
如果正在使用恢复目录,则应确保CONTROL_FILE_RECORD_KEEP_TIME大于目录重新同步的间隔。
sys@TEST0924> show parameter CONTROL_FILE_RECORD_KEEP_TIME
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
重新同步在执行以下任务时发生:
• 创建备份时。在此情况下,同步是隐式发生的。
• 执行RESYNC CATALOG命令。
冗余保留策略
如果需要保留一定数量的备份,可以通过冗余选项设置保留策略。此选项要求在任何备份被标识为过时之前将指定数量的备份列入目录。
默认保留策略的冗余度为1,这表示在任意指定时间一个文件只存在一个备份。当同一文件的最新版本已经有备份时,上一个备份就被视为过时。
可以使用下列命令重新配置冗余保留策略:
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY <副本数>;
其中<副本数> 是满足策略所需的副本数量。
禁用保留策略
有时可能希望完全禁用保留策略。如果还有RMAN 以外的其它系统,并且磁盘备份被备份到磁带中,则可能需要这样做。如果禁用了保留策略,则RMAN 不会认为某个备份过时。
因为RMAN 不必决定何时从磁盘中删除备份(因为有其它实用程序管理此任务),所以不需要对RMAN 进行此方面的配置。
在此情况下,维护每个备份的记录的时间长度即为CONTROL_FILE_RECORD_KEEP_TIME初始化参数指定的时间长度。
使用下列命令禁用保留策略:
RMAN> CONFIGURE RETENTION POLICY TO NONE;
注:可以指定某个备份不遵从所定义的保留策略。这称为归档备份
上图的保留策略显示了需要恢复到过去七天内的任何时间的情况。某些备份和日志已过时,因为恢复到七天窗口内的某一时间不需要使用这些备份和日志。此保留策略的配置如下:
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
如果备份和归档日志文件都可用,则恢复到恢复窗口内某个时间点所需的数据仅为备份B 以及日志201 到500。注意,不需要备份A,因为有一个更新的备份(B) 仍在恢复窗口之前。另外,不能只保留备份C,因为它无法满足恢复到恢复窗口开始时的时间点的需要。
所需的数据是在恢复窗口开始之前创建的最后一个备份以及该备份之后的所有日志。
1、启动RMAN
[oracle@rtest ~]$ rman target /
Recovery Manager: Release 11.2.0.3.0 - Production on Sat Oct 5 12:16:28 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: TEST0924 (DBID=2720875862)
2、查看控制文件是否已自动备份。
RMAN> show CONTROLFILE AUTOBACKUP;
using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name TEST0924 are:
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
3、对RMAN进行配置,以便在任何备份完成时自动备份控制文件。
MAN> configure controlfile autobackup on;
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored
4、列出方案中的数据文件,以便了解一下任务中备份的具体文件。
RMAN> report schema;
Report of database schema for database with db_unique_name TEST0924
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 730 SYSTEM *** /u01/app/oracle/oradata/test0924/system01.dbf
2 770 SYSAUX *** /u01/app/oracle/oradata/test0924/sysaux01.dbf
3 10 FLA_TBS2 *** /u01/app/oracle/oradata/test0924/fla_tbs02.dbf
4 27 USERS *** /u01/app/oracle/oradata/test0924/users01.dbf
5 345 EXAMPLE *** /u01/app/oracle/oradata/test0924/example01.dbf
6 15 LXTBS *** /u01/app/oracle/oradata/test0924/lxtb01.dbf
7 26 FLA_TBS1 *** /u01/app/oracle/oradata/test0924/fla_tbs01.dbf
8 170 UNDOTBS2 *** /u01/app/oracle/oradata/test0924/undotbs02.dbf
9 2 UNDOTBS1 *** /u01/app/oracle/oradata/test0924/undotbs01.dbf
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 35 TEMP 32767 /u01/app/oracle/oradata/test0924/temp01.dbf
5、为数据文件4创建备份,注意备份的写入位置,然后退出。
RMAN> backup datafile 4;
Starting backup at 05-OCT-13
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=128 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00004 name=/u01/app/oracle/oradata/test0924/users01.dbf
channel ORA_DISK_1: starting piece 1 at 05-OCT-13
channel ORA_DISK_1: finished piece 1 at 05-OCT-13
piece handle=/u01/app/oracle/fast_recovery_area/TEST0924/backupset/2013_10_05/o1_mf_nnndf_TAG20131005T121734_950gwz0y_.bkp tag=TAG20131005T121734 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:15
Finished backup at 05-OCT-13
Starting Control File and SPFILE Autobackup at 05-OCT-13
piece handle=/u01/app/oracle/fast_recovery_area/TEST0924/autobackup/2013_10_05/o1_mf_s_828015470_950gxgy9_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 05-OCT-13
RMAN> quit
Recovery Manager complete.
1、进入RMAN,显示当前的保留策略设置。
[oracle@rtest ~]$ rman target /
Recovery Manager: Release 11.2.0.3.0 - Production on Sat Oct 5 13:02:14 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: TEST0924 (DBID=2720875862)
RMAN> show retention policy;
RMAN configuration parameters for database with db_unique_name TEST0924 are:
CONFIGURE RETENTION POLICY TO NONE;
2、设置冗余值为1,以确保每个文件都备份了一个副本。
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
old RMAN configuration parameters:
CONFIGURE RETENTION POLICY TO NONE;
new RMAN configuration parameters:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
new RMAN configuration parameters are successfully stored
3、再次检查保留策略设置。
RMAN> show retention policy;
RMAN configuration parameters for database with db_unique_name TEST0924 are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
4、退出RMAN.
RMAN> quit
Recovery Manager complete.