Oracle数据库高可用性研究与分析

2018-09-13 05:43袁勇池兴颖孙小林
无线互联科技 2018年10期

袁勇 池兴颖 孙小林

摘要:文章从数据库高可用的角度出发,首先,对高可用的概念及原理进行说明;其次,以Oracle数据库为研究对象,分别对Oracle数据库高可用的几种实现方法进行原理性的说明,并对实现方法从目的、实现方式、跨平台性等方面进行比较,以供数据库管理人员参考。

关键词:Oracle;高可用;数据库

信息技术的飞速发展,使得应用系统也相应增加,而应用系统只是外壳,关键还得依赖后端的数据库系统。因此,数据库系统的稳定性、高可用性给用户带来的体验也就更加明显。本文先对高可用性的原理进行了介绍,然后针对Oracle数据库高可用的实现方式进行详细介绍,并对几种高可用方式从多角度进行比较分析,以供相关技术人员参考。

1 高可用性原理

高可用是一种系统,经过专门的设计,能够减少系统停机的时间,保证其服务的高度可用性;同时,可以尽可能缩短因日常维护、突发情况所导致的停机时间。一般来说,实现高可用主要通过以下3种方式[1]。

1.1 双机热备方式

工作原理:其中一台主机处于工作状态,备用机则处于监控准备状态。当工作主机发生宕机时,备用机完成工作接管,等待主机维护修复并恢复正常后,根据使用者设定的切换方式将服务又切到主机上,而数据的完整性、一致性等则通过共享存储的方式来解决。但是,备用机多数时间处于不工作状态,存在资源浪费的现象。

1.2 双机双工方式

工作原理:两台主机同时并行地运行各自的服务,并且互相对对方的运行情况随时进行监测。当其中的一台主机发生故障时,另一台主机随即接管故障机上的服务工作,保证工作质量,这就要求两台主机本身要有一定的性能冗余,保证在另一台主机发生故障时,能够承担起两台机器的作业,应用系统的数据则都存放在共享存储中。

1.3 集群系统方式

工作原理:集群系统中多台主机并行工作,当集群中某个主机发生故障时,则系统中其他主机接管该主机上的作业。待故障机恢复正常后,集群系统又会给它分配新的工作任务。

2 Oracle高可用的几种实现方式及对比分析

2.1 Oracle RAC 方式

Oracle RAC,即Oracle真正应用集群。Oracle RAC源于其早期版本的OPS,到9i时更名为实时应用集群(RealApplication Clusters,RAC),是Oracle公司实现高可用和负载均衡的核心技术。RAC系统一般是由两台或更多的具有相同结构的计算机和共享存储组成,它可以支持7X24小时在线的应用系统,并能提供强大的数据处理、高可用的访问能力。Oracle还内置了存储管理软件和集群软件,这样就降低了成本。到最新的Oracle 12C中,更是引入了可插拔数据库等新特性,更好地保障了高可用性和性能扩展。

在具体实施过程中,可以使用两台服务器或者多台服务器,以及存储阵列来构建RAC平台,从而保障应用集群系统的高可用性[2]。

2.2 Oracle DataGuard方式

DataGuard是通过建立一个Primary和Standby组来确立其参照关系。Standby—旦创建,DataGuard就会通过将主数据库的redo日志传递给Standby数据库,然后在Standby中应用日志信息实现数据库的同步。

Standby有分两种实现方式:物理Standby和逻辑Standby。物理Standby提供与主数据库完全一样的拷贝,数据库SCHEMA,包括索引都是一样的。它是直接应用redo日志实现同步的。在逻辑Standby中,逻辑信息是相同的,但物理组织、数据结构可以不相同,它跟主库保持同步的方法是将接收的REDO转换成对应的SQL语句,之后在Standby上执行SQL语句[3]。

2.3 Oracle MAA方式

Oracle的MAA并不是一套全新的技术,它是将以前分散的技术打包成一个整体,是RAC与DataGuard的融合。MAA的组建包括了以下内容:RMAN,ASM,Oracle Stream,Oracle DataGuard,Oracle RAC,Oracle Flashback[4]。

(l)RMAN:Oracle的备份恢复工具。(2)ASM:AutoStorage Management,自动存储管理技术,此功能提供了卷管理,集群文件特征,能够在软件层面提供数据冗余能力,避免单点故障。(3)Oracle Stream:Stream也是从Oracle 10之后开始拥有的新特征,这种技术同Data guard—样,都是建立在对联机日志、归档日志的提取和应用的基础上。(4)Oracle DataGuard:这个技术也是利用了联机日志和归档日志的传递应用来实现数据的完全冗余,从性价比来说,是最经济的高可用方案。(5)RAC:Real Application Cluster,真正实用集群技术,RAC不能解决存储的单点故障,一般情况下实施RAC需要和其他高可用技术一同使用。(6)OracleFlashback:闪回技术,把数据库回滚到之前的某个状态。

2.4 Oracle Streams方式

Stream是Oracle高级队列(Oracle Advanced Queue,OAQ)技术的扩展应用,其原理就是不断地收集事件,并把收集的事件保存到队列中,按队列顺序发布给相应的订阅者。从DBA管理的角度来说,就是对数据库Redo日志进行捕获,之后把捕捉到的Redo日志通过网络传播到相应的数据库,而收到日志的数据库通过应用日志,进而达到复制变化的作用。

在Stream环境中,进行数据复制的起点数据库,我们称为源数据库;复制到的终点数据库则叫作目标数据库。在源和目标数据库上都要创建队列,发送队列建在源数据库上,接收队创建在目标数据库上,对数据库的一切操作均被记录在日志信息当中。完成Stream环境搭建,在源数据库上会产

生一个捕获进程,该进程利用Logminer技术从日志中提取相应的DDL,DML语句,这些语句叫作逻辑变更记录,一个逻辑变更记录对应着一个行变更。这些变更记录被系统保存到源数据库的发送队列中,然后通过传播进程把这些记录完整地发送到目标数据库队列当中。目标数据库通过一个专门的应用进程,从队列中取出逻辑变更记录的数据,在本地数据库中应用,从而实现数据的同步。

2.5 对比分析

针对Oracle数据库实现高可用的几种方式,从主要目的、同步方向、数据粒度以及异库同步等角度,对其进行对比,具体如表1所示。

3 结语

本文首先对高可用的原理进行简要介绍,实现高可用的方式通常是主从、双工以及集群模式。然后,针对Oracle数据库实现高可用的几种方式进行原理性的介绍,从RAC,DataGuard再到它们的完美结合MAA,以及Streams复制方式,并对RAC,DataGuard,Streams复制从主要目的、同步方向、读写方式、异构平台支持情况等方面进行对比,以供Oracle数据库系统相关从业技术人员在进行高可用平台搭建时参考。

[参考文献]

[1]赛义德,塔里克,瑞亚吉,等.深入理解Oracle RAC 12C[M].赵燚,梁涛,程飞,等,译北京:电子工业出版社,2014.

[2]袁勇,袁光灵,孙小林.Oracle RAC集群性能優化策略分析[J].无线互联科技,2017(22): 108-109.

[3]刘炳林.构建最高可用Oracle数据库系统Oracle llgR2 RAC管理、维护与性能优化[M].北京:机械工业出版社,2012.

[4]高斌.Oracle RAC核心技术详解[M].北京:机械工业出版社,2015.