2010年10月14日 星期四

Windows XP + VMWare Server 1.0.6 + CentOS 5.2 + Oracle 10g Rac (10.2.0.1)安裝文章 3-安裝Clusterware

Windows XP + VMWare Server 1.0.6 + CentOS 5.2 + Oracle 10g Rac (10.2.0.1)安裝文章 3-安裝Clusterware
七、安裝Clusterware
注意:時間同步很重要,否則安裝過程出錯.因為vmware的時間問題,我在安裝到同步文件到rac2這步時,每2秒同步一次時間,不然安裝出錯.     在這項配置中,除非特別說明,所有操作都是基於oracle用戶的.
1、利用ftp,把10201_clusterware_linux32.zip下載到rac1上(用oracle用戶下載),並解壓
$ cd /home/oracle
$ unzip -q 10201_clusterware_linux32.zip
$ rm -rf 10201_clusterware_linux32.zip

2、檢查安裝環境
在安裝crs之前,建議先利用CVU(Cluster Verification Utility)檢查CRS的安裝前環境(需要先安裝cvuqdisk-1.0.1-1.rpm ,位於clusterware/rpm/目錄下)
[oracle@rac1]$ /home/oracle/clusterware/cluvfy/runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose

需要注意幾點,其返回的信息中有幾個錯誤可忽略~~

.與VIP查找一組適合的接口有關,錯誤信息如下:
錯誤信息如下:
ERROR:
Could not find a suitable set of interfaces for VIPs.

這是一個bug,Metalink中有詳細說明,doc.id:338924.1,如說明中所述,可以忽略該錯誤,沒什麼問題.

.有一堆包的驗證會出現錯誤,要么提示找不到,要么是版本不對.例如:
Check: Package existence for "compat-gcc-7.3-2.96.128"
   Node Name Status Comment
   ------------------------------ -------------------- ---------- ----------------
   node2 missing failed
   node1 missing failed
Result: Package existence check failed for "compat-gcc-7.3-2.96.128".

...........
...........
這之類的吧

不用管它們,這也是一個BUG,只要確認節點中都已經安裝了正確版本的compat-*包即可.

.內存檢查失敗
可以忽略的錯誤,內存差一點並不會影響到crs的安裝,只是慢一些而已.


2、開始安裝crs

會遇到Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2這個錯誤
解決方法如下:(這個方法還沒有成功,還沒有找到CentOS具體的配置,你在運行runInstaller的時候,需要加上-ignoreSysPrereqs參數,系統檢查的時候,強制下一步)
$cd /home/oracle/clusterware/install
$cp oraparam.ini oraparam.ini.bak
$gedit oraparam.ini
### #[Certified Versions]
Linux=redhat-3,SuSE-9,redhat-4,centos-5,UnitedLinux-1.0,asianux-1,asianux-2]
再添加
[Linux-CentOS release 5.2 (Final)-optional]
TEMP_SPACE=80
SWAP_SPACE=150
MIN_DISPLAY_COLORS=256

解決中文亂碼的方法:安裝JDK方法
把jdk-1_5_0_16-linux-i586-rpm.bin從SUN公司網站下下來以後,ftp到rac1,rac2上(root權限)
# cd /root
# chmod 777 jdk-1_5_0_16-linux-i586-rpm.bin
# ./jdk-1_5_0_16-linux-i586-rpm.bin
按默認到文件最後,輸入yes就可以了.
# rm -rf jdk-1_5_0_16-linux-i586-rpm.bin
# exit

如果使用中文安裝,安裝出現的亂碼主要原因來自於oracle自帶的jre,所以我們首先安裝自己的java的jre安裝好後 (RAC2也必須安裝)
$ cd /home/oracle/clusterware
$ export ORACLE_HOME=/home/oracle/app/crs
$./runInstaller -ignoreSysPrereqs -jreLoc /usr/java/jdk1.5.0_16/jre

rac的安裝並沒有太明顯的主從關係,一般我們認為,在哪個上面執行了安裝,哪個就是主(實際也不完全是這樣,主節點安裝的時候,也會自動將文件複製到其它節點的)
這裡我們選擇rac1進行安裝~~


安裝圖形界面的步驟:
下一步(N) -->
下一步(N) -->
下一步(N) -->
是(Y) -->
(1個警告,1個要求待驗證.)下一步(N) -->
是(Y) -->
添加(A) -->
從上到下,依次是: rac2.localdomain , rac2-priv.localdomain , rac2-vip.localdomain -->
確定(O) -->
下一步(N) -->
選中eth0,點擊編輯(E) -->
把專用選擇成公用-->
確定-->
下一步(N) -->
外部冗餘(E) -->
在空白處輸入/dev/raw/raw1 -->
下一步(N) -->
外部冗餘(E) -->
在空白處輸入/dev/raw/raw2 -->
下一步(N) -->
(如果這時報請檢查/dev/raw/raw2是否有oracle權限時
在rac1,rac2上執行:
# chown oralce:oinstall /dev/raw/raw2
# chmod 660 /dev/raw/raw2
就行了.
下一步(N) -->
)
安裝(I),現在等著,大概1小20時分鐘時間


關於磁盤冗餘
指定OCR使用外部冗餘還是內部冗餘,如果服務器作了raid,不需要內部冗餘,直接選擇外部冗餘.
指定表決磁盤(所謂表決磁盤,實際就是一個文件),仍然使用外部冗餘.


3、(一定會碰到這個錯誤,請在rac1的root.sh執行之前做,rac1,rac2都要做)
錯誤描述:在/home/oracle/app/crs/bin下,運行vipca就會有這個錯誤
(這個錯誤一定會碰見,因此在rac1在執行./root.sh之後,請先解決這個錯誤)
/home/oracle/app/crs/jdk/jre//bin/java: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory
可以按照如下方式解決:

修改vipca文件(需要在兩個節點上操作)
[oracle@rac2 bin]$ cp /home/oracle/app/crs/bin/vipca /home/oracle/app/crs/bin/vipca.bak
[oracle@rac2 bin]$ gedit /home/oracle/app/crs/bin/vipca
找到如下內容:
       Remove this workaround when the bug 3937317 is fixed
       arch=`uname -m`
       if [ "$arch" = "i686" -o "$arch" = "ia64" ]
       then
             LD_ASSUME_KERNEL=2.4.19
             export LD_ASSUME_KERNEL
       fi
       #End workaround
在fi後新添加一行:
unset LD_ASSUME_KERNEL

以及srvctl文件(需要在兩個節點上操作)
[oracle@rac2 bin]$ cp /home/oracle/app/crs/bin/srvctl /home/oracle/app/crs/bin/srvctl.bak
[oracle@rac2 bin]$ gedit /home/oracle/app/crs/bin/srvctl
找到如下內容:
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
同樣在其後新增加一行:
unset LD_ASSUME_KERNEL

4、在rac1,rac2上,執行orainstRoot.sh和root.sh腳本.
$ su - root
# cd /home/oracle/app/oracle/oraInventory
# ./orainstRoot.sh
# cd /home/oracle/app/crs
# ./root.sh


遇到Native: listNetInterfaces:[3]的解決辦法:(這個的時機是在rac1,rac2都執行完root.sh後,點確定之前,如果錯誤沒有出現,可以不做這一步)
現象:
[root@rac2 bin]# ./vipca
Error 0(Native: listNetInterfaces:[3])
   [Error 0(Native: listNetInterfaces:[3])]
解決辦法:
[root@rac2 bin]# ./oifcfg iflist
eth0 192.168.1.0
eth1 10.0.0.0
[root@rac2 bin]# ./oifcfg setif -global eth0/192.168.1.0:public
[root@rac2 bin]# ./oifcfg setif -global eth1/10.0.0.0:cluster_interconnect
[root@rac2 bin]# ./oifcfg getif
eth0 192.168.1.0 global public
eth1 10.0.0.0 global cluster_interconnect
然後新開一個終端,要運行
# unset LANG
# /home/oracle/app/crs/bin/vipca
進行配置


遇到:IP地址"rac1-vip"已被使用.請輸入一個未使用的IP地址.的解決辦法:
手工重新配置VIP
使用root用戶,在rac2上操作(需要圖形界面)(這個的時機是在rac1,rac2都執行完root.sh後,點確定之前)
[root@rac2 bin]# unset LANG
[root@rac2 bin]# /home/oracle/app/crs/bin/vipca
Next
選擇eth0
填寫rac1和rac2的vip地址,如:
rac1 rac1-vip.localdomain 192.168.1.200 255.255.255.0
rac2 rac2-vip.localdomain 192.168.1.201 255.255.255.0
Next
vipca開始自動配置

遇到:
Warning: Cannot convert string "-isas-song ti-medium-r-normal--*-140-*-*-c-*-
gb2312.1980-0" to type FontStruct的解決辦法:
先敲入unset LANG以取消語言設定,然後出來的GUI界面就是英文的,我想只能這樣好受一點,總比亂碼好一點吧.


************************************************** ************************
啟動vip時失敗報錯,查看日誌/home/oracle/app/crs/log/rac1/racg/ora.rac1.vip.log
Default gateway is not defined
設好網關,重試,OK

啟動ons失敗報錯,查看日誌/home/oracle/app/crs/log/rac1/racg/ora.rac1.ons.log
Failed to get IP for localhost
vi /etc/hosts
添加127.0.0.1 rac1 localhost.localdomain localhost
重試,OK
配置好以後會有一個eth0:1的虛擬網卡,ip地址為vip
重試oracle cluster verfication utility ,通過,OK
被*包圍的這部分我安裝的時候沒有出現,但我保留.

host and port number already configrued in OCR
************************************************** ************************

5、最後一步oracle cluster verfication utility可能會失敗:

Checking existence of VIP node application (required)
Check failed.
Check failed on nodes:
         rac2,rac1

執行成功後返回圖形界面,點擊ok,這時開始執行環境配置.

如果在/home/oracle/app/oracle/oraInventory/logs/installActions...文件中
報WARNING: RAC2.localdomain:6200 already configured.WARNING: RAC1.localdomain:6200 already configured.的錯誤
請執行
$cd /home/oracle/app/crs/bin
$racgons remove_config rac1.localdomain:6200
$racgons remove_config rac2.localdomain:6200
只需要在rac1上執行就行.
至此,Clusterware安裝完畢.

重新啟動兩台操作系統
CRS安裝結束
從/home/oracle/app/crs/bin目錄中運行olsnodes驗證安裝已成功,例如:
用oracle用戶登錄
$ cd /home/oracle/app/crs/bin
$ olsnodes
rac1
rac2
Once CRS已安裝並運行;

禁止Clusterware在系統重啟後自動啟動的方法:
# /etc/init.d/init.crs disable
啟動Clusterware在系統重啟後自動啟動的方法:
# /etc/init.d/init.crs enable


[oracle@rac1 ~]$ /home/oracle/app/crs/bin./crs_stat -t
Name Type Target State Host
-------------------------------------------------- ----------
ora.rac1.gsd application ONLINE UNKNOWN rac1
ora.rac1.ons application ONLINE UNKNOWN rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora.rac2.gsd application ONLINE UNKNOWN rac2
ora.rac2.ons application ONLINE UNKNOWN rac2
ora.rac2.vip application ONLINE ONLINE rac2

[oracle@rac1 bin]$ crs_stop -all
Attempting to stop `ora.rac1.vip` on member `rac1`
Attempting to stop `ora.rac2.vip` on member `rac2`
Stop of `ora.rac2.vip` on member `rac2` succeeded.
Stop of `ora.rac1.vip` on member `rac1` succeeded.

[oracle@rac1 bin]$ crs_start -all
Attempting to start `ora.rac1.vip` on member `rac1`
Attempting to start `ora.rac2.vip` on member `rac2`
Start of `ora.rac1.vip` on member `rac1` succeeded.
Start of `ora.rac2.vip` on member `rac2` succeeded.
上面的這些crs_stat -t輸出是我多次安裝時出錯的狀態, 我裝好了一次,狀態如下:
[oracle@rac1 bin]$ crs_stat -t
Name Type Target State Host
-------------------------------------------------- ----------
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac1

查看CRS服務狀態
[oracle@rac1 bin]$ ./crsctl check crs
CSS appears healthy
CRS appears healthy
EVM appears healthy

結果顯示正確就可以.不報錯的話當然就不需要執行了,如果沒有錯誤你應該也找不到configToolFailedCommands.sh文件.

重新啟動兩台計算機後,如果發現有unknown的狀態,解決方法如下:
[oracle@rac1 bin]$ crs_stop -f ora.rac1.gsd
[oracle@rac1 bin]$ crs_start -f ora.rac1.gsd
crs_stop -f強制關閉,如果不強制-f關閉,那麼實在不知道怎麼辦了.

如果crs_stop -f還是啟動不了的話,請執行以下語句:
停止CRS:
[oracle@rac1 bin]$ /etc/init.d/init.crs stop //或者
[oracle@rac1 bin]$./crsctl stop crs //或者
[oracle@rac1 bin]$ ./crs_stop –all
啟動CRS:
# /etc/init.d/init.crs start //或者
[oracle@rac1 bin]$ ./crsctl start crs
然後等待90秒以後,執行以下指令:
[oracle@rac1 bin]$ ./crsctl check crs
[oracle@rac1 bin]$./crs_stat -t
如果還發現有unknown的狀態,解決方法如下:
[oracle@rac1 bin]$ ./crs_stop -f ora.rac1.gsd //關閉unknown狀態的節點,ora.rac1.gsd這個是我的例子,自己相應地改就是了.
[oracle@rac1 bin]$ ./crs_start -f ora.rac1.gsd
最後實現的效果是:
[oracle@rac1 bin]$ crs_stat -t
Name Type Target State Host
-------------------------------------------------- ----------
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac1

遇到:在運行./olsnodes報:的錯誤時的解決辦法:
[oracle@rac1 bin]$ ./oracleasm scandisks
[oracle@rac1 bin]$ ./oracleasm listdisks
# reboot
重新啟動後,就可以了。

遇到CRS-0184: Cannot communicate with the CRS daemon.的錯誤
解決方法:
$ su - root
# /etc/init.d/init.crs start啟動底層服務,rac1,rac2都要啟動
# exit
等待90秒鐘
(不建議使用以下的解決辦法)
$ cd /home/oracle/app/crs/bin
$ ./crsctl start resources啟動資源
如果還是啟動不了
更改兩個節點的/etc/security/limits.conf
修改下面的配置:

fsize = -1
core = 2097151
cpu = -1
data = -1
rss = -1
stack = -1
nofiles = -1
重新啟動系統:
一切正常:
如果遇到unkown,見上面的解決辦法.
現在可以安裝Oracle RAC軟件的其餘部分了.
************************************************** ********************************************
建議:現在就關機,把rac1,rac2虛擬機備份一個,以防後面做錯,前面的就白做了.
************************************************** ********************************************

沒有留言:

張貼留言