基于RMAN的oracle数据库备份与还原的设计与实现
2019-07-08韩勇鹏
韩勇鹏
摘 要: 数据备份与恢复是保障数据库安全运行和数据库管理员必须掌握的的重要技术。在Oracle数据库中,基于RMAN的两种增量备份方式是差异增量备份和累积增量备份。介绍了差异增量备份与累积增量备份技术的概况,分析了两种备份方式的优缺点,阐述了累积增量备份及数据恢复的实现过程,以期更好地保证数据的安全性。
关键词: RMAN备份; 累积增量备份; 差异增量备份; 备份与恢复
中图分类号:TP392 文献标志码:A 文章编号:1006-8228(2019)04-56-04
Abstract: The backup and recovery are an important technology of database running, and the database administrator must master them. There are two kind of incremental backups for Oracle database, the differential and cumulative backup. This paper introduces the technologies of two incremental backups, analyses the advantages and disadvantages of them, and elaborates the realizing process of database backup and recovery with cumulative backup, in order to better ensure the security of data.
Key words: RMAN backup; cumulative backup; differential backup; backup and recovery
0 引言
數据备份与恢复是保障数据库安全运行和数据库管理员必须掌握的重要技术。尽管我们通过各种措施来保证数据库的安全,但仍然有许多不可预知、不可避免的安全隐患,如服务器硬件损坏、系统软件漏洞、网络传输出现故障和人为的破坏等等。因此,数据库管理员应对重要数据做好备份,在系统发生故障时,利用存储介质上的备份集,恢复数据到正常状态,使数据保持一致和完整。基于此,本文就oracle的rman增量备份及还原进行探讨。
1 rman技术概述
rman是oracle提供的备份、还原、恢复的数据库工具。rman可以实现数据文件datafile、控制文件controlfile以及归档日志文件archivelog、数据库服务器参数文件spfile的备份还原,同时也可以执行完全或不完全的数据库恢复。rman主要由可执行文件和recover.bsq文件两部分组成。recover.bsq文件实际上就是一个库文件,是整个备份还原恢复的中枢。 所以说rman只是一个命令解释器,主要是协调。其协调解释过程如图1所示。
2 rman的差异增量备份和累积增量备份
Rman的最大特点是支持增量备份。增量备份只备份变化的数据,大大提高了备份和还原的效率。增量备份分为差异增量备份和累积增量备份,两者都是在0级的全备份基础上实现的[1]。
累积增量备份(Cumulative)是备份上一级别或更低级别所有变化的数据块。即累积增量备份会备份那些从0级备份点到现在的所有改动,当使用增量备份还原,恢复数据时,只有最近的增量备份才会被使用。示例如图2所示[2]。
也就是说,差异增量备份只备份当天改动的数据块。之前只进行过0级备份时,差异增量备份只会备份相对0级有改动的数据块,如前面已经有过1级备份时,差异增量备份只会备份相对最近的1级备份到现在有改动块的数据块。如果要使用差异增量备份进行数据还原、恢复时,所有1级差异增量备份集都需要被应用。示例如图3所示。
差异增量备份与累积增量备份相比,主要是空间和资源上的节省,但是必须要保证1级别的可用性,保证不因为某个1级别的失效而导致数据库不能还原、恢复到失败点。相反的,累积增量备份相对于差异增量备份更安全,因为其本身的备份就具有变化数据块的重复性,只需要保证最近一次1级别备份可用就可以还原、恢复到失败点了,而不是所有1级别备份都可用。虽然累积增量备份需要更多的磁盘空间,但是却免去了时间上的考虑,因此,我们在磁盘空间允许的情况下,可以考虑优先使用累积增量备份。
3 用rman实现累积增量备份
3.1 备份环境查看及设置
首先,确定oracle是否处于归档模式。sqlplus下执行archive log list,以检查是否是归档模式。因为在归档模式下,系统服务不会因为备份操作而停止运行,还原、恢复时也可以将数据恢复到数据库管理员需要的任意一个时刻,可以保证数据的完整性和一致性。
其次,查看快闪恢复区的参数信息。快闪恢复区保存了rman备份的各个备份集,包括数据文件、增量备份、控制文件以及归档日志等等。sqlplus下执行show parameter db_recovery_file_dest;查看快闪恢复区的位置及它的最大容量。由于备份集的不断增大,为了防止磁盘空间不足,导致数据备份失败,因此,我们可以根据实际情况动态地调整该容量的大小。
第三,查看rman备份环境参数,并根据需要修改部分参数。在服务器端执行rman target/进入oracle数据库的rman环境,执行show all命令,查看rman备份默认的配置参数。默认情况备份数据库的数据时控制文件是不自动备份的,但是没有控制文件和初始化参数文件数据库将不能正常装载、打开,所以最好是每次备份时都能自动备份控制文件和初始化参数文件。在rman环境下执行configure controlfileautobackup on修改配置参数后,RMAN做任何备份操作,都会自动备份控制文件controlfile和初始化参数文件spfile[3]。
3.2 rman累积增量备份
增量备份是分等级的,最初为0到4级,级别从0开始,一级一级递增,不过从oracle10开始,级别就只有0级和1级了。实际执行增量备份操作时,仍然可以指定多个级别,最大可支持4级的增量备份。0级增量备份是1级别增量备份的基础,0级备份其实就是一个完全备份,所不同的是0级备份可以作为1级别增量备份的基础,而普通的完全备份是不能的。从1级别执行差异备份,即相对0级备份后有变化的数据进行备份。
4 rman累积增量的数据恢复
备份的目的是为了在数据出现问题的时候能够安全恢复,rman备份结合数据库的故障性质,提供了多种不同的恢复模式。
4.1 完全恢复数据文件
进行数据文件的完全恢复,前提是数据库的初始化spfile文件、控制文件、重做日志文件、归档日志备份都可以正常使用。
4.2 丢失spfile的恢复
数据库启动会经过三个阶段,分为实例启动(NOMOUNT),数据库装载(mount)和数据库打开(open)。第一阶段NOMOUNT使用的就是Spfie服务器参数文件,系统依据Spfie文件找到实例信息及控制文件等信息,以便装载数据库。一旦spfile文件丢失或损坏,将导致实例不能正常啟动。因此,spfie文件的还原恢复很重要,还原恢复的脚本命令如下:
4.3 丢失控制文件的恢复
数据库实例和和后台进程启动成功后,将会从控制文件中读取各种参数信息,包括数据文件和日志文件的位置等等。因此,当控制文件发生故障时,数据库则不能启动到MOUNT状态。因此,我们要在执行恢复时需要在NOMOUNT阶段。命令如下[4]:
5 结束语
Oracle的rman备份与恢复相比于传统的手工操作、数据泵等方式,提供了不同的备份及恢复方式,适用范围更广、备份更可靠。而rman的累积增量备份,虽然占用磁盘空间比较大,但是可以最大范围内恢复原有数据,可以不用考虑每个level1包的可用性,建议在磁盘空间允许的情况下使用rman累积增量备份,以提高工作质量和效率。
参考文献(References):
[1] 曹美琴.基于RMAN技术的ORACLE数据库备份恢复研究[J].安徽大学学报(自然科学版),2007.3:25-28
[2] 彭建明.使用RMAN实现ORACLE数据库的增量备份[J].医学信息学,2007.11:1912-1914
[3] 林树泽等.Oracle 11g R2DBA操作指南[M].清华大学出版社,2013.
[4] 王利.ORACLE数据库高可用性的研究与实现[D].华南理工大学,2014.