使用RMAN实现克隆复制ORACLE数据库*
2012-01-29刘道践
周 芃 刘道践*
ORACLE数据库是主流数据库产品之一,在“军字一号”医院信息系统中使用了这一数据库平台。医院数据库系统已成为支撑整个医院良好运转的主干和基础[1]。在日常的数据库维护工作中,通常需要建立一个和在线数据库相同的数据库,用于数据的统计、查询、测试等任务,称之为副本数据库。副本数据库可以是原库的全部也可以是部分,其主要目的是实现数据的复制。最常用的方法是硬拷贝或者是数据库的导入、导出来实现。RMAN(恢复管理器)是ORACLE提供的一套用于备份和恢复的工具[2]。RMAN可对数据文件进行块级的逻辑检查和可用性检查,支持并行备份和恢复[3]。使用ORACLE的RMAN DUPLICATE命令同样可以完成这样的工作,这种方式称为克隆数据库。
1 RMAN克隆数据库的概念
所谓克隆数据库,就是在完成大量准备工作的前提下,使用RMAN DUPLICATE命令实现数据库的复制。克隆可以在保留目标数据库的基础上依靠目标数据库(Target Database)的备份创建一个副本数据库(Duplicate Database)。新创建的副本数据库与目标数据库完全相同,或者仅包含目标数据库表空间的一部子集。目标站点以及副本站点可在同一台设备上,也可在不同的设备上,并可较稳妥地保护在线数据库。
2 RMAN克隆数据库的基本特点
2.1 有利于保护在线数据库
在线数据库通常处于7×24的工作状态,采用RMAN进行数据库复制,避免了停机冷拷贝这种在线数据库通常不允许的状况,比起常用的逻辑导入导出的方式,避免了大文件跨平台的数据拷贝。
2.2 灵活的使用方式
RMAN克隆数据库可以有多种方式来灵活决定克隆的内容,Duplicate命令可在Catalog或Nocatalog模式下运行,重新命名副本库中的数据文件。可使用配置命令去跳过部分数据文件和表空间,例如使用SKIP READONLY子句跳过只读表空间,通过SKIP TABLESPACE子句跳过指定表空间。
2.3 自动完成数据恢复过程
进行数据库克隆时,如果将最近的在线日志拷贝到到恢复目录下,RMAN会进行自动恢复。如果没有将最近的在线日志拷贝到到恢复目录下,RMAN能取到目标数据库最近一次备份的数据恢复到副本数据库。还原创建控制文件恢复OPEN RESETLOGS等操作都可在这个过程中自动完成。
3 RMAN克隆数据基本步骤
首先要建立一个辅助数据库,在克隆工作进行前必须在nomount状态下通过rman同时连接到在线数据库和辅助数据库实例上。辅助数据库通过会话通道和主库相连接而获取所需要的数据,通过这样的方式进行数据库的复制和恢复。下面以WINDOWS环境为例。
3.1 创建辅助数据库实例
使用ORAPWD命令创建辅助数据库口令文件的基本格式:
此命令简单、实用,是数据库管理人员常用的。
3.2 创建辅助数据库OracleService并连接
在windows环境下使用ORACLE目录下的ORADIM命令创建一个新的OracleService。通常使用的命令为:
D:oracle>oradim-new-sid sidname。
随后用set oracle_sid=sidname命令设置到该实例上。完成后可登录到该实例上。
3.3 配置监听
此步骤主要是为了后面使用RMAN同时连接两个实例做准备。
3.4 创建对应于辅助库的目录
辅助库目录是指辅助库所必须的文件目录,Rman在一个客户端上可以同时连接到在线数据库和辅助数据库实例上,辅助数据库需要能够访问所有的备份和归档文件,如果辅助数据库和在线数据库不在同一台主机上,则需要在辅助库上配置与主库完全一致的路径。在WINDOWS环境下可采用直接拷贝改名的方式操作。
3.5 创建辅助数据库初始化参数文件
为辅助库创建初始化参数文件主要从在线库中复制原有的初始化参数文件,并进行修改。其中某些参数需要注意:①DB_NAME,如果复制的数据在同一台机器上,两个实例的DB_NAME是不能一样的;②DB_BLOCK_SIZE参数,这个参数必须和主库的设置相同。另外还有两个很重要的参数:①db_file_name_convert;②log_file_name_ convert。这两个参数对于在不同目录下实现数据库克隆很重要,其实际意义是转换主实例和辅助实例的目录结构,是将原目录路径下的数据文件转成为目标路径下。
初始化文件示例:
在完成以上工作后可以创建SPFILE参数文件。
3.6 启动辅助数据库实例和主库实例
由于辅助库实例无创建控制文件,只能启动到nomount模式。至于主库,通常是处于打开的工作状态。
3.7 连接到实例进行克隆
首先设置实例为主库。在windows环境下设置SID。
在完成上述工作后,RMAN会自动执行还原恢复等操作。RMAN自动执行的主要步骤为辅助数据库创建控制文件,Restore 数据文件到辅助数据库,并通过备份和日志进行不完全恢复,重启辅助实例通过Resetlogs方式打开副本数据库并为副本数据库产生新的DBID。至此,完成了整个使用RMAN进行数据库的克隆。由于使用Resetlogs方式打开副本数据库,要注意此时数据库已经处于一个新的Incarnation[4-10]。
4 RMAN克隆数据库技术的讨论
⑴ORACLE数据库提供了多种功能强大的数据复制功能,但针对具体应用设计和实现数据库系统的复制是非常复杂的,在实践中必须要考虑数据的一致性、恢复的时间点、恢复的处理时间要求和平台等问题。
⑵使用RMAN克隆数据库中比较常遇到的问题是要注意在复制的数据目录相同,另外就是注意配置辅助库的监听,实践中常常因为这个两个问题无法完成克隆数据库的过程。
综上所述,RMAN提供的克隆数据库技术非常强大,可以灵活决定克隆的内容,可以转换数据库文件的名称,是一种快速有效创建数据库副本的技术,在Duplicate 命令执行后,副本数据库还会自动完成数据库恢复的工作[11-12]。对于数据库维护工作中经常需要快速安全的建立副本数据库工作是一种快速、灵活、同时能兼顾稳妥保护在线主库的安全使用的有效技术。
[1]闫国涛,王颖,赵妍.医院数据库系统中RMAN备份与恢复的应用[J].医学信息,2010,23(5):26.
[2]苏国磊.利用RMAN实现ORACLE数据库的备份与恢复[J].电脑知识与技术,2007(2):325-326.
[3]李帆,张文胜.基于HIS环境的ORACLE数据库备份方案及实现[J].中国数字医学,2008,3(12):57-60.
[4]张自辉.ORACLE数据库的备份方法和策略[J].吉首大学学报:自然科学版,2009,30(1):33-35.
[5]杨铁林.Oracie 数据库中Standby Database 的搭建和使用[J].计算机与现代化,2003(4):4-6.
[6]曹美琴.基于RMAN技术的ORACLE数据库备份恢复研究[J].安徽大学学报:自然科学版,2007,31(2):25-28.
[7]袁姗,刘长生,施伟.Oracle数据库热备份过程中被中断的数据恢复方法[J].电脑知识与技术,2009(9):2315.
[8]王学海,刘德明.ORACLE数据库的备份和断点恢复[J].医学信息,2008,21(5):596-597.
[9]段炼,张建钢,范良志.基于Oracle 10 g RMAN的备份与恢复技术[J].湖南工程学院学报,2008,18(2):60-67.
[10]张冬,黄晶慧.Oracle数据库恢复管理器研究及应用[J].电脑知识与技术,2007(21):659-662.
[11]滕永昌.Oracle数据库系统管理[M].北京:清华大学出版社,2003.
[12]盖国强.Oracle数据库管理优化与备份恢复[M].北京:人民邮电出版社,2007.