Redhat AS4 for x86_64上安裝Oracle 9204 RAC概述
轉自:http://yangtingkun.itpub.net
Oracle的官方文件Oracle9i Real Application Clusters Setup and Configuration很早前就看過了,但是從來沒有親手安裝過RAC環境。這次安裝過程中,碰到了無數的問題,曾經幾次都想要放棄,不過還是堅持了下來,最後僥倖成功了。
感謝biti_rainy幫我指出了兩個重大的問題,沒有他的幫助,可能我已經放棄了。
[@more@]由於時間等多種因素,這裡不會給出所有步驟的具體指令碼。對於大部分步驟,可能僅僅透過“口述”的方式進行。
如果以後有機會的話,希望能將指令碼補全,不過目前只能給出一個大致執行步驟:
首先是檢查作業系統和硬體是否滿足安裝ORACLE RAC的需求,安裝ORACLE 9204 RAC的需求和安裝ORACLE 9204的要求基本一致,這裡就不重複了,在這篇文章裡面有詳細的描述:http://yangtingkun.itpub.net/post/468/211768
下一步使用ROOT帳號對系統進行一些設定,對於安裝ORACLE本身也需要的設定,這裡就不重複了,在上面給出的連結中也可以找到:
在兩臺伺服器的/etc/hosts檔案中新增下列內容:
172.25.198.245 GPOLNX2
172.25.198.244 GPOLNX
10.1.1.1 inter-gpo1
10.1.1.2 inter-gpo2
其中GPOLNX和GPOLNX2分別是兩臺伺服器的名稱的外網IP地址。而inter-gpo1和inter-gpo2是兩個節點內部連線使用的IP和名稱。這個內網使用的名稱可以任取。
在兩個節點的/etc/sysctl.conf檔案中新增:
kernel.shmall = 2097152
kernel.shmmax = 8589934592
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max= 262144
net.core.wmem_default = 262144
net.core.wmem_max= 262144
前面6行是安裝9i必須的引數,後面4行是安裝RAC所必須的引數。
下面建立oracle使用者和oinstall、dba組,和建立Oracle9i的差別在於,最後在根目錄下,建立一個需要oracle使用者的目錄,並把ORACLE_BASE和ORACLE_HOME等都建立在這個目錄上。
# mkdir -p /u1/oracle/product/9.2
# chown -R oracle.dba /u1
# chmod -R ug=rwx,o=rx /u1
檢查兩個伺服器上安裝的包是否完成,除了9i所必須的包之外,還需要rsh-server包。另外,檢查/etc/xinetd.d目錄下的telnet、ftp、shell、login和rsh等服務處於enable的狀態:檢查檔案中disable = no的設定。
在每個節點的/etc/hosts.equiv檔案或oracle使用者目錄的.rhosts檔案中新增節點名稱:
GPOLNX2
GPOLNX
inter-gpo1
inter-gpo2
分別在兩個節點測試rcp命令,是否可以在不輸入密碼的情況下複製成功:
[oracle@GPOLNX ~]$ rcp ./test.txt GPOLNX2:/home/oracle/connect to address 172.25.198.245: Connection refused
Trying krb4 rcp...
connect to address 172.25.198.245: Connection refused
trying normal rcp (/usr/bin/rcp)
下面設定oracle使用者的環境變數,在兩個節點的初始化shell檔案上新增下列內容:
if [ $USER = "oracle" ]; then
ulimit -u 16384 -n 65536
fi
export ORACLE_BASE=/u1/oracle
export ORACLE_HOME=/u1/oracle/product/9.2
export ORACLE_SID=rac1
export NLS_LANG='SIMPLIFIED CHINESE_CHINA.ZHS16GBK'
export PATH=$ORACLE_HOME/bin:$PATH
export DISPLAY=172.25.6.201:0
export LD_ASSUME_KERNEL=2.4.1
export DBCA_RAW_CONFIG=/home/oracle/mapfile
export SRVM_SHARED_CONFIG=/dev/rac/srvcfg
對於節點1可以設定ORACLE_SID=rac1,節點2設定ORACLE_SID=rac2。其他引數可以完全一致。其中DISPLAY、DBCA_RAW_CONFIG和SRVM_SHARED_CONFIG只需要在Oracle的安裝節點上設定,對於非安裝節點不是必須的。
下面需要建立裸裝置或配置CFS,這個測試採用的是裸裝置安裝。首先是配置共享儲存,建立physical volumn,然後建立logic volumn:
利用pvcreate和vgcreate命令建立所需的邏輯卷組datavg,然後利用lvcreate命令為每個資料檔案、日誌檔案、控制檔案和SPFILE檔案建立邏輯卷,對於預設情況,需要建立類似下列的邏輯卷:
lvcreate -n /dev/datavg/testrac_raw_system_4g -L 4g datavg
lvcreate -n /dev/datavg/testrac_raw_undotbs1_4g -L 4g datavg
lvcreate -n /dev/datavg/testrac_raw_undotbs2_4g -L 4g datavg
lvcreate -n /dev/datavg/testrac_raw_temp_4g -L 4g datavg
lvcreate -n /dev/datavg/testrac_raw_xdb_1g -L 1g datavg
lvcreate -n /dev/datavg/testrac_raw_example_1g -L 1g datavg
lvcreate -n /dev/datavg/testrac_raw_cwmlite_500m -L 500m datavg
lvcreate -n /dev/datavg/testrac_raw_drsys_500m -L 500m datavg
lvcreate -n /dev/datavg/testrac_raw_odm_500m -L 500m datavg
lvcreate -n /dev/datavg/testrac_raw_redo_1_1_500m -L 500m datavg
lvcreate -n /dev/datavg/testrac_raw_redo_1_2_500m -L 500m datavg
lvcreate -n /dev/datavg/testrac_raw_redo_1_3_500m -L 500m datavg
lvcreate -n /dev/datavg/testrac_raw_redo_2_1_500m -L 500m datavg
lvcreate -n /dev/datavg/testrac_raw_redo_2_2_500m -L 500m datavg
lvcreate -n /dev/datavg/testrac_raw_redo_2_3_500m -L 500m datavg
lvcreate -n /dev/datavg/testrac_raw_indx_100m -L 100m datavg
lvcreate -n /dev/datavg/testrac_raw_tools_100m -L 100m datavg
lvcreate -n /dev/datavg/testrac_raw_users_100m -L 100m datavg
lvcreate -n /dev/datavg/testrac_raw_control1_100m -L 100m datavg
lvcreate -n /dev/datavg/testrac_raw_control2_100m -L 100m datavg
lvcreate -n /dev/datavg/testrac_raw_control3_100m -L 100m datavg
lvcreate -n /dev/datavg/testrac_raw_spfile_100m -L 100m datavg
lvcreate -n /dev/datavg/srvcfg -L 100m datavg
lvcreate -n /dev/datavg/quorum -L 100m datavg
上述操作只需要在一個節點上完成。
由於Oracle不能直接使用這種邏輯卷,必須將邏輯卷繫結到裸裝置上。
在兩個節點上對上面所有的邏輯卷執行裸裝置的繫結工作,類似語法如下:
/usr/bin/raw /dev/raw/raw2 /dev/datavg/quorum
/usr/bin/raw /dev/raw/raw3 /dev/datavg/testrac_raw_system_4g
/usr/bin/raw /dev/raw/raw4 /dev/datavg/testrac_raw_undotbs1_4g
.
.
.
並將裸裝置屬主修改為oracle:
chown oracle.dba /dev/raw/raw2
chown oracle.dba /dev/raw/raw3
chown oracle.dba /dev/raw/raw4
.
.
.
由於raw2之類的名稱很難記憶,可以使用下列命令建立有意義的連結:
ln -s -f /dev/raw/raw2 /dev/rac/quorum
ln -s -f /dev/raw/raw3 /dev/rac/testrac_raw_system_4g
ln -s -f /dev/raw/raw4 /dev/rac/testrac_raw_undotbs1_4g
.
.
.
上面的/dev/raw目錄或/dev/rac目錄如果不存在可以透過mkdir自己建立。
為了保證裸裝置在重啟後仍然生效,將下列內容新增到每個節點的/etc/sysconfig/rawdevices檔案中:
/dev/raw/raw2 /dev/datavg/quorum
/dev/raw/raw3 /dev/datavg/testrac_raw_system_4g
/dev/raw/raw4 /dev/datavg/testrac_raw_undotbs1_4g
.
.
.
另外編輯/home/oracle/mapfile檔案,內容如下:
system=/dev/rac/testrac_raw_system_4g
undotbs1=/dev/rac/testrac_raw_undotbs1_4g
undotbs2=/dev/rac/testrac_raw_undotbs2_4g
temp=/dev/rac/testrac_raw_temp_4g
xdb=/dev/rac/testrac_raw_xdb_1g
example=/dev/rac/testrac_raw_example_1g
cwmlite=/dev/rac/testrac_raw_cwmlite_500m
drsys=/dev/rac/testrac_raw_drsys_500m
odm=/dev/rac/testrac_raw_odm_500m
redo1_1=/dev/rac/testrac_raw_redo_1_1_500m
redo1_2=/dev/rac/testrac_raw_redo_1_2_500m
redo1_3=/dev/rac/testrac_raw_redo_1_3_500m
redo2_1=/dev/rac/testrac_raw_redo_2_1_500m
redo2_2=/dev/rac/testrac_raw_redo_2_2_500m
redo2_3=/dev/rac/testrac_raw_redo_2_3_500m
indx=/dev/rac/testrac_raw_indx_100m
tools=/dev/rac/testrac_raw_tools_100m
users=/dev/rac/testrac_raw_users_100m
control1=/dev/rac/testrac_raw_control1_100m
control2=/dev/rac/testrac_raw_control2_100m
control3=/dev/rac/testrac_raw_control3_100m
spfile=/dev/rac/testrac_raw_spfile_100m
這裡面的配置是為了DBCA可以為對應的資料檔案設定相應的裸裝置。這個檔案可以只存在於安裝Oracle的節點上。
至此,準備工作基本完成,準備開始安裝。
前面說明了安裝的前期準備工作,下面開始正式安裝。首先需要安裝的是Oracle Cluster Manager軟體,PUBLIC NODE 1和2分別填入兩個伺服器的主機名GPOLNX、GPOLNX2,在PRIVATE NODE 1和2分別填入inter-gpo1、inter-gpo2,在QUORUM DISK的地方填入已經配置好的裸裝置:/dev/datavg/quorum。
安裝完成以後,需要在每個節點配置hangtimer-check模組:REDHAT AS4 FOR X86_64中已經包含了這個模組,檢查hangtimer-check是否被載入,如果沒有需要將其載入:
# lsmod
Module Size Used by
hangcheck_timer 5337 0
.
.
.
如果在Module模組中沒有看到,需要使用下面的方法將其載入:
# modprobe hangcheck-timer
並修改/etc/rc.local檔案新增上述的命令,確保重啟後也可以載入該模組
修改每個節點的$ORACLE_HOME/oracm/admin/cmcfg.ora檔案,包含內容類似於:
ClusterName=Oracle Cluster Manager, version 9i
MissCount=210
PrivateNodeNames=inter-gpo1 inter-gpo2
PublicNodeNames=GPOLNX GPOLNX2
ServicePort=9998
CmDiskFile=/dev/rac/quorum
HostName=GPOLNX
KernelModuleName=hangcheck-timer
其中大部分內容在ORACM安裝的過程中已經配置好了,主要修改的地方包括新增KernelModuleName模組和修改MissCount的值。
然後進入$ORACLE_HOME/oracm/bin目錄,並切換為root許可權執行:
$ su root
# ./ocmstart.sh
注意,是su root而不是su – root。
啟動oracm之後,可以透過ps –ef|grep oracm來檢查啟動是否成功。注意,多檢查幾次,很可能oracm啟動後幾秒中內發現錯誤並退出。如果發現oracm退出,可以檢查$ORACLE_HOME/oracm/log/cm.log檔案。裡面會有詳細的日誌。
啟動好ORACM後,就可以安裝ORACLE RAC軟體了,整個安裝過程除了比9I的安裝多了一個選擇CLUSTER NODE的介面,其他幾乎完全一致。
安裝顯示WELCOME介面,點選NEXT,就會出現節點選擇介面,如果這個節點選擇介面沒有出現的話,說明前面的配置出現了問題。這時可以使用lsnodes命令進行檢查。
RAC的安裝和9i的安裝一樣,也會出現LD_ASSUME_KERNEL設定過高導致檔案複製時沒有響應,以及isqlplus和rdbms的編譯出錯問題。其解決方法在Redhat AS4上安裝64位Oracle9204這篇文章中,這裡不在重複描述了,需要注意的是,對於最後的修改gcc、g++以及重新make失敗的物件等操作,必須在兩個節點上都執行。
安裝完成之後,需要在兩個節點上全都啟動gsd,命令如下:
% gsdctl start
透過圖形化介面的netca配置好監聽和服務名,並在兩個節點上分別檢查,listener是否已經啟動,如果沒有啟動,手工將其啟動。然後就開始利用dbca來建立資料庫。
如果前面初始化shell中的DBCA_RAW_CONFIG和SRVM_SHARED_CONFIG 設定正確,且mapfile檔案的內容也正確,那麼dbca建庫不會有多大的問題,Oracle會自動為每個相應的檔案指定裸裝置。
總結一下在安裝過程中碰到的幾個問題:
第一個碰到的問題是oracm無法啟動,在cm.log中發現下列的錯誤:
>ERROR: OemInit2: Attempting to open the CMDiskFile for a multi-node RAC on a non-NFS, non-OCFS, or non-raw device cluster, tid = main:1120480 file = oem.c, line = 494 {Wed Jul 27 15:59:55 2005 }
>ERROR: OemInit2: If the CMDiskFile is supposed to be an NFS or OCFS file, please make sure that the relevant shared file system is mounted properly, tid = main:1120480 file = oem.c, line = 495 {Wed Jul 27 15:59:55 2005 }
>ERROR: OemInit2: If the CMDiskFile is supposed to be a raw device, please make sure that it has been created properly, tid = main:1120480 file = oem.c, line = 496 {Wed Jul 27 15:59:55 20 05 }
這是由於CMDiskFile引數設定的檔案格式有問題。開始的時候,只建立了邏輯卷,沒有繫結到裸裝置,因此Oracle在檢測檔案型別時報錯。
第二個碰到的問題是hangcheck-timer無法啟動的問題:
根據Oracle文件給出的方法:
# /sbin/insmod hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
得到下面的錯誤資訊:
insmod: can't read 'hangcheck-timer': No such file or directory
必須透過modprobe hangcheck-timer方式才能載入成功。
第三個問題是在第二個節點上啟動gsdctl start時碰到的。
出現的錯誤資訊為:
PRKC-1021 : Problem in the clusterware Failed to get list of active nodes from clusterware
把metalink相關的資訊都看了一遍,沒有發現和當前現象比較一致的。但是其中有一個文件建議用lsnodes檢查節點的狀態。
在節點一上執行lsnodes結果如下:
$ lsnodes
GPOLNX
GPOLNX2
而節點二上執行lsnodes則報錯:
lsnodes.bin: cannot initialize cluster interface
又在metalink上查詢了半天的相關錯誤,但是發現都不對症,結果最後發現問題居然是oracm沒有啟動。
這個問題前面也提到了,當時啟動了oracm後,還透過ps –ef|grep oracm檢查了一下,沒想到,oracm的檢查狀態需要一些時間,在檢查的時候程式還存在,隨後就退出了。導致我在檢查gsd和lsnodes上花費了大量的時間。
從cm.log中發現錯誤的資訊是:
>TRACE: CheckDskInfo(): node(0) mode(3) ALIVE, tid = PollingThread:81926 file = oem.c, line = 1160 {Tue Sep 26 09:39:06 2006 }
>ERROR: DoSyncUpdate(): OEM check signaled shutdown, tid = PollingThread:81926 file = nmmember.c, line = 1559 {Tue Sep 26 09:39:06 2006 }
而現象就比較奇怪了。不管節點是NODE1還是NODE2,只要這個節點先啟動oracm程式,那麼另一個節點在啟動程式的時候就會報錯。
在網上搜尋了很久,也嘗試了裡面給出的一些解決方案,比如:關閉iptables服務等,但是並沒有什麼效果。
最後還是biti幫我指出了問題,在最開始配置的時候,我想取巧,沒有為兩個節點設定單獨的內網地址和名稱,在PUBLIC NODE和PRIVATE NODE的地方填入的都是GPOLNX和GPOLNX2。
按照第一篇文章中給出的配置進行修改後,問題解決。
第四個問題是在DBCA時碰到的PRKR-1064 error in a RAC environment錯誤
Metalink上有一篇文章專門介紹這個錯誤的解決方法:Doc ID: Note:178435.1。安裝裡面的步驟一步步的檢查,結果發現/var/opt/oracle/srvConfig.loc檔案和$ORACLE_HOME/srvm/config/srvConfig.loc檔案中srvconfig_loc的設定有問題,應該設定為srvconfig_loc=/dev/rac/srvcfg。
將檔案修改正確後,執行gsdctl stop命令,然後使用命令srvconfig -init –f重新初始化SRVM檔案。
使用gsdctl start命令啟動GSD,然後重新建庫,問題解決。
另外在建立資料庫之前,如果沒有保證節點二上的listener啟動的話,Oracle會報錯,說明node2上的監聽沒有啟動。並且,一些最後的修改可能無法在instance2上進行,比如修改sys使用者的密碼的操作。
最後總結一下這次安裝的幾點心得:
1.Oracle的otn上的官方文件基本上沒有多大的作用,尤其是針對LINUX平臺的安裝。如果想要找參考資料,一定要在metalink上去找對應平臺的安裝手冊。
對於一個沒有裝過RAC的新手,只參考otn上的安裝文件,估計這輩子也安裝不上。
2.作業系統的知識很重要。
作業系統相關的知識一直是我的弱項,而安裝過程可以說是和作業系統打交道最多的過程,我在安裝過程中碰到的很多的棘手問題對於一個作業系統熟悉的人來說並不算是問題。這也是一些對作業系統很熟但對Oracle並不很瞭解的系統管理員可以輕鬆的完成Oracle RAC的安裝的原因。
3.無論幹什麼不要輕易放棄,碰到挫折就放棄是不會有提高的。
前面提到了,我有幾次都打算放棄,其實我說的放棄是有原因的。目前測試的裝置我只能使用兩天,兩天之後就要拿走挪做它用。而且我手裡還有比較重要的事情的工作必須在短期內完成。如果沒有在兩天之內完成RAC的安裝測試,那麼這個測試就意義不大了,而且這兩天的時間還是從其他工作中擠出來的。所以有幾次碰到了一些難以解決的問題時,我不止一次的想要放棄。不過,所幸最終堅持了下來,並且安裝測試也成功了。什麼事情不到最後關頭都不要輕易放棄。
4.資源很重要
無論是網路上的資源,還是你的同行朋友。有時候一個有經驗的人的一句話可以解決你困擾已久的問題。
當然,這裡的意思並不是說,碰到不會的問題就去問。其實,要不是時間緊迫,我也不會去輕易請教別人,起碼不會那麼快就去請教別人。有經驗的人告訴你的方法固然管用。但是如果你是透過無數次的碰壁,想盡一切辦法而最終解決了問題,那麼收穫可能不僅僅是知道了一個方法而已,而是加深了對這個問題的總的理解。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7185924/viewspace-977449/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [zt] Redhat AS4上安裝64位Oracle9204RedhatOracle
- redhat as4 安裝oracle 9204 rac啟動Oracle Cluster Manager報錯!RedhatOracle
- 安裝Oracle10201 for REDHAT AS4 x86_64OracleRedhat
- RedHat Advance Server上安裝Oracle 9204 RAC參考手冊(轉)RedhatServerOracle
- RedHat Advance Server上安裝Oracle 9204 RAC參考手冊(zt)RedhatServerOracle
- RedHat AS4 下安裝oracle10gRedhatOracle
- mysql在redhat as4上的安裝過程MySqlRedhat
- REDHAT as5上安裝Oracle9204的失敗經歷RedhatOracle
- oracle10g for redhat as4 安裝過程。OracleRedhat
- redhat AS4 下MYSQL 5.0的安裝RedhatMySql
- 在FC5上安裝oracle 9204Oracle
- redhat 6.4 安裝oracle11g RAC 安裝RDACRedhatOracle
- 紅旗linux 4.1上安裝oracle 9204LinuxOracle
- oracle9204在redhat enterprise linux 5中安裝OracleRedhatLinux
- redhat5 x86_64 + oracle10g RAC + ASMRedhatOracleASM
- redhat7.6安裝Oracle11G RACRedhatOracle
- RedHat6.5 安裝Oracle 12c RACRedhatOracle
- redhat6.2安裝oracle11.2.0.3RACRedhatOracle
- RedHat Enterprise AS4 硬碟安裝心得(轉)Redhat硬碟
- vmware環境oracle 10.2.0 rac 在linux as4 64bit上的安裝OracleLinux
- RedHat Enterprise AS4硬碟安裝步驟(轉)Redhat硬碟
- pex+linux redhat as4自動安裝薦LinuxRedhat
- Oracle安裝部署之linux(redhat/centos)快速安裝oracle 11g racOracleLinuxRedhatCentOS
- Oracle:Redhat 7 + Oracle RAC 11g 安裝 bug 總結OracleRedhat
- RedHat 安裝11g racRedhat
- oracle 10G RAC for redhat as5.3 安裝說明Oracle 10gRedhat
- RedHat上靜默安裝Oracle11gRedhatOracle
- 在Redhat 9上安裝 Oracle 817心(轉)RedhatOracle
- redhat as4 64位安裝oracle10.2.0.1建庫的時候報錯RedhatOracle
- RHEL4-ASU2-i386上安裝oracle9204Oracle
- Redhat 5 上安裝yumRedhat
- Redhat 5.4 + ASM + RAW+ Oracle 10g RAC 安裝文件RedhatASMOracle 10g
- oracle 9204 for linuxAS4安裝OracleLinux
- Oracle 10g 在linux redhat as4 系統安裝圖解全過程Oracle 10gLinuxRedhat圖解
- 在Redhat 5.5 上安裝 Oracle 10R2RedhatOracle
- 在RedHat EL AS 3上安裝Oracle9.2.0(轉)RedhatOracle
- Redhat 6 Oracle 11g RAC安裝注意事項彙總RedhatOracle
- VMware下RedHat安裝Oracle 9i RAC全攻略(轉)RedhatOracle