- 大話Oracle Grid:云時(shí)代的RAC
- 張曉明
- 1293字
- 2019-01-02 08:20:32
第一部分 安裝
第1章 破冰之旅
本書(shū)是專門(mén)為Oracle Grid 11.2(或者11.2 RAC)準(zhǔn)備的。
說(shuō)明:Oracle Grid Infrastructure、Oracle Clusterware 是同一個(gè)軟件的不同時(shí)期的名稱,而Oracle RAC是這個(gè)軟件支撐的解決方案,所以本書(shū)中我會(huì)混用這三個(gè)單詞,但都是指的一個(gè)東西。另外,Oracle Grid Infrastructure這個(gè)名字有點(diǎn)太啰嗦,所以我會(huì)把它簡(jiǎn)化成Grid 或者GI,就是這樣。
說(shuō)實(shí)話,Oracle 10.2 RAC還是挺好用的,該有的功能都有了,而且也挺穩(wěn)定的。像我管理的幾個(gè)核心系統(tǒng)都是10.2版本的RAC,已經(jīng)運(yùn)行了五六年了,有限的幾次故障,只有一次是因?yàn)樾薷牧薔TP服務(wù)的配置而造成RAC重啟節(jié)點(diǎn)(這也是Oracleli 10.2一個(gè)已知的Bug),其他的都是由硬件問(wèn)題引起的。所以,就我所處的環(huán)境而言,其實(shí)看不出升級(jí)到11.2的必要性。
但沒(méi)辦法,歷史的轱轆款款前行,整個(gè)行業(yè)都在吆喝云計(jì)算、大數(shù)據(jù)、移動(dòng)互聯(lián),我們就不能屈居人后,只能搖旗吶喊、迎頭趕上,而且嗓門(mén)要更大、步子要更快,這才不會(huì)被時(shí)代的馬車(chē)給拋下。
所以,我們必須要搞定Oracle Grid 11.2。
1.1 原料
要解決Grid,手頭得有家伙事兒。就像庖丁解牛,除了庖丁和刀,還得有原材料——上千頭牛來(lái)讓他練手(今臣之刀……所解數(shù)千牛矣)。解決Grid當(dāng)然得有環(huán)境了,我們現(xiàn)在關(guān)注的是兩個(gè)軟件——集群軟件和數(shù)據(jù)庫(kù)。
在Oracle 10g、11gR1中,這兩個(gè)軟件的名字叫Oracle Clusterware和Oracle Database。在Oracle 11gR2中,第一個(gè)軟件的名字變了,變成Oracle Grid Infrastructure。因此,我們得搞到這兩個(gè)軟件:Oracle Grid Infrastructure 11.2.0.*和Oracle Database 11.2.0.*。
目前Oracle 11gR2已有3個(gè)版本:11.2.0.1、11.2.0.2和11.2.0.3。Oracle官方網(wǎng)站OTN上提供了11.2.0.1的下載鏈接。11.2.0.2和11.2.0.3是以補(bǔ)丁集(Patch Set)的方式發(fā)布的,在OTN上找不到,得去Metalink或者e-delivery下載。它倆對(duì)應(yīng)的補(bǔ)丁號(hào)分別是Patch:10098816(如圖1-1所示)和Patch:10404530(如圖1-2所示)。這兩個(gè)補(bǔ)丁集體積堪稱巨大,分別有4.8GB和5.1GB之多。

圖1-1 Oracle 11.2.0.2

圖1-2 Oracle11.2.0.3
另外,在OTN網(wǎng)站上,Oracle Database 11.2.0.1和Oracle Grid是作為兩個(gè)軟件包分開(kāi)下載的,下載鏈接如圖1-3所示。而在兩個(gè)補(bǔ)丁中,它們被打包在一起了,我們把下載的幾個(gè)ZIP包依次解壓后,就會(huì)看到有database和grid目錄,也就是這兩個(gè)軟件了。

圖1-3 OTN中兩個(gè)軟件包的鏈接
說(shuō)明:關(guān)于軟件包的版本、升級(jí)和補(bǔ)丁,請(qǐng)以O(shè)racle網(wǎng)站發(fā)布的內(nèi)容為準(zhǔn)。
1.2 升級(jí)方式的變化
有過(guò)Oracle Database經(jīng)驗(yàn)的讀者都知道,以前Oracle 10g的時(shí)候,高版本都是用低版本升級(jí)的方式得到的。比如,要裝 Database 10.2.0.4,得先裝個(gè) Database 10.2.0.1,然后給這個(gè)ORACLE_HOME打補(bǔ)丁P6810189,通過(guò)升級(jí)的方式達(dá)到高版本。這也是當(dāng)時(shí)唯一的一種方法。
現(xiàn)在,Oracle把這種升級(jí)方式叫做in-place升級(jí)。
Oracle 11g R2的補(bǔ)丁包有了很大的變化,現(xiàn)在每一個(gè)補(bǔ)丁集都是一個(gè)完整的安裝包,可以直接用補(bǔ)丁集進(jìn)行完整的安裝。也就是說(shuō),如果想安裝 Oracle 11.2.0.3,就不再需要采用先安裝11.2.0.1然后再打補(bǔ)丁的方式了,而直接安裝11.2.0.3。
就算現(xiàn)在我們生產(chǎn)線上跑的是 11.2.0.1,我們也不必對(duì) ORACLE_HOME 升級(jí),我們可以在某個(gè)新目錄下安裝一個(gè)全新的11.2.0.3,然后建個(gè)空庫(kù),通過(guò)數(shù)據(jù)導(dǎo)入/導(dǎo)出的方式把數(shù)據(jù)從舊庫(kù)導(dǎo)到新庫(kù),用這種“曲線救國(guó)”的方式完成到11.2.0.3的升級(jí),這也是現(xiàn)在Oracle推薦的方式,Oracle把它叫做Out-of-place的升級(jí)方式。
各個(gè)版本的RAC的部署過(guò)程都一樣,都可以分作4個(gè)步驟:環(huán)境準(zhǔn)備,安裝Grid(Oracle 10g和11gR1都是Clusterware),然后安裝Database,最后是建庫(kù)。經(jīng)過(guò)這么4個(gè)步驟后,就有了一個(gè)可用的RAC數(shù)據(jù)庫(kù)。
現(xiàn)在,我們就按照這4個(gè)步驟來(lái)安裝Grid的RAC。
Oracle 11.2 RAC與10.2 RAC一脈相承,所以大部分內(nèi)容與10.2 RAC類似,我在《大話Oracle RAC》一書(shū)中詳細(xì)解釋過(guò)這些內(nèi)容。本書(shū)只介紹Oracle 11.2中出現(xiàn)的新內(nèi)容(包括安裝也是如此)。更多關(guān)于RAC原理的介紹,可以參考《大話Oracle RAC》一書(shū)。
1.3 環(huán)境準(zhǔn)備
RAC的環(huán)境準(zhǔn)備可以分成4個(gè)方面:主機(jī)、用戶、存儲(chǔ)和網(wǎng)絡(luò)。在準(zhǔn)備階段中,Oracle 11.2和10.2 RAC之間最重要的區(qū)別體現(xiàn)在用戶這一方面。在Oracle 11.2之前的版本中,只需要?jiǎng)?chuàng)建一個(gè)用戶oracle 和一個(gè)用戶組dba。而在Oracle 11.2 中,需要?jiǎng)?chuàng)建兩個(gè)操作系統(tǒng)用戶oracle和grid,以及至少4個(gè)操作系統(tǒng)用戶組。這么做的原因會(huì)在后面的章節(jié)中介紹。
1.3.1 主機(jī)環(huán)境
主機(jī)環(huán)境包括硬件環(huán)境、軟件環(huán)境,硬件中包括內(nèi)存、磁盤(pán)空間等。根據(jù)官方文檔,硬件的要求如表1-1所示。
表1-1 硬件環(huán)境要求

需要調(diào)整操作系統(tǒng)的內(nèi)核參數(shù)如下:
# vi /etc/sysctl.conf
加入這些內(nèi)容:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
修改以后讓參數(shù)生效:
# /sbin/sysctl -p
安裝用于 Linux 系統(tǒng)的 cvuqdisk 包,這個(gè)包位于解壓后的 grid/rpm 目錄下。如果不安裝 cvuqdisk,集群驗(yàn)證程序是無(wú)法發(fā)現(xiàn)共享磁盤(pán)的,我們會(huì)收到“Package cvuqdisk not installed”這樣的出錯(cuò)消息。
安裝這個(gè)包需要先設(shè)置變量CVUQDISK_GRP,變量的值是cvuqdisk所有者所在的組(本書(shū)為oinstall)。
[root@indexserver1 ~]# export CVUQDISK_GRP=oinstall
[root@indexserver1 ~]# cd /u01/install/grid/rpm/
[root@indexserver1 rpm]# ls
cvuqdisk-1.0.9-1.rpm
[root@indexserver1 rpm]# rpm -ivh cvuqdisk-1.0.9-1.rpm
Preparing... ########################################### [100%]
1:cvuqdisk ########################################### [100%]
1.用戶和用戶組
在Oracle 11gR2的RAC環(huán)境中,我們需要有6個(gè)操作系統(tǒng)用戶組以及兩個(gè)操作系統(tǒng)用戶。這6個(gè)用戶組中有兩個(gè)是可選的,這兩個(gè)用戶與用戶組的名稱和關(guān)系如表1-2所示。
表1-2 Oracle 11.2 RAC需要的用戶和用戶組

我們需要在所有的節(jié)點(diǎn)機(jī)器上創(chuàng)建這些用戶和用戶組。具體操作步驟是先創(chuàng)建用戶組,然后再創(chuàng)建用戶。本書(shū)中沒(méi)有創(chuàng)建oper用戶組。
#/usr/sbin/groupadd -g 505 oinstall
#/usr/sbin/groupadd -g 502 dba
#/usr/sbin/groupadd -g 504 asmadmin
#/usr/sbin/groupadd -g 506 asmdba
#/usr/sbin/groupadd -g 507 asmoper
#/usr/sbin/useradd -u 501 -g oinstall -G asmadmin,asmdba,asmoper grid
#/usr/sbin/useradd -u 502 -g oinstall -G dba,asmdba oracle
最后,還要使用password命令為這兩個(gè)用戶設(shè)置密碼。
在這一步中我們需要注意以下幾點(diǎn):
保證每個(gè)用戶組在所有節(jié)點(diǎn)上的組ID一樣,這就是groupadd使用-G的目的;
要保證每個(gè)用戶在所有節(jié)點(diǎn)上的用戶ID一樣,這是useradd使用-u的目的;
要確保兩個(gè)用戶的主組是oinstall,這也是useradd使用-g的目的;
保證兩個(gè)用戶在每個(gè)節(jié)點(diǎn)機(jī)上的密碼一樣,這樣做不是必須的,不過(guò)可以簡(jiǎn)化用戶等價(jià)性的配置過(guò)程。
至于為什么會(huì)有這么多用戶和用戶組,可以參考2.1小節(jié)中的討論。
在創(chuàng)建了用戶之后,需要設(shè)置這兩個(gè)用戶的環(huán)境變量,其實(shí)就是設(shè)置$ORACLE_BASE和$ORACLE_HOME。設(shè)置了這兩個(gè)變量之后,Grid、Database的OUI安裝程序就會(huì)自動(dòng)提取這兩個(gè)變量值,省去了再次手動(dòng)輸入的麻煩。
Grid用戶的環(huán)境變量如下所示:
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME =/u01/app/11.2.0.2/grid
PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
Oracle用戶的環(huán)境變量如下所示:
export ORACLE_BASE=/u01/app/database
export ORACLE_HOME=$ORACLE_BASE/11.2.0.2/product
PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
仔細(xì)看一下,這兩個(gè)用戶的$ORACLE_BASE和$ORACLE_HOME的關(guān)系有什么不同?
提示:Oracle用戶的$ORACLE_HOME是$ORACLE_BASE的子目錄。而Grid用戶的$ORACLE_HOME不是$ORACLE_BASE的子目錄,這并不是我們有意為之,而是Oracle規(guī)定的,也必須這樣。
如果讀者讀過(guò)《大話Oracle RAC》和《Oracle DBA突擊》這兩本書(shū),可能就會(huì)發(fā)現(xiàn)我對(duì)$ORACLE_HOME 目錄規(guī)劃的看法發(fā)生了變化。之前,我一直喜歡的$ORACLE_HOME 規(guī)劃方式是/oracle/product/10.2.0.1/db這樣的目錄結(jié)構(gòu),而這次我采用的是/u01/app/database/11.2.0.2/product 這樣的層級(jí)結(jié)構(gòu),這也是 Oracle 的目錄結(jié)構(gòu)標(biāo)準(zhǔn),我之所以不再固執(zhí)己見(jiàn),是因?yàn)槲矣X(jué)得它要比我自己設(shè)計(jì)的更合理。
再接下來(lái),就是對(duì)Oracle用戶使用操作系統(tǒng)資源限制的改變,我們需要在/etc/security/limits.conf中添加這些內(nèi)容:
Oracle soft nproc 2047
Oracle hard nproc 16384
Oracle soft nofile 65536
Oracle hard nofile 63536
oracle soft stack 10240
然后在/etc/pam.d/login文件中添加以下代碼:
session required pam_limits.so
2.用戶等價(jià)性
在Oracle 11.2中,用戶等價(jià)性要求仍然不變,不過(guò)我們這里略過(guò),略過(guò)不是省略,而是不再需要像以前那樣純手工的配置方法了,具體的配置步驟后面會(huì)有介紹。OUI提供的可視化的配置方法,那是輕松省事多了。
3.調(diào)整NTP服務(wù)
我們知道,Oracle是事務(wù)型數(shù)據(jù)庫(kù),事務(wù)操作的先后順序是靠SCN來(lái)記錄的,SCN可以看作是時(shí)間戳,因此,各個(gè)節(jié)點(diǎn)機(jī)器上的時(shí)間一致就是 RAC 發(fā)揮價(jià)值的重要基石。所以必須通過(guò)技術(shù)手段來(lái)保證節(jié)點(diǎn)的時(shí)間一致。在Oracle 11.2版本之前,我們只有一種方法就是NTP,在Oracle 11.2版本之后,Oracle自己又多了一種方法,我們會(huì)在后面的章節(jié)中深入討論它。
1.3.2 使用 NTP 服務(wù)
要是堅(jiān)持使用操作系統(tǒng)自帶的 NTP 服務(wù)來(lái)保證時(shí)間一致,當(dāng)然完全沒(méi)有問(wèn)題。只是有個(gè)細(xì)節(jié)需要重視,我們需要修改一個(gè)配置。打開(kāi)NTP服務(wù)的參數(shù)文件,在其中的OPTIONS中加上個(gè)“-x”標(biāo)志,就像下面這樣。這樣做的目的是為了避免向前調(diào)整時(shí)間。這樣改好后,保存配置文件、重新啟動(dòng)NTP服務(wù)即可。
編輯/etc/sysconfig/ntpd文件:
# Drop root to id 'ntp:ntp' by default.
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"
# Set to 'yes' to sync hw clock after successful ntpdate
SYNC_HWCLOCK=no
# Additional options for ntpdate
NTPDATE_OPTIONS=""
重啟NTP服務(wù):
[root@indexserver3 grid_data]# service ntpd status
ntpd (pid 4250) is running...
[root@indexserver3 grid_data]# service ntpd stop
Shutting down ntpd: [ OK ]
[root@indexserver3 grid_data]# service ntpd start
ntpd: Synchronizing with time server: [ OK ]
Starting ntpd: [ OK ]
[root@indexserver3 grid_data]# ps -ef|grep ntpd
ntp 22244 1 0 17:25 ? 00:00:00 ntpd -x -u ntp:ntp -p /var/run/ntpd.pid
root 22250 15074 0 17:25 pts/0 00:00:00 grep ntpd
這是第一種時(shí)間配置方法,Oracle 自己也提供了一種方法,叫 CSST,因?yàn)檫@一章只是演示安裝過(guò)程,而安裝選擇的是NTP,所以這里不討論CSST(見(jiàn)第2章)。
1.3.3 網(wǎng)絡(luò)環(huán)境
在Grid 11.2中,Oracle引入了一些嶄新的技術(shù),包括SCAN、GNS、IP Bonding等。對(duì)于網(wǎng)絡(luò)配置的要求也和之前有所變化,這些要求如下:
127.0.0.1 這個(gè)地址只能映射到 localhost 或者 localhost.localdomain,而不應(yīng)該是其他的,任何網(wǎng)卡都不應(yīng)該使用這個(gè)地址;
所有節(jié)點(diǎn)上用于Public網(wǎng)絡(luò)的網(wǎng)卡名字應(yīng)該相同,比如都是eth0;
所有節(jié)點(diǎn)上用于Private網(wǎng)絡(luò)的網(wǎng)卡名字也應(yīng)該相同,比如都是eth1;
所有節(jié)點(diǎn)的所有網(wǎng)卡的MTU應(yīng)該相同,一般不需額外配置就是相同的;
所有的Public、Virtual、SCAN名字都應(yīng)該由DNS或者GNS解析,如果SCAN放在DNS解析,就不應(yīng)該出現(xiàn)在本地的hosts文件中;
更多的要求可以參看文檔1054902.1。
1.有關(guān)多播
Oracle Grid 11.2.0.2 引入了一個(gè)新的設(shè)計(jì),叫做“Redundant Interconnect Usage”,按照我的理解就是Oracle自己的多網(wǎng)卡綁定技術(shù)(讀者對(duì)這個(gè)技術(shù)不應(yīng)該陌生,不同平臺(tái)的叫法不同,Bonding、Teaming、Etherchannel等)。也就是用多塊網(wǎng)卡綁定成一個(gè)虛擬的私有網(wǎng)卡,專門(mén)用于私有網(wǎng)絡(luò)的通信。我們都知道私有網(wǎng)絡(luò)對(duì)于RAC穩(wěn)定的重要性,所以O(shè)racle的這個(gè)設(shè)計(jì)是有意義的。其實(shí)在這個(gè)設(shè)計(jì)出來(lái)之前,Oracle也會(huì)建議用戶用OS提供的類似技術(shù)實(shí)現(xiàn)同樣的功能。
不過(guò),Oracle 好像把大部分用戶的能力估計(jì)過(guò)高,它最初版本(指的是 11.2.0.2)選擇的底層技術(shù)是大多數(shù)人都很陌生的技術(shù)——多播。
這個(gè)多播是干嘛使的呢?每個(gè)節(jié)點(diǎn)的 Clusterware 棧在啟動(dòng)、加入集群過(guò)程中要嘗試和集群中的其他節(jié)點(diǎn)通信,雖然這時(shí)它還不知道有哪些兄弟姐妹存在。這一段的通信使用的就是多播技術(shù),而一旦通信協(xié)議道建立起來(lái),也就是它找到了親人了,它會(huì)再轉(zhuǎn)回到用單播模式繼續(xù)接下來(lái)的通信。
因此,如果私有網(wǎng)絡(luò)不支持多播或者不滿足Oracle要求的多播條件,那么集群棧是無(wú)法啟動(dòng)的。于是就有可能遇到這種問(wèn)題:
CRS-4402: The CSS daemon was started in exclusive mode but found an active CSS daemon on node node1, number 1, and is terminating
An active cluster was found during exclusive startup, restarting to join the cluster
Failed to start Oracle Clusterware stack
Failed to start Cluster Synchorinisation Service in clustered mode at /u01/app/crs/11.2.0.2/crs/install/crsconfig_lib.pm line 1016.
/u01/app/crs/11.2.0.2/perl/bin/perl -I/u01/app/crs/11.2.0.2/perl/lib -I/u01/app/crs/ 11.2.0.2/crs/install /u01/app/crs/11.2.0.2/crs/install/rootcrs.pl execution failed
說(shuō)實(shí)話,解決多播問(wèn)題已經(jīng)超過(guò)大部分DBA的能力了,包括對(duì)我。大概Oracle自己也覺(jué)得強(qiáng)人所難,于是在Oracle 11.2.0.3時(shí),對(duì)這個(gè)設(shè)計(jì)進(jìn)行了加強(qiáng)──同時(shí)支持多播和廣播,廣播我們就都能理解了。如果私有網(wǎng)絡(luò)支持多播,就優(yōu)先使用多播技術(shù),如果不支持多播,就使用廣播技術(shù)。這樣,前面這個(gè)問(wèn)題就少多了。
這里談?wù)摰亩嗖ァV播僅限于節(jié)點(diǎn)的 Clusterware 棧啟動(dòng)、加入集群、節(jié)點(diǎn)間建立連接的這個(gè)bootstrap階段,一旦這一篇翻過(guò)去了,之后的通信就都是單播了。
因此,如果你固執(zhí)地選擇Grid 11.2.0.2,那看看note 1212703.1或許有些幫助。如果使用的是Grid 11.2.0.3,就不用再考慮這個(gè)問(wèn)題了。
2.域名和IP
首先,要規(guī)劃一個(gè)域名,在 Oracle 的術(shù)語(yǔ)中叫 SCAN 地址。用于未來(lái)用戶找到這個(gè)數(shù)據(jù)庫(kù),這里是indexgrid.wxxr.com.cn。
其次,這個(gè)SCAN地址要通過(guò)DNS解析成IP地址,而且要解析成3個(gè)IP地址。
看看我們需要多少個(gè)IP地址?像我們這個(gè)4個(gè)節(jié)點(diǎn)的集群,一共需要4×3+3=15個(gè)IP地址。加號(hào)(+)后面的3就代表SCAN的3個(gè)IP地址。
如何配置DNS服務(wù)器這里就不演示了,這不在本書(shū)的討論范圍之內(nèi)。而且,不同DNS服務(wù)器的配置方法也不盡相同,不過(guò)最終的效果應(yīng)該是一樣的。在任何一臺(tái)機(jī)器上用nslookup命令看到的解析結(jié)果應(yīng)該是這樣的:
[root@indexserver4 ~]# nslookup indexgrid.wxxr.com.cn
Server: 192.168.123.5
Address: 192.168.123.5#53
Name: indexgrid.wxxr.com.cn
Address: 192.168.123.214
Name: indexgrid.wxxr.com.cn
Address: 192.168.123.215
Name: indexgrid.wxxr.com.cn
Address: 192.168.123.216
而剩下來(lái)的4×3=12個(gè)IP地址,和之前版本配置方式一樣,可以放在/etc/hosts中,比如:
192.168.1.70 indexserver1
192.168.1.71 indexserver2
192.168.1.72 indexserver3
192.168.1.73 indexserver4
10.0.0.70 indexserver1-priv
10.0.0.71 indexserver2-priv
10.0.0.72 indexserver3-priv
10.0.0.73 indexserver4-priv
192.168.1.80 indexserver1-vip
192.168.1.81 indexserver2-vip
192.168.1.82 indexserver3-vip
192.168.1.83 indexserver4-vip
前面說(shuō)過(guò),Public和Virtual地址也可以交給DNS解析。
3.主機(jī)名中不要有下劃線(_)
這是一個(gè)常見(jiàn)的錯(cuò)誤,也是個(gè)常識(shí)性錯(cuò)誤,也是筆者早期常犯的錯(cuò)誤,現(xiàn)在列在這里給讀者以提醒。
這個(gè)規(guī)定并不是Oracle的規(guī)定,而是Internet 的協(xié)議標(biāo)準(zhǔn)(RFC)中約定的:主機(jī)名中只能使用字母、數(shù)字和橫線(-)。而不能有其他的符號(hào),比如下劃線(_)。
如果主機(jī)名有下劃線,比如叫 beijing_db,那么數(shù)據(jù)庫(kù)會(huì)經(jīng)常出現(xiàn)些莫名其妙的問(wèn)題,典型的問(wèn)題就是在建庫(kù)過(guò)程中EMCA的配置會(huì)失敗,會(huì)遇到類似如圖1-4所示的提醒。

圖1-4 主機(jī)名中不能有下劃線(_)
1.3.4 配置存儲(chǔ)
存儲(chǔ)配置包括兩個(gè)步驟:基礎(chǔ)配置和ASM配置。
在基礎(chǔ)配置階段,我們要做的是配好盤(pán)柜、光纖交換機(jī),劃分Lun并能在主機(jī)上看到Lun,再安裝 PowerPath,以實(shí)現(xiàn)多路徑。這部分工作一般都是存儲(chǔ)廠商的工程師完成的,不在本書(shū)討論的范圍之內(nèi),下面要討論的是ASM配置。
1.ASM配置
配置 ASM 第一步是安裝 ASM 驅(qū)動(dòng)。下載驅(qū)動(dòng)包時(shí)要注意根據(jù)操作系統(tǒng)內(nèi)核版本號(hào)選擇對(duì)應(yīng)的包。查看OS內(nèi)核版本號(hào):
[oracle@indexserver1 ~]$ uname -a
Linux indexserver1 2.6.18-238.el5 #1 SMP Sun Dec 19 14:22:44 EST 2010 x86_64 x86_64 x86_64GNU/Linux
裝好了驅(qū)動(dòng)后,接下來(lái)就是配置ASM模塊。
在 Oracle 11.2 中,Grid 和 Database 一般是用不同的操作系統(tǒng)用戶安裝的,因此在配置ASMLib時(shí)就要小心點(diǎn)了。因?yàn)镚rid是用grid用戶安裝的,而grid的主組是oinstall,次要組是asmowner和asmdba,于是asmlib需要這樣配置:
[root@london1 grid]# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.
Default user to own the driver interface []: grid
Default group to own the driver interface []: asmdba
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver: [ OK ]
Scanning the system for Oracle ASMLib disks: [ OK ]
說(shuō)明:關(guān)于這幾個(gè)用戶和用戶組的作用,可以參考第2章中的詳細(xì)介紹。
配置好后,ASMLib驅(qū)動(dòng)會(huì)隨著系統(tǒng)啟動(dòng)自動(dòng)加載,接下來(lái)就要?jiǎng)?chuàng)建磁盤(pán)。
2.創(chuàng)建ASM磁盤(pán)
Oracle 11.2已經(jīng)放棄了對(duì)于裸設(shè)備的支持(當(dāng)然還會(huì)保持兼容),只能使用ASM磁盤(pán),所以先要?jiǎng)?chuàng)建磁盤(pán),創(chuàng)建磁盤(pán)是個(gè)有一定危險(xiǎn)的動(dòng)作,因?yàn)槿绻疟P(pán)上有數(shù)據(jù),這些數(shù)據(jù)就會(huì)被破壞。因此,我們必須先確保它沒(méi)有被用。因此,作為一個(gè)謹(jǐn)慎的管理員,我們得先檢查一下這個(gè)磁盤(pán)的使用情況,看它是不是已經(jīng)屬于其他的ASM組了。
使用oracleasm querydisk 命令,可以檢查某個(gè)磁盤(pán)是否已經(jīng)是 ASM 磁盤(pán),以及屬于哪個(gè)磁盤(pán)組,這個(gè)命令有兩個(gè)可選參數(shù)-p和-d,其中-d用來(lái)查看設(shè)備號(hào),-p查看的是設(shè)備路徑名。
例如,要想知道/dev/emcpowera1這個(gè)分區(qū)是否已經(jīng)是ASM磁盤(pán)以及它的名字是什么,可以這么做:
[root@searchdb2 ~]# oracleasm querydisk -v -p /dev/emcpowera1
Device "/dev/emcpowera1" is marked an ASM disk with the label "OCR"
反過(guò)來(lái),要想知道哪個(gè)磁盤(pán)是被命名為OCR的磁盤(pán),可以這么做:
[root@searchdb2 ~]# oracleasm qu erydisk -v -p OCR
Disk "OCR" is a valid ASM disk
/dev/emcpowera1: LABEL="OCR" TYPE="oracleasm"
/dev/sde1: LABEL="OCR" TYPE="oracleasm"
/dev/sdg1: LABEL="OCR" TYPE="oracleasm"
如果用-d,能看到的是設(shè)備號(hào),要對(duì)應(yīng)到真正的設(shè)備,還需要繞個(gè)彎,關(guān)于設(shè)備號(hào)和設(shè)備名的對(duì)應(yīng)關(guān)系,可以參考其他的資料和文檔。
如果不是ASM磁盤(pán),看起來(lái)輸出是這樣的:
[root@searchdb2 ~]# oracleasm querydisk -v -d /dev/emcpowerb7
Device "/dev/emcpowerb7" is not marked as an ASM disk
確認(rèn)磁盤(pán)可用之后,就要?jiǎng)?chuàng)建ASM磁盤(pán)了。
[root@searchdb2 ~]# oracleasm createdisk WXXRINDEX1 /dev/emcpowerb7
Writing disk header: done
Instantiating disk: done
創(chuàng)建磁盤(pán)就相當(dāng)于格式化,給這個(gè)磁盤(pán)盤(pán)頭寫(xiě)上ASM元數(shù)據(jù),這個(gè)命令只需要在一臺(tái)機(jī)器上執(zhí)行就可以了。
其他機(jī)器要做的是掃描磁盤(pán),把這個(gè)磁盤(pán)認(rèn)出來(lái),當(dāng)然靠的也是盤(pán)頭的ASM元數(shù)據(jù)。在每個(gè)機(jī)器上都進(jìn)行如下所示的操作:
[root@searchdb2 ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
然后再這么做:
[root@searchdb1 ~]# oracleasm listdisks
OCR
WXXRDATA1
WXXRDATA2
WXXRDATA3
WXXRDATA4
WXXRDATA5
WXXRINDEX1
確保每個(gè)節(jié)點(diǎn)上都能看到相同的列表。也就是說(shuō),所有節(jié)點(diǎn)都能識(shí)別出這些ASM磁盤(pán)。
1.4 安裝
環(huán)境準(zhǔn)備好后,就可以動(dòng)手安裝了。順序是先裝Grid、再裝Database。這兩個(gè)軟件都支持圖形化安裝和Silent的靜默安裝。就個(gè)人體會(huì)而言,Oracle 11.2的各種安裝卸載功能都比以前好了許多,基本都能做到了一次通過(guò)。所以,Silent 方式也是個(gè)不錯(cuò)的體驗(yàn),我放在后面的附錄中。
1.4.1 安裝 Grid
以grid用戶登錄系統(tǒng),在shelll下執(zhí)行./runInstaller,啟動(dòng)安裝程序。
(1)Metalink賬號(hào)的設(shè)置,如圖1-5所示。

圖1-5 Metalink賬號(hào)設(shè)置
Oracle 11.2的Database和Grid與Oracle服務(wù)體系(Metalink)結(jié)合得更緊密,比如,我們可以在安裝過(guò)程中讓 OUI 幫著去 Metalink 查看更新的補(bǔ)丁包,然后下載補(bǔ)丁并安裝它。基本上類似于 Windows 中的各種自動(dòng)更新。當(dāng)然你需要先購(gòu)買(mǎi) Oracle 的服務(wù)、擁有 MOS 的賬號(hào)才行。
這里先跳過(guò)這一步,保持安裝過(guò)程的簡(jiǎn)潔。
(2)選擇安裝類型,如圖1-6所示。這一步?jīng)]什么可說(shuō)的,我們就選第一項(xiàng)【Install and Configure Oracle Grid Infrastructure for a Cluster(安裝并配置集群下的Grid)】。

圖1-6 選擇安裝類型
(3)選擇安裝方式,如圖1-7所示。這里我們要選第二項(xiàng)【Advanced Installation(高級(jí)安裝)】,其實(shí)就是自定義安裝。之所以不選第一項(xiàng)【Typical Installation(典型安裝)】,是因?yàn)槲蚁虢o這個(gè)集群起個(gè)牛氣烘烘的名字(也叫SCAN名字),而不使用典型安裝提供的缺省名字。

圖1-7 選擇安裝方式
(4)選擇安裝語(yǔ)言,如圖1-8所示。如果在上一步中選擇了【Advanced Installation(高級(jí)安裝)】,就會(huì)進(jìn)入到這個(gè)界面,如果選擇【Typical Installation(典型安裝)】,會(huì)直接跳到步驟(6)。這里選擇【English】,Oracle軟件還是在英文環(huán)境下感覺(jué)最流暢自然。

圖1-8 選擇語(yǔ)言
(5)定義集群的名字、SCAN名字及監(jiān)聽(tīng)端口和GNS,如圖1-9所示。如果步驟(3)中選擇了【Typical Installation】,那么我們是不會(huì)看到這個(gè)界面的。

圖1-9 配置GPNP
在這里輸入集群的名字、SCAN、SCAN端口號(hào)。在這個(gè)例子中不使用GNS,所以應(yīng)取消【Configure GNS】復(fù)選框。
(6)定義集群的節(jié)點(diǎn)列表(如圖1-10所示)以及身份等價(jià)。如果步驟(3)中選擇【Typical Installation】,那么就會(huì)直接跳到這個(gè)界面。這里需要把集群中的4個(gè)節(jié)點(diǎn)都加進(jìn)去,提供每個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)名和VIP名。

圖1-10 定義集群節(jié)點(diǎn)
4個(gè)節(jié)點(diǎn)都加好后,就要配置SSH等價(jià)了。這一步配置的是grid用戶的等價(jià)性。單擊【SSH Connectivity..】按鈕,頁(yè)面上就會(huì)多出一些內(nèi)容,輸入grid用戶的密碼,單擊【Setup】按鈕,然后就開(kāi)始配置SSH等價(jià)(如圖1-11所示),最后彈出如圖1-12所示的配置成功通知。

圖1-11 SSH自動(dòng)配置大大減少了工作量

圖1-12 SSH用戶等價(jià)配置成功
配置成功!
之前在做環(huán)境準(zhǔn)備時(shí),我們有意在用戶等價(jià)性一節(jié)只留個(gè)標(biāo)題,原因就在這里。SSH等價(jià)本身并不屬于Oracle內(nèi)容,但它是做RAC配置必需的。Grid、Database在本機(jī)安裝好后,會(huì)通過(guò)SSH把本地的這些文件目錄復(fù)制到其他節(jié)點(diǎn)上去,這本身也是一個(gè)登錄其他節(jié)點(diǎn)的過(guò)程,因此需要某種身份驗(yàn)證的機(jī)制。最簡(jiǎn)單的就是輸入用戶名、密碼,但安裝過(guò)程就會(huì)不斷地被打斷,輸入每個(gè)節(jié)點(diǎn)的用戶名和密碼后才能繼續(xù),非常麻煩。SSH等價(jià)可以通過(guò)證書(shū)、密鑰等方式去掉了手工輸入密碼的麻煩,使得后臺(tái)的文件復(fù)制得以悄悄地進(jìn)行。
SSH等價(jià)雖然簡(jiǎn)單,但配置繁瑣,尤其當(dāng)節(jié)點(diǎn)多的時(shí)候,于是Oracle干脆替我們?nèi)扛愣ā?duì)于安裝人員來(lái)說(shuō)確實(shí)是簡(jiǎn)單了,不過(guò)生生地把新人知曉 SSH 等價(jià)的機(jī)會(huì)給剝奪了,不知道算是好事還是壞事。
(7)配置網(wǎng)卡,如圖1-13所示。這個(gè)界面用來(lái)定義共有網(wǎng)絡(luò)和私有網(wǎng)絡(luò),不再細(xì)說(shuō)。

圖1-13 定義公共、私有網(wǎng)卡
(8)定義 OCR 保存位置,如圖1-14所示。這里有兩個(gè)選項(xiàng),這里選擇第一個(gè)【Oracle Automatic Storage Management(Oracle ASM)】。

圖1-14 定義OCR存放的位置
Oracle 11.2 已經(jīng)放棄對(duì)裸設(shè)備的支持,從這一步就看出來(lái)了。以前在 Oracle 10g、Oracle 11gR1時(shí),這里是能夠支持裸設(shè)備的。
(9)配置ASM,如圖1-15所示。到這一步,Grid會(huì)掃描系統(tǒng),把所有可用的ASM磁盤(pán)都列在這里,我們需要?jiǎng)?chuàng)建個(gè)磁盤(pán)組來(lái)保存 OCR 文件。創(chuàng)建磁盤(pán)組必不可少的選項(xiàng)有:冗余方式和ASM磁盤(pán)。

圖1-15 配置ASM存儲(chǔ)
(10)指定ASM管理員密碼,如圖1-16所示。

圖1-16 定義ASM管理員的密碼
(11)是否要使用 IPMI,如圖1-17所示。選擇第二項(xiàng)【Do not use Intelligent Platform Management Interface(IPMI)】,一般情況都不需要使用IPMI。關(guān)于IPMI的更多內(nèi)容可以參見(jiàn)第2章。

圖1-17 不需要使用IPMI
(12)指定ASM用戶組,如圖1-18所示。之前在準(zhǔn)備主機(jī)環(huán)境時(shí),我們已經(jīng)在操作系統(tǒng)中創(chuàng)建了這3個(gè)用戶組,確保你的選擇與我一致。這些用戶組的含義見(jiàn)2.1小節(jié)。

圖1-18 保持這3個(gè)用戶組不變
(13)指定安裝位置,如圖1-19所示。grid用戶的環(huán)境里已經(jīng)定義好了ORACLE_BASE和ORACLE_HOME兩個(gè)環(huán)境變量,OUI會(huì)讀出參數(shù)值自動(dòng)填在這里。

圖1-19 指定軟件安裝位置
(14)指定產(chǎn)品清單位置,如圖1-20所示。我們會(huì)在第2章中詳細(xì)介紹產(chǎn)品清單,這里就不多說(shuō)了。保證這個(gè)目錄的屬組是【oinstall】,如圖1-20所示。

圖1-20 oraInventory目錄的位置
到此,所有安裝前的設(shè)置就結(jié)束了,已經(jīng)可以開(kāi)始安裝了,不過(guò)為了確保一次過(guò),O UI還要做一次完整的檢查以確保能夠安裝成功。其實(shí)我們也可以自己做這樣的檢查,檢查工具是cluvfy,OUI檢查用的也是這個(gè)工具。
(15)系統(tǒng)檢查,如圖1-21所示。檢查的內(nèi)容包括操作系統(tǒng)內(nèi)核參數(shù)、必需的包。如果有哪一項(xiàng)檢查無(wú)法通過(guò),解決之,然后再檢查,盡量讓所有的檢查都通過(guò)。

圖1-21 操作系統(tǒng)檢查
有可能檢查結(jié)果總是抱怨ASM磁盤(pán)檢查失敗,無(wú)法發(fā)現(xiàn)磁盤(pán),如圖1-22所示。

圖1-22 bug引起的檢查失敗
這是因?yàn)橛龅搅薭ug 10310848,在我做這次安裝時(shí)未發(fā)布補(bǔ)丁,可以直接跳過(guò)。具體可以參考文檔1267569.1。
(16)開(kāi)始安裝Oracle 11g,如圖1-23所示。安裝過(guò)程很快,最后會(huì)看到執(zhí)行配置腳本的提示界面,如圖1-23所示。

圖1-23 執(zhí)行腳本提示
打開(kāi)新窗口,以root身份執(zhí)行要求的第一個(gè)腳本orainstRoot.sh:
root@indexserver4 oraInventory]# ./orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.
然后執(zhí)行第二個(gè)腳本root.sh:
[root@indexserver1 grid]# ./root.sh
Running Oracle 11g root script...
The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME= /u01/app/11.2.0/grid
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /u01/app/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
LOCAL ADD MODE
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
OLR initialization - successful
root wallet
root wallet cert
root cert export
peer wallet
profile reader wallet
pa wallet
peer wallet keys
pa wallet keys
peer cert request
pa cert request
peer cert
pa cert
peer root cert TP
profile reader root cert TP
pa root cert TP
peer pa cert TP
pa peer cert TP
profile reader pa cert TP
profile reader peer cert TP
peer user cert
pa user cert
Adding daemon to inittab
ACFS-9200: Supported
ACFS-9300: ADVM/ACFS distribution files found.
ACFS-9307: Installing requested ADVM/ACFS software.
ACFS-9308: Loading installed ADVM/ACFS drivers.
ACFS-9321: Creating udev for ADVM/ACFS.
ACFS-9323: Creating module dependencies - this may take some time.
ACFS-9327: Verifying ADVM/ACFS devices.
ACFS-9309: ADVM/ACFS installation correctness verified.
CRS-2672: Attempting to start 'ora.mdnsd' on 'indexserver1'
CRS-2676: Start of 'ora.mdnsd' on 'indexserver1' succeeded
CRS-2672: Attempting to start 'ora.gpnpd' on 'indexserver1'
CRS-2676: Start of 'ora.gpnpd' on 'indexserver1' succeeded
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'indexserver1'
CRS-2672: Attempting to start 'ora.gipcd' on 'indexserver1'
CRS-2676: Start of 'ora.cssdmonitor' on 'indexserver1' succeeded
CRS-2676: Start of 'ora.gipcd' on 'indexserver1' succeeded
CRS-2672: Attempting to start 'ora.cssd' on 'indexserver1'
CRS-2672: Attempting to start 'ora.diskmon' on 'indexserver1'
CRS-2676: Start of 'ora.diskmon' on 'indexserver1' succeeded
CRS-2676: Start of 'ora.cssd' on 'indexserver1' succeeded
ASM created and started successfully.
Disk Group DATA created successfully.
clscfg: -install mode specified
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
CRS-4256: Updating the profile
Successful addition of voting disk 06de730377e84f12bf4d915dc383006d.
Successfully replaced voting disk group with +DATA.
CRS-4256: Updating the profile
CRS-4266: Voting file(s) successfully replaced
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1.ONLINE 06de730377e84f12bf4d915dc383006d (ORCL:WXXRINDEX1) [DATA]
Located 1 voting disk(s).
CRS-2672: Attempting to start 'ora.asm' on 'indexserver1'
CRS-2676: Start of 'ora.asm' on 'indexserver1' succeeded
CRS-2672: Attempting to start 'ora.DATA.dg' on 'indexserver1'
CRS-2676: Start of 'ora.DATA.dg' on 'indexserver1' succeeded
ACFS-9200: Supported
ACFS-9200: Supported
CRS-2672: Attempting to start 'ora.registry.acfs' on 'indexserver1'
CRS-2676: Start of 'ora.registry.acfs' on 'indexserver1' succeeded
Configure Oracle Grid Infrastructure for a Cluster ...succeeded
看到了最后的succeeded,說(shuō)明這個(gè)節(jié)點(diǎn)沒(méi)問(wèn)題。
繼續(xù)在剩下的第2、3和4節(jié)點(diǎn)上執(zhí)行這兩個(gè)腳本,確保都沒(méi)問(wèn)題。這還沒(méi)有結(jié)束,再回到剛才的安裝界面,單擊【OK】按鈕,還有一點(diǎn)后續(xù)任務(wù)要做,如圖1-24所示。

圖1-24 后續(xù)任務(wù)
進(jìn)度條終于到了100%,如果看到【Status】列表中有兩個(gè)刺眼的紅色圖標(biāo),不要擔(dān)心,單擊【Details】按鈕查看詳細(xì)內(nèi)容。

圖1-25 終于來(lái)到這里
如果看到最后(如圖1-26所示)失敗的是OCVU,那還是之前那個(gè)bug問(wèn)題,可以忽略掉,我們就安裝成功了。

圖1-26 失敗的細(xì)節(jié)
可以收工了,不過(guò)因?yàn)橹坝惺〉牡胤剑m然我們知道這是個(gè)bug,但是OUI還是會(huì)友好地提示一下,如圖1-27所示。不過(guò)我們也只能這樣了。

圖1-27 提示有bug
目前看起來(lái)軟件是裝上了,但是不是真的成功了,Grid 是不是真的跑起來(lái)了?我們得借助一些手段進(jìn)行完整的調(diào)查后才能確認(rèn)。這些檢查方法可以參考 3.4 節(jié),這里就先不細(xì)說(shuō)了。
1.4.2 安裝 Database
這次要以O(shè)racle用戶身份執(zhí)行:
[oracle@indexserver1 database]$ ./runInstaller
(1)捆綁MOS服務(wù)。
這又是和Metalink有關(guān)的內(nèi)容,我們?cè)O(shè)置一下看看什么效果。在如圖1-8和圖1-29所示的界面中輸入Metalink的賬號(hào)和密碼,然后可以通過(guò)【Test Connection】按鈕測(cè)試一下是不是能連接并登錄Metalink系統(tǒng)。

圖1-28 設(shè)置Metalink賬號(hào)、密碼(1)

圖1-29 設(shè)置Metalink賬號(hào)、密碼(2)
如果用戶名、密碼沒(méi)問(wèn)題,則OUI會(huì)自動(dòng)搜索最新補(bǔ)丁,并提示下載(如圖1-30所示)。下載補(bǔ)丁與否并不影響后續(xù)的安裝,不過(guò)起碼我們心里有數(shù)了。

圖1-30 還真找到了一個(gè)Patch,下載隨意,安裝由你,不影響后續(xù)安裝
(2)選擇安裝方式,如圖1-31所示,這里選第二項(xiàng)【Install database software only(只安裝數(shù)據(jù)庫(kù)軟件)】,后面會(huì)通過(guò)DBCA來(lái)創(chuàng)建數(shù)據(jù)庫(kù)。

圖1-31 選擇安裝方式,只安裝軟件
(3)確定部署規(guī)模,如圖1-32所示。

圖1-32 部署規(guī)模和用戶等價(jià)性
這里當(dāng)然要選擇第二項(xiàng)【Oracle Real Application Clusters database installation(Oracle RAC數(shù)據(jù)庫(kù)安裝)】,第一項(xiàng)是單實(shí)例數(shù)據(jù)庫(kù)安裝方式,第三項(xiàng)是Oracle RAC One Node數(shù)據(jù)庫(kù)安裝方式(后面有專門(mén)介紹)。
此外,還要確定規(guī)模,也就是都要在哪些節(jié)點(diǎn)上安裝。這里在集群節(jié)點(diǎn)列表中選中所有的節(jié)點(diǎn)。
最后是配置Oracle用戶的SSH等價(jià)性,與之前Grid完全一樣,這里就不再贅述。
(4)接下來(lái)就是選擇語(yǔ)言、指明安裝目錄以及Oracle用戶所屬的組,比較簡(jiǎn)單,沒(méi)什么需要特殊說(shuō)明的,如圖1-33所示。

圖1-33 語(yǔ)言、安裝目錄、用戶組
到此,安裝前的信息收集工作就算完成了,接下來(lái)就可以安裝了。不過(guò)為了保證安裝的一次過(guò),OUI 還是會(huì)做一次環(huán)境檢查工作。對(duì)檢查結(jié)果中的不合格項(xiàng),DBA 需要做出整改。然后再檢查,直至全部檢查通過(guò)為止(如圖1-34所示)。

圖1-34 檢查和檢查結(jié)果
和Grid的OUI一樣,Database的也是通過(guò)cluvfy進(jìn)行的檢查,DBA也可以手工執(zhí)行這個(gè)腳本來(lái)檢查。
接下來(lái)就是正式的安裝了(如圖1-35所示),最后會(huì)彈出一個(gè)對(duì)話框,提示我們現(xiàn)在安裝過(guò)程暫停,需要我們手工在每個(gè)節(jié)點(diǎn)上執(zhí)行一個(gè)名為root.sh的腳本(如圖1-36所示)。執(zhí)行完畢后單擊【OK】按鈕關(guān)閉這個(gè)提示對(duì)話框,安裝過(guò)程才能夠繼續(xù)進(jìn)行。

圖1-35 安裝進(jìn)度

圖1-36 database的root.sh
以root身份執(zhí)行這個(gè)腳本:
[root@indexserver1 ~]# /u01/app/oracle/11.2.0/product/root.sh
Running Oracle 11g root script...
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/11.2.0/product
Enter the full pathname of the local bin directory: [/usr/local/bin]:
The contents of "dbhome" have not changed.No need to overwrite.
The contents of "oraenv" have not changed.No need to overwrite.
The contents of "coraenv" have not changed.No need to overwrite.
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
4個(gè)節(jié)點(diǎn)都執(zhí)行之后,返回到如圖1-30所示的界面,關(guān)閉該對(duì)話框,安裝過(guò)程會(huì)繼續(xù)進(jìn)行,最后彈出安裝成功的界面,如圖1-37所示,大功告成。

圖1-37 Database安裝成功
應(yīng)該說(shuō)Database的安裝要比之前的版本簡(jiǎn)單,因?yàn)锳SM配置已經(jīng)被移走了,和Grid放在了一起,包括監(jiān)聽(tīng)器也被移到了Grid中,所以Database本身配置項(xiàng)就少了很多。
最后,我們創(chuàng)建數(shù)據(jù)庫(kù)。
1.4.3 創(chuàng)建數(shù)據(jù)庫(kù)
以O(shè)racle的身份登錄到任何一個(gè)節(jié)點(diǎn)上,并以O(shè)racle的身份執(zhí)行DBCA,出現(xiàn)的第一個(gè)界面應(yīng)該是集群數(shù)據(jù)庫(kù)的歡迎界面,如圖1-38所示。

圖1-38 集群的DBCA歡迎你
一定要確保看到的是這個(gè)界面,換句話說(shuō),就是要確保DBCA能夠識(shí)別出這是一個(gè)集群環(huán)境而不是單機(jī)環(huán)境。我們會(huì)在2.2節(jié)中解釋什么叫DBCA識(shí)別出集群環(huán)境,以及不能識(shí)別時(shí)的解決辦法,如果現(xiàn)在看到的不是如圖1-38所示的界面,那么可以參考2.2節(jié)的內(nèi)容。
(1)選擇哪種數(shù)據(jù)庫(kù)。我們當(dāng)然選擇第一項(xiàng)【Oracle Real Application Clusters(RAC) database (RAC 數(shù)據(jù)庫(kù))】。第二項(xiàng)是【Oracle RAC One Node database】,后面會(huì)專門(mén)介紹,第三項(xiàng)是 【Oracle single instance database(單實(shí)例數(shù)據(jù)庫(kù))】。
(2)在如圖1-39所示的界面中,選擇要執(zhí)行什么操作,這里選擇第一項(xiàng)【Creat a Database (創(chuàng)建數(shù)據(jù)庫(kù))】。

圖1-39 選擇操作類型
(3)選擇如何創(chuàng)建數(shù)據(jù)庫(kù),如圖1-40所示。我一般喜歡選擇第二項(xiàng)【Custom Database】,這樣我對(duì)數(shù)據(jù)庫(kù)具有哪些功能可以做到心里有底。而第一項(xiàng)、第三項(xiàng)都是根據(jù)特定的數(shù)據(jù)庫(kù)模板來(lái)創(chuàng)建數(shù)據(jù)庫(kù)。

圖1-40 建庫(kù)方式
這個(gè)界面和之前的版本有點(diǎn)區(qū)別。Oracle 10g中這里是4個(gè)選項(xiàng),General Purpose和Transaction Processing兩個(gè)是分開(kāi)的,因?yàn)檫@兩種模板非常相似,所以O(shè)racle 11.2將給它們合并了。
這些數(shù)據(jù)庫(kù)模板位于$ORACLE_HOME/assistants/dbca/templates,可以看一看:
[oracle@indexserver1 templates]$ ll
……
-rw-r--r-- 1 oracle oinstall 5104 Sep 5 2010 Data_Warehouse.dbc
-rw-r--r-- 1 oracle oinstall 4984 Sep 5 2010 General_Purpose.dbc
……
兩個(gè).dbc文件就是這兩個(gè)模板。這是兩個(gè)XML文件,可以打開(kāi)來(lái)讀讀看。
這個(gè)目錄下還有兩個(gè)文件,英文名字 Seed_Database,就是所謂的種子數(shù)據(jù)庫(kù)。你可以把它們看成是RMAN創(chuàng)建出來(lái)的備份集。于是這兩種數(shù)據(jù)庫(kù)的創(chuàng)建就成了RMAN的數(shù)據(jù)庫(kù)恢復(fù)。所以這種庫(kù)的創(chuàng)建速度會(huì)很快,如果只是個(gè)測(cè)試數(shù)據(jù)庫(kù),可以考慮這兩種創(chuàng)建方式。
[oracle@indexserver1 templates]$ ll
……
-rwxr-xr-x 1 oracle oinstall 9748480 Nov 16 2010 Seed_Database.ctl
-rwxr-xr-x 1 oracle oinstall 263118848 Nov 16 2010 Seed_Database.dfb
這兩個(gè)模板的區(qū)別就在于 STAR_TRANSFORMATION_ENABLED 參數(shù)值,對(duì)于 Data Warehouse是True,而General Purpose中這個(gè)參數(shù)是False。
如果選擇定制方式創(chuàng)建數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)建成后,會(huì)執(zhí)行$ORACLE_HOME/rdbms/admin目錄下的許多腳本創(chuàng)建數(shù)據(jù)字典,比如catproc.sql、catalog.sql等。所以盡管建的庫(kù)不大,但是時(shí)間會(huì)很長(zhǎng),就是因?yàn)橐獔?zhí)行這些腳本。生產(chǎn)環(huán)境下最好使用這種方式來(lái)創(chuàng)建,對(duì)每個(gè)細(xì)節(jié)都做到心中有數(shù)。
(4)在如圖1-41所示的界面中選擇管理策略。這個(gè)界面是Oracle 11.2 中新亮相的,而這個(gè)特性也是 Oracle 11.2 新提出來(lái)的,我們會(huì)在后面的章節(jié)中專門(mén)講解它。這里就選擇第一項(xiàng)【Admin-Managed】。

圖1-41 管理策略
目前我們只需要知道Admin管理策略和我們以前熟悉的管理方式一致,需要我們提供數(shù)據(jù)庫(kù)名、SID前綴、節(jié)點(diǎn)列表。
數(shù)據(jù)庫(kù)名最好不要以數(shù)字結(jié)尾,因?yàn)閷?shí)例的名字是在數(shù)據(jù)庫(kù)名后面加上數(shù)字。比如,testdb1、testdb2。如果數(shù)據(jù)庫(kù)名是test1、test2,那實(shí)例的名字就成了test11、test12,會(huì)把人搞糊涂的。
(5)是否使用 EM,以及是用 DB Controle 還是 Grid Control(如圖1-42所示)。EM 是Oracle提供的一種基于瀏覽器的、企業(yè)級(jí)的管理工具。

圖1-42 EM設(shè)置
二者的區(qū)別在于 DB Control 是一個(gè)輕量級(jí)的管理方式,我喜歡叫它寄生的管理方式。DBControl 不需要安裝特殊的軟件,它是作為數(shù)據(jù)庫(kù)的一個(gè)選項(xiàng)而存在的,只需在建庫(kù)過(guò)程中打開(kāi)而已。缺點(diǎn)是每個(gè)DB Control只能管理它所在的那個(gè)宿主數(shù)據(jù)庫(kù),并且可靠性也取決于宿主數(shù)據(jù)庫(kù)。
Grid Control 是集中的管理方式,它本身是一個(gè)單獨(dú)的軟件,需要單獨(dú)安裝,它可以管理企業(yè)內(nèi)所有數(shù)據(jù)庫(kù)。而且Grid Control的定位是一個(gè)通用的管理平臺(tái),不僅僅管理數(shù)據(jù)庫(kù),還可以管理主機(jī)、防火墻、存儲(chǔ)等資產(chǎn)。
對(duì)于我們這個(gè)測(cè)試數(shù)據(jù)庫(kù),采用DB Control方式就夠了,選中如圖1-42所示的選項(xiàng)。
(6)設(shè)置管理員密碼,如圖1-43所示。

圖1-43 管理員密碼
(7)定義數(shù)據(jù)文件存放方式。
這一步在Oracle 11.2中也有了一點(diǎn)變化,Grid中的ASM提供了卷管理器(ADVM)和集群文件系統(tǒng)(ACFS)。盡管ACFS是個(gè)集群文件系統(tǒng),但卻不支持自家的數(shù)據(jù)庫(kù)文件。如果做了這種嘗試,就會(huì)遇到如圖1-44所示的錯(cuò)誤。

圖1-44 盡管ACFS、Database同出一門(mén),但是并不相容
因此,這里只能選擇ASM磁盤(pán)組,如圖1-45所示。

圖1-45 唯一的選擇就是ASM
要想在 ASM 磁盤(pán)組里創(chuàng)建文件,必須能連接到 ASM 實(shí)例,因此需要提供必要的身份信息,如圖1-46所示。

圖1-46 ASM身份信息
注意,圖1-46中要求的用戶是ASMSNMP,不是我們想當(dāng)然的sys,因此要保證ASM數(shù)據(jù)庫(kù)里有ASMSNMP這個(gè)用戶,賬戶沒(méi)有鎖定,而且要有DBA權(quán)限。這么做:
[grid@indexserver2 ~]$ export ORACLE_SID=+ASM1
[grid@indexserver2 ~]$ sqlplus " / as sysdba"
SQL> create user asmsnmp identified by Yourpassword ;
User created.
SQL> grant sysdba to asmsnmp;
Grant succeeded.
如果沒(méi)有這個(gè)用戶或者權(quán)限不足,就會(huì)遇到如圖1-47所示的這個(gè)錯(cuò)誤,ASMSNMP驗(yàn)證不通過(guò)。

圖1-47 ASMSNMP用戶權(quán)限不足
(8)再接下來(lái)的步驟就簡(jiǎn)單了,包括是不是要使用歸檔模式、是否打算使用FRA,是否需要預(yù)裝的Schema、對(duì)初始化參數(shù)的調(diào)整、對(duì)數(shù)據(jù)文件的調(diào)整。相信對(duì)本書(shū)的讀者來(lái)說(shuō),這些內(nèi)容太淺顯了,而且和之前版本沒(méi)有變化,所以我就一帶而過(guò),參考圖1-48即可。

圖1-48 數(shù)據(jù)庫(kù)創(chuàng)建
接下來(lái)就開(kāi)始安裝。終于要見(jiàn)到了勝利的曙光了!如果看到如圖1-49所示的界面,那么就可以開(kāi)香檳慶祝了。

圖1-49 勝利的終點(diǎn)
大功告成了!安裝就講到這了,下一章我們講為什么要這么安裝、裝好了怎么刪除或者卸載。
1.5 小結(jié)
我一直覺(jué)得能從Oracle 8i開(kāi)始接觸Oracle的DBA是幸福的,因?yàn)槟莻€(gè)時(shí)候天還是藍(lán)的、水還是綠的,Oracle還就是個(gè)庫(kù),花哨的功能很少,所以對(duì)于有興趣、有精力、喜歡刨根問(wèn)底的讀者,能刨的就剩下Oracle內(nèi)部機(jī)制了,所以那時(shí)ODI一度風(fēng)靡于網(wǎng)絡(luò)。
從Oracle 9開(kāi)始,由于數(shù)據(jù)庫(kù)核心已經(jīng)穩(wěn)定了,所以O(shè)racle開(kāi)始在外延發(fā)力,各種工具、擴(kuò)展、行業(yè)延伸讓人眼花繚亂。當(dāng)今的Oracle說(shuō)它是數(shù)據(jù)庫(kù)也行,說(shuō)是應(yīng)用服務(wù)器也不錯(cuò),說(shuō)是行業(yè)一攬子解決方案也沒(méi)毛病,總之,Oracle把萬(wàn)千寵愛(ài)都集中到這個(gè)長(zhǎng)子身上,恨不得武裝到牙齒。現(xiàn)在的Oracle數(shù)據(jù)庫(kù)可以研究的內(nèi)容太多了,真正最樸素的那道光芒反而被無(wú)視了。比如,有一段時(shí)間我就在研究如何把jQuery集成到Oracle內(nèi)置的Apex中建個(gè)人網(wǎng)站。這已經(jīng)完全和數(shù)據(jù)庫(kù)沒(méi)有任何關(guān)系了!
對(duì)于RAC 11.2,我的感覺(jué)也是一樣的,要講的東西太多,所以這一章的安裝演示我盡量壓縮了,但還是整出了40多頁(yè)。如果讀者覺(jué)得有些步驟過(guò)于簡(jiǎn)單,或者讀者初次接觸RAC,我建議看看《大話Oracle RAC》一書(shū),對(duì)于RAC的基本原理,那本書(shū)講得要更透徹一些,而這本書(shū)關(guān)注的是Oracle 11.2的新內(nèi)容,并未重復(fù)已有的內(nèi)容。
- 信息系統(tǒng)與數(shù)據(jù)科學(xué)
- 大數(shù)據(jù)導(dǎo)論
- 云計(jì)算服務(wù)保障體系
- 揭秘云計(jì)算與大數(shù)據(jù)
- iOS and OS X Network Programming Cookbook
- WS-BPEL 2.0 Beginner's Guide
- 智能數(shù)據(jù)時(shí)代:企業(yè)大數(shù)據(jù)戰(zhàn)略與實(shí)戰(zhàn)
- 白話大數(shù)據(jù)與機(jī)器學(xué)習(xí)
- 深入淺出 Hyperscan:高性能正則表達(dá)式算法原理與設(shè)計(jì)
- INSTANT Android Fragmentation Management How-to
- Google Cloud Platform for Developers
- Chef Essentials
- 菜鳥(niǎo)學(xué)SPSS數(shù)據(jù)分析
- 商業(yè)智能工具應(yīng)用與數(shù)據(jù)可視化
- SQL Server 2008寶典(第2版)