董 波
[摘要]从DBA的角度,探讨Oracle RAC数据库性能、构建方法、性能调优等。
[关键词]Oracle 数据库ERPDBARAC
中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)1220070-01
在公司ERP的实际应用中,ERP的快慢主要由数据库性能来决定,当公司扩大,ERP用户数大量增加时,如何保证快速的数据库性能,保护当前的硬件投资,不改变当前ERP系统架构呢?Oracle数据库集群可以给我们答案。
一、介绍
Oracle数据库集群(Real Application Clusters 简称:RAC)提供了最高级别的可用性,可伸缩性和低成本计算能力,即使集群内的一个节点发生故障,Oracle数据库也可以继续在其余的节点上运行。如果需要更高的处理能力,新的节点也可轻松加至集群。为了保持低成本,即使最高端的系统也可以从采用标准化商用组件的小型低成本集群开始逐步构建而成。
Oracle RAC依赖于一个共享磁盘体系结构。数据库文件、联机重做日志和数据库的控制文件必须都能为集群中的每个节点所访问。共享磁盘存储Oracle Cluster Registry和Voting Disk。配置共享存储有多种方法,包括直接连接磁盘(通常是使用铜缆或光纤的(SCSI)、存储区域网(SAN)和网络连接存储(NAS))。
每个集群节点通过专用高速网络连接到所有其他节点,这种专用高速网络也称为集群互联或高速互联(HSI)。Oracle的Cache Fusion技术使用这种网络将每个主机的物理内存(RAM)有效地组合成一个高速缓存。Oracle Cache Fusion通过在专用网络上传输某个Oracle实例高速缓存中存储的数据允许其他任何实例访问这些数据。它还通过在集群节点中传输锁定和其他同步信息保持数据完整性和高速缓存一致性。
专用网络通常是用千兆以太网构建的。为维持高可用性,为每个集群节点分配了一个虚拟IP地址(VIP)。如果主机发生故障,则可以将故障节点的IP地址重新分配给一个可用节点,从而允许应用程序通过相同的IP地址继续访问数据库。
Oracle自动存储管理(ASM)是Oracle数据库10g中的一个新特性,它以一种与平台无关的方式提供文件系统服务、逻辑容量管理器和软件RAID。Oracle ASM可以条带化和镜像磁盘,从而实现了在数据库被加载的情况下添加或移除磁盘以及自动平衡I/O以删除“热点”。它还支持直接和异步的I/O。
二、RAC(Oracle数据库集群)实现的详细方法
(一)实现Oracle数据库集群(RAC)所需硬件(最少需求)
1.2台服务器(每台服务器内需有两个千兆网卡)
2.1套光纤存储设备(SAN光纤存储网络)
(二)实现Oracle数据库集群(RAC)所需软件
OS:RedHat AS 4.5
DB:Oracle Database 10.2.0.1_x86
Cluster:Oracle 10.2.0.1_clusterware_linux_x86
ASM:oracleasmlib-2.0.2-1.x86.rpm
oracleasm-2.6.9-22.ELsmp-2.0.3-1.x86.rpm
binutils-2.15.92.0.2-13.0.0.0.2.x86.rpm
(三)实现步骤
1.在OS添加oracle用户和组
# /usr/sbin/groupadd oinstall
# /usr/sbin/groupadd dba
# /usr/sbin/useradd-g oinstall -G dba oracle
2.在OS网络设置
# vi/etc/hosts
127.0.0.1localhost.localdomainlocalhost
# public address
192.168.0..17 rac1
192.168.0.18 rac2
# private address
172.168.0.17rac1-p
172.168.0.18rac2-p
# virtual address
192.168.0.19rac1-vip
192.168.0.20rac2-vip
3.在OS 设置用户等效性SSH (在oracle用户)
$ mkdir ~/.ssh
$ chmod 755 ~/.ssh
$ /usr/bin/ssh -keygen -t rsa
4.安装ASM软件
#rpm Uvh oracleasm-support-2.0.3-1.x86.rpm
oracleasm-2.6.9-22.ELsmp-2.0.3-1.x86.rpm
oracleasmlib-2.0.2-1.x86.rpm
5.配置ASM进行
# /etc/init.d/oracleasm configure
6.启用 ASMLib 驱动程序
# /etc/init.d/oracleasm enable
7.创建ASM磁盘
# /etc/init.d/oracleasm creatediskVOL1/dev/sdb1
# /etc/init.d/oracleasm creatediskVOL2/dev/sdb2
8.创建CRS安装路径和绑定裸设备
# mkdir -p /u01/crs/oracle/product/10.2.0/crs
# chown -R oracle:oinstall /u01/crs/oracle
# chmod -R 775 /u01/crs/oracle
# mkdir -p /u02/oracrs/
# chown -R oracle:oinstall /u02/oracrs/
# chmod -R 775 /u02/oracrs/
#raw /dev/raw/raw1 /dev/sdb1
#raw /dev/raw/raw2 /dev/sdb2
9.安装Oracle RAC 软件
$ ./runInstall
进入图形配置界面
10.创建数据库
以oracle 用户身份登录
$ dbca
11.启动数据库
# srvctl start asm n 主机名
# srvctl start instance I 例程名 on hostname d数据库名
# srvctl status database d数据库名
三、总结
从以上分析发现RAC技术几乎完美无缺,但本人在实际应用中仍发现一些需优化和注意的细节:
RAC优化最基本的原则是,避免发生大规模的、不同节点频繁的修改同一个数据块,避免大量的Cache Fusion与全局等待事件出现。让不同业务单独运行在独立的节点。RAC在数据仓库环境中很适合。内联线的带宽需要足够的大。各节点机器的时间一定要同步。
参考文献:
[1]陈吉平,Oracle高可用环境——企业级高可用数据库架构、实战与经验总结[M].北京:电子工业出版社,2008.
[2]http://hi.baidu.com/injava/blog/item/44c4154f6ad61e32afc3aba8.html.