董 波
[摘要]從DBA的角度,探討Oracle RAC數(shù)據(jù)庫(kù)性能、構(gòu)建方法、性能調(diào)優(yōu)等。
[關(guān)鍵詞]Oracle 數(shù)據(jù)庫(kù)ERPDBARAC
中圖分類(lèi)號(hào):TP3文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1671-7597(2009)1220070-01
在公司ERP的實(shí)際應(yīng)用中,ERP的快慢主要由數(shù)據(jù)庫(kù)性能來(lái)決定,當(dāng)公司擴(kuò)大,ERP用戶(hù)數(shù)大量增加時(shí),如何保證快速的數(shù)據(jù)庫(kù)性能,保護(hù)當(dāng)前的硬件投資,不改變當(dāng)前ERP系統(tǒng)架構(gòu)呢?Oracle數(shù)據(jù)庫(kù)集群可以給我們答案。
一、介紹
Oracle數(shù)據(jù)庫(kù)集群(Real Application Clusters 簡(jiǎn)稱(chēng):RAC)提供了最高級(jí)別的可用性,可伸縮性和低成本計(jì)算能力,即使集群內(nèi)的一個(gè)節(jié)點(diǎn)發(fā)生故障,Oracle數(shù)據(jù)庫(kù)也可以繼續(xù)在其余的節(jié)點(diǎn)上運(yùn)行。如果需要更高的處理能力,新的節(jié)點(diǎn)也可輕松加至集群。為了保持低成本,即使最高端的系統(tǒng)也可以從采用標(biāo)準(zhǔn)化商用組件的小型低成本集群開(kāi)始逐步構(gòu)建而成。
Oracle RAC依賴(lài)于一個(gè)共享磁盤(pán)體系結(jié)構(gòu)。數(shù)據(jù)庫(kù)文件、聯(lián)機(jī)重做日志和數(shù)據(jù)庫(kù)的控制文件必須都能為集群中的每個(gè)節(jié)點(diǎn)所訪問(wèn)。共享磁盤(pán)存儲(chǔ)Oracle Cluster Registry和Voting Disk。配置共享存儲(chǔ)有多種方法,包括直接連接磁盤(pán)(通常是使用銅纜或光纖的(SCSI)、存儲(chǔ)區(qū)域網(wǎng)(SAN)和網(wǎng)絡(luò)連接存儲(chǔ)(NAS))。
每個(gè)集群節(jié)點(diǎn)通過(guò)專(zhuān)用高速網(wǎng)絡(luò)連接到所有其他節(jié)點(diǎn),這種專(zhuān)用高速網(wǎng)絡(luò)也稱(chēng)為集群互聯(lián)或高速互聯(lián)(HSI)。Oracle的Cache Fusion技術(shù)使用這種網(wǎng)絡(luò)將每個(gè)主機(jī)的物理內(nèi)存(RAM)有效地組合成一個(gè)高速緩存。Oracle Cache Fusion通過(guò)在專(zhuān)用網(wǎng)絡(luò)上傳輸某個(gè)Oracle實(shí)例高速緩存中存儲(chǔ)的數(shù)據(jù)允許其他任何實(shí)例訪問(wèn)這些數(shù)據(jù)。它還通過(guò)在集群節(jié)點(diǎn)中傳輸鎖定和其他同步信息保持?jǐn)?shù)據(jù)完整性和高速緩存一致性。
專(zhuān)用網(wǎng)絡(luò)通常是用千兆以太網(wǎng)構(gòu)建的。為維持高可用性,為每個(gè)集群節(jié)點(diǎn)分配了一個(gè)虛擬IP地址(VIP)。如果主機(jī)發(fā)生故障,則可以將故障節(jié)點(diǎn)的IP地址重新分配給一個(gè)可用節(jié)點(diǎn),從而允許應(yīng)用程序通過(guò)相同的IP地址繼續(xù)訪問(wèn)數(shù)據(jù)庫(kù)。
Oracle自動(dòng)存儲(chǔ)管理(ASM)是Oracle數(shù)據(jù)庫(kù)10g中的一個(gè)新特性,它以一種與平臺(tái)無(wú)關(guān)的方式提供文件系統(tǒng)服務(wù)、邏輯容量管理器和軟件RAID。Oracle ASM可以條帶化和鏡像磁盤(pán),從而實(shí)現(xiàn)了在數(shù)據(jù)庫(kù)被加載的情況下添加或移除磁盤(pán)以及自動(dòng)平衡I/O以刪除“熱點(diǎn)”。它還支持直接和異步的I/O。
二、RAC(Oracle數(shù)據(jù)庫(kù)集群)實(shí)現(xiàn)的詳細(xì)方法
(一)實(shí)現(xiàn)Oracle數(shù)據(jù)庫(kù)集群(RAC)所需硬件(最少需求)
1.2臺(tái)服務(wù)器(每臺(tái)服務(wù)器內(nèi)需有兩個(gè)千兆網(wǎng)卡)
2.1套光纖存儲(chǔ)設(shè)備(SAN光纖存儲(chǔ)網(wǎng)絡(luò))
(二)實(shí)現(xiàn)Oracle數(shù)據(jù)庫(kù)集群(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
(三)實(shí)現(xiàn)步驟
1.在OS添加oracle用戶(hù)和組
# /usr/sbin/groupadd oinstall
# /usr/sbin/groupadd dba
# /usr/sbin/useradd-g oinstall -G dba oracle
2.在OS網(wǎng)絡(luò)設(shè)置
# 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 設(shè)置用戶(hù)等效性SSH (在oracle用戶(hù))
$ 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進(jìn)行
# /etc/init.d/oracleasm configure
6.啟用 ASMLib 驅(qū)動(dòng)程序
# /etc/init.d/oracleasm enable
7.創(chuàng)建ASM磁盤(pán)
# /etc/init.d/oracleasm creatediskVOL1/dev/sdb1
# /etc/init.d/oracleasm creatediskVOL2/dev/sdb2
8.創(chuàng)建CRS安裝路徑和綁定裸設(shè)備
# 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
進(jìn)入圖形配置界面
10.創(chuàng)建數(shù)據(jù)庫(kù)
以oracle 用戶(hù)身份登錄
$ dbca
11.啟動(dòng)數(shù)據(jù)庫(kù)
# srvctl start asm n 主機(jī)名
# srvctl start instance I 例程名 on hostname d數(shù)據(jù)庫(kù)名
# srvctl status database d數(shù)據(jù)庫(kù)名
三、總結(jié)
從以上分析發(fā)現(xiàn)RAC技術(shù)幾乎完美無(wú)缺,但本人在實(shí)際應(yīng)用中仍發(fā)現(xiàn)一些需優(yōu)化和注意的細(xì)節(jié):
RAC優(yōu)化最基本的原則是,避免發(fā)生大規(guī)模的、不同節(jié)點(diǎn)頻繁的修改同一個(gè)數(shù)據(jù)塊,避免大量的Cache Fusion與全局等待事件出現(xiàn)。讓不同業(yè)務(wù)單獨(dú)運(yùn)行在獨(dú)立的節(jié)點(diǎn)。RAC在數(shù)據(jù)倉(cāng)庫(kù)環(huán)境中很適合。內(nèi)聯(lián)線的帶寬需要足夠的大。各節(jié)點(diǎn)機(jī)器的時(shí)間一定要同步。
參考文獻(xiàn):
[1]陳吉平,Oracle高可用環(huán)境——企業(yè)級(jí)高可用數(shù)據(jù)庫(kù)架構(gòu)、實(shí)戰(zhàn)與經(jīng)驗(yàn)總結(jié)[M].北京:電子工業(yè)出版社,2008.
[2]http://hi.baidu.com/injava/blog/item/44c4154f6ad61e32afc3aba8.html.