构建高可用性oracle集群

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

构建高可用性oracle集群
随着IT以及IT相关服务在企业里应用的越来越广泛,现代化企业也越来越依赖于他们所采用的IT架构。

如果一个关键应用的数据库不可用,不但直接影响到企业业务运行,而且会使企业面临数据丢失的危险。

因此,构建一个具有高可用性的数据库平台对于一个现代化企业来讲至关重要。

所谓数据库的高可用性是指,提供近乎连续的数据访问,将硬件和软件组件故障产生的中断降低到最少。

实现数据库的高可用性需要综合可虑,涉及到IT架构的诸多方面,包括:网络、存储、服务器、数据库软件、备份系统等。

Oracle作为被广泛使用的一种数据库系统,在实现数据库高可用方面有很多优点,本文着重讨论oracle数据库高可用性的实现方式。

在设计数据库高可用性之前,首先需要分析可能造成数据库系统不可用的原因,这样才能采取相应的办法避免因这些原因导致的数据库故障。

数据库系统停机通常包含计划停机和意外停机两种。

计划停机通常是在有计划的情况下对数据库系统或相应硬件进行维护升级,只要事先做好详细计划,计划停机通常是可以控制并减少的。

在这方面oracle提供了联机修改系统配置、联机升级等功能,可以有效的减少计划停机的时间。

我们重点需要考虑的是非计划停机,这类停机通常是由于计算机故障或者数据故障引起的,相对于计划停机,这类故障引起的数据库停机危害更大,影响也最严重,因此需要我们重点关注。

运行数据库的服务器意外故障导致服务中断,这是一种最并常见的故障,大多数情况是由于硬件故障造成。

Oracle RAC(Real Application Clusters)架构可以有效地防止这类故障的发生。

Oracle RAC是首要的数据库集群技术,在RAC环境中Oracle运行于两个或者更多的计算机节点上,并可以同时访问一个共享数据库。

这使得一个数据库系统可以跨越多个硬件系统平台,同时对应用程序而言仍是一个统一的数据库系统,从而为各中应用程序的可用性提供了极大的优势。

下面以AIX操作系统下,讨论Oracle RAC的实现方式。

对于一个两节点的群集,下面是推荐的最小软硬和操作系统要求。

(图一)所示的是实现两节点ORACLE RAC集群比较典型的硬件连接方式。

图一两节点Oracle RAC典型硬件连接方式
●IBM服务器–两个可以运行5L 64位的IBM服务器
●每个服务器必须有至少512M内存,至少1G交换分区或两倍于物理内存或更多。

要确定使用的系统内存:$ /usr/sbin/lsattr -E -l sys0 -a realmem
要确定使用的交换分区: $ /usr/sbin/lsps -a
●需要64位的处理器。

●共享的磁盘阵列和2台存储交换机。

●IBM HACMP所需要的交换机端口和IP地址。

●IBM AIX 5.1 (5L)和HACMP/ES CRM 4.4.x
●Oracle服务器企业版9.2.0
●HACMP及RAC可能需要的各种补丁
在安装IBM AIX操作系统环境和HACMP软件之前,应结合Oracle RAC的要求对磁盘
阵列做一个规划,下表列出了Oracle RAC的基本磁盘空间要求:
图二 Oracle RAC 磁盘配置
如果没有使用GPFS ,那么RAC 需要每个实例可以访问一个共享磁盘系统上的一系列未格式化的设备。

这些共享磁盘也被称为裸设备,如果系统平台支持Oracle 认证的群集文件系统,那么可以直接保存RAC 需要的文件到群集文件系统里。

如果使用GPFS ,那么也可以直接保存RAC 需要的文件到群集文件系统里。

RAC 配置中的Oracle 实例把数据写入到裸设备,更新控制文件,服务器参数文件,每个数据文件和每个重做日志文件,群集中的所有实例共享这些文件。

RAC 配置中的Oracle 实例把信息写到以下定义的裸设备:
• 控制文件
• spfile.ora
• 每个数据文件
• 每个联机重做日志文件
• Server Manager (SRVM)配置信息
所以有必要为每个文件类别定义裸设备,
AIX 操作系统和IBM HACMP 集群的安装配置可以参考IBM 相关手册,在配置时候除了提前做好磁盘规划外,还需要注意网络接口名称的限制:
• 名称是区别大小写的
• 名称不能包含任何多字节语言字符
• 公共和专用网络接口名称必须不同
• 两个节点上的各个接口的名称必须相同
• 公共和专用 IP 地址必须位于不同的子网 实例 1 实例 2
本地磁盘 本地磁盘
R A C
数据库
O r a c l e 软件
存档日志
数据文件、控制文件
重做日志、存档日志
S P F I L E 、S R V C T L O r a c l e 软件 存档日志
RAC群集安装过程包括四个主要阶段。

•配置共享磁盘和UNIX预安装任务。

•运行OUI安装Oracle Enterprise Edition和RAC软件。

•创建和配置数据库。

•管理RAC实例
阶段一:配置共享磁盘和UNIX预安装任务
在运行Oracle Universal Installer的节点上,创建一个ASCII文件来标识裸卷对象,DBCA 在安装和创建数据库中,需要这些裸卷对象存在。

使用如下格式命名裸卷对象:
database_object=raw_device_file_path
须通过设置下面的环境变量来指定Oracle使用此文件来决定裸设备卷,其中filename就是上面创建的ASCII文件:
DBCA_RAW_CONFIG=filename; export DBCA_RAW_CONFIG
在UNIX预安装时,可以运行Note:189256.1里提供的installPrep.sh脚本,处理很多的UNIX环境问题。

然后用root用户执行下面的工作:
●在集群所有节点上添加Oracle用户和dba组,同时建一个oinstall组,作为软件属主
的primary组,使用oinstall是可选的,但推荐使用。

查看/etc/groups文件典型的条目看起来如下:
dba::101:oracle
oinstall::102:root,oracle
●在每个节点上创建一个挂载点目录,作为Oracle软件目录的最上层,使得在每个节点
上的挂载点名称是唯一的,并和第一个节点相同。

oracle账号对此挂载点有读,写和执行权限。

●从运行Oracle Universal Installer的节点上,建立用户信任,通过添加条目到oracle账
号的.rhosts或/etc/hosts.equiv文件里。

用oracle账号检测信任关系。

●建立系统环境变量:
●设置至少有20Mb空间的临时目录TMPDIR,并且OUI有写权限。

●验证存在/opt/SUNWcluster/bin/lkmgr文件,被OUI使用以指明此安装在一个群集上
执行。

阶段二:使用OUI安装RAC
使用Oracle Universal Installer来安装Oracle企业版和Real Application Clusters软件,在光盘加载点,或从磁盘安装时,从Disk1位置,执行"rootpre.sh" 脚本,# //rootpre.sh
以oracle用户登录,并运行"runInstaller"。

$ //runInstaller
根据提示选择需要安装的产品等,当最后选择了Install之后,OUI将安装Oracle RAC 软件到本地节点,然后拷贝软件到前面选择的其它节点,这将花费一些时间,在安装过程中,OUI不会显示信息,表明组件正被安装到其它节点-I/O活动可能是唯一表明过程正在继续。

阶段三:使用ODCA创建一个RAC数据库
用DBCA命令创建一个数据库,DBCA使用优化的结构来创建数据库,这意味DBCA 创建数据库文件,包括默认的服务器参数文件,使用标准文件命名和文件位置,DBCA 的主要步骤为:
•验证是否为每个表空间正确配置了共享磁盘(针对非群集文件系统)
•创建数据库
•配置Oracle网络服务
•启动数据库实例和监听
DBCA可以作为安装过程的一部分自动启动,也可以通过从$ORACLE_HOME/bin目录执行dbca命令来手动运行。

在此过程中需要选择需要配置rac的节点,确定Global Database Name和Oracle System Identifier (SID)。

SID被用于唯一标识一个实例,在RAC 环境里,指定的SID被作用实例号的一个前缀,例如:MYDB, 将用MYDB1, MYDB2作为实例1和实例2。

在dbca的交互过程中可以确定数据库选项(Database Options),设定数据库初始化参数,完成数据库存储设定,在数据库存储设定时可以直接导入在阶段一编辑的,由环境变量DBCA_RAW_CONFIG指定配置文件。

在确认所有建库的选项正确之后即可点击确定开始创建数据库了。

阶段四:管理RAC实例
可以使用SRVCTL来管理RAC数据库环境,在使用SRVCTL之前需要启动Global Services Daemon (GSD)进程。

首次创建RAC集群后,需要初始化clusterwide SRVM 配置。

首先,创建或编辑/var/opt/oracle/srvConfig.loc文件,并添加srvconfig_loc=path_name 条目,其中path_name是一个小的群集共享的裸卷,需要在配置磁盘阵列时提前创建,例如:
$ vi /var/opt/oracle/srvConfig.loc
srvconfig_loc=/dev/rrac_srvconfig_100m
然后,执行如下命令来初始化此裸卷,此时需要停止gsd进程。

$ srvconfig -init
第一次使用SRVCTL工具来创建配置时,在所有节点上启动Global Services Daemon (GSD) ,使得SRVCTL能够访问的群集信息,然后执行srvctl添加命令,使得Real Application Clusters知道哪些实例属于群集,语法如下:
$ gsdctl start
Successfully started the daemon on the local node.
$ srvctl add database -d db_name -o oracle_home [-m domain_name] [-s spfile] 然后为每个实例输入命令: $ srvctl add instance -d db_name -i sid -n node
完成上述配置后就可以在日常工作中使用svrctl命令来管理RAC集群了。

结束语:oracle的高可用性除了完成RAC集群的配置外,还包含很多其它方面的因素,例如网络因素,人外因素造成的数据错误,数据备份等。

就oracle本身来说,在实现rac集群后应该继续完成rman的配置,配合可靠的离线备份系统进一步提高数据库的容错能力。

参考手册
· Note: 201019.1 - AIX: Quick Start Guide - 9.2.0 RDBMS Installation
· Note: 77346.1 - Overview of HACMP Classic and / or HACMP/ES
· Note:137288.1 - Database Creation in Oracle9i RAC
· Note:183408.1 - Raw Devices and Cluster Filesystems With Real Application Clusters
· RAC/IBM AIX certification matrix
· Oracle9i Real Application Clusters Installation and Configuration Release 1 (9.0.1)
· Oracle9i Real Application Clusters Concepts
· Oracle9i Real Application Clusters Administration
· Oracle9i Real Application Clusters Deployment and Performance
· Oracle9i Installation Guide for Compaq Tru64, Hewlett-Packard HPUX, IBM-AIX, Linux, and Sun Solaris-based systems.
· Oracle9i Release Notes。

相关文档
最新文档