虛擬機器環境下RAC加入節點

tolywang發表於2010-01-05


備註: 以下是虛擬機器環境下的配置,某些配置可能不同與實際的RAC環境。


1. 環境 Linux AS5.3 64bit, Oracle10.2.0.4, 2個節點加入第三個RAC03 。

2. Linux已經安裝完畢,準備配置網路卡(public及private網路卡)。 
-- public網路卡配置 
[root@localhost network-scripts]# vi ifcfg-eth0  -- public網路卡配置
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:0C:29:BF:4A:77
ONBOOT=yes
IPADDR=10.13.67.83
GATEWAY=10.13.67.1
TYPE=Ethernet
USERCTL=no

[root@localhost network-scripts]# ifdown eth0
[root@localhost network-scripts]# ifup eth0 
[root@localhost network-scripts]# ifconfig

-- private網路卡配置 
關閉新節點的Linux系統,關閉新節點RAC03的虛擬機器,準備加入配置private 網路卡,
點選上面的 “Edit virtual machine settings” ,開始配置網路卡。
Add一塊網路卡,由於是用於心跳線,所以可以選用Host-only(當然其實也可以用Bridged).
完成後重新開啟新節點RAC03的虛擬機器。


[root@rac01 network-scripts]# cat ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
HWADDR=00:0c:29:bf:4a:81
IPADDR=192.168.1.13 
TYPE=Ethernet
USERCTL=no

[root@localhost pam.d]# ifdown eth1
[root@localhost pam.d]# ifup  eth1

確認這兩個網路卡與其他兩臺RAC機的IP可以通訊。

 

3. 這時可以使用ssh 登入系統,開始配置系統。

4. 修改hostname , /etc/sysconfig/network 中的hostname 修改為rac03 .

5. 修改核心引數等。

# vi  /etc/sysctl.conf

# Added by DBA for Oracle DB
kernel.shmall = 2097152
kernel.shmmax = 1230708000
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

# vi /etc/security/limits.conf

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536


# vi  /etc/pam.d/login
加入
session    required     pam_limits.so

 


6. # setup disable 去掉一些不需要的服務或防火牆,SELinux等。
開啟ftp, 關閉sendmail等; 還有時區,注意設定正確,

 

7. 重新啟動一下新節點Server, 讓Hostname生效。


8. 調整新節點RAC03的/etc/hosts. 加入1,2,3的

[root@rac03 etc]# cat hosts

127.0.0.1     localhost.localdomain    localhost
10.13.67.81     rac01
192.168.1.11    pri01
10.13.67.91     vip01

10.13.67.82     rac02
192.168.1.12    pri02
10.13.67.92     vip02

10.13.67.83     rac02
192.168.1.13    pri02
10.13.67.93     vip02

 

9. 建立oracle使用者及相關組。

# groupadd  dba 
# groupadd  oper
# useradd  -g dba -G oper oracle
# passwd  oracle

 

10. 設定oracle使用者的.bash_profile環境變數。


11. 建立一些目錄用於安裝oracle軟體及一些軟體放置的地方。

[root@rac03 /]# mkdir -p /u01
[root@rac03 /]# chown -R oracle.dba  /u01

rac03$mkdir -p packages
rac03$ls
packages
rac03$ls -alh
total 16K
drwxr-xr-x  3 oracle dba  4.0K Jan  3 16:00 .
drwxr-xr-x 25 root   root 4.0K Jan  3 15:59 ..
drwxr-xr-x  2 oracle dba  4.0K Jan  3 16:00 packages
rac03$

 

11. 開始準備需要的Linux Packages及OCFS2軟體。這裡假設
這些軟體都已經傳輸到/u01/packages 下面。其實加入新節點RAC03,
新節點上不需要安裝db software及clusterware的,一般都是從其他
存在的節點add ,然後遠端複製到新節點,但是ocfs2軟體及linux package
還是需要安裝。

 

12. 在新節點檢視linux packages,沒有的進行安裝。
[root@rac03 ~]# rpm -q glibc
glibc-2.5-34

[root@rac03 ~]# rpm -q glibc-common
glibc-common-2.5-34

[root@rac03 ~]# rpm -q glibc-devel
glibc-devel-2.5-34

[root@rac03 ~]# rpm -q libXp
package libXp is not installed

需要安裝
[root@rac03 ~]# cd /u01/packages/

[root@rac03 packages]# rpm -ivh libXp-1.0.0-8.1.el5.i386.rpm
warning: libXp-1.0.0-8.1.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:libXp                  ########################################### [100%]

[root@rac03 packages]# rpm -q binutils
binutils-2.17.50.0.6-9.el5

[root@rac03 packages]# rpm -q compat-db
package compat-db is not installed
[root@rac03 packages]# rpm -ivh compat-db-4.2.52-5.1.i386.rpm
warning: compat-db-4.2.52-5.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:compat-db              ########################################### [100%]

[root@rac03 packages]# rpm -q control-center
control-center-2.16.0-16.el5

[root@rac03 packages]# rpm -q  gcc
gcc-4.1.2-44.el5

[root@rac03 packages]# rpm -q  gcc-c++
gcc-c++-4.1.2-44.el5

[root@rac03 packages]# rpm -q  libstdc++
libstdc++-4.1.2-44.el5

[root@rac03 packages]# rpm -q  make
make-3.81-3.el5

[root@rac03 packages]# rpm -q  ksh
ksh-20080202-2.el5

[root@rac03 packages]# rpm -q  sysstat
package sysstat is not installed

[root@rac03 packages]# rpm -ivh sysstat-7.0.2-3.el5.i386.rpm
sysstat-7.0.2-3.el5.i386.rpm: not an rpm package (or package manifest):
複製過來的sysstat 包可能會有問題。
我們直接連線到mount的DVD-ROM安裝這個包。

[root@rac03 Server]# pwd
/media/RHEL_5.3 i386 DVD/Server
[root@rac03 Server]#
[root@rac03 Server]# rpm -ivh sysstat-7.0.2-3.el5.i386.rpm
warning: sysstat-7.0.2-3.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:sysstat                ########################################### [100%]

[root@rac03 Server]# rpm -q gnome-screensaver
gnome-screensaver-2.16.1-8.el5

[root@rac03 Server]# rpm -q  libaio-devel
package libaio-devel is not installed

[root@rac03 Server]# rpm -ivh libaio-devel-0.3.106-3.2.i386.rpm 
warning: libaio-devel-0.3.106-3.2.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:libaio-devel           ########################################### [100%]

[root@rac03 Server]# rpm -q  libaio
libaio-0.3.106-3.2

 


13. 在節點RAC03安裝OCFS2檔案系統軟體 。

[root@rac03 packages]# rpm -ivh ocfs2-tools-1.4.1-1.el5.i386.rpm
Preparing...                ########################################### [100%]
   1:ocfs2-tools            ########################################### [100%]

[root@rac03 packages]# rpm -ivh ocfs2-2.6.18-128.el5-1.4.1-1.el5.i686.rpm
Preparing...                ########################################### [100%]
   1:ocfs2-2.6.18-128.el5   ########################################### [100%]

[root@rac03 packages]# rpm -ivh ocfs2console-1.4.1-1.el5.i386.rpm
Preparing...                ########################################### [100%]
   1:ocfs2console           ########################################### [100%]

 


14.  開始修改其他兩個已經存在的節點1,2 的 /etc/hosts .

10.13.67.81     rac01
192.168.1.11    pri01
10.13.67.91     vip01

10.13.67.82     rac02
192.168.1.12    pri02
10.13.67.92     vip02

10.13.67.83     rac03
192.168.1.13    pri03
10.13.67.93     vip03

 

15. 開始設定遠端複製的ssh 。


在新節點3上配置ssh金鑰認證:

# su - oracle
$ cd  /home/oracle
rac03$mkdir -p  .ssh
rac03$chmod 700  .ssh
rac03$ssh-keygen-t rsa 
rac03$ssh-keygen-t dsa  


16. 然後轉到已經存在的節點比如RAC01上以oracle身份操作(執行過程中,
當訪問遠端節點時可能需要輸入目標節點的密碼):

rac01$ssh rac03 cat /home/oracle/.ssh/id_rsa.pub >>authorized_keys
The authenticity of host 'rac03 (10.13.67.83)' can't be established.
RSA key fingerprint is cb:5e:c3:42:8f:0c:6d:d3:50:9a:1a:be:d3:c8:43:7d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'rac03,10.13.67.83' (RSA) to the list of known hosts.
password:

rac01$ssh rac03 cat /home/oracle/.ssh/id_dsa.pub >>authorized_keys
password:


17. 然後在存在的節點1上傳輸配置好的認證金鑰資訊到節點2及新加入的節點3 。

rac01$scp /home/oracle/.ssh/authorized_keys  rac02:/home/oracle/.ssh/
authorized_keys                                                        100% 2988     2.9KB/s   00:00   
rac01$scp /home/oracle/.ssh/authorized_keys  rac03:/home/oracle/.ssh/ 
password:
authorized_keys                                                        100% 2988     2.9KB/s   00:00   
rac01$

18. 然後在3個節點上執行下面的命令,測試ssh, 並生成know_hosts檔案,某些節點第一次執行上述某些命令時可
能會提示輸入目標節點的密碼,沒有關係,輸入就是。不過執行過一次之後,應該就不會再需要輸入密碼了

rac01$ssh rac01 date
Sat Jan  2 08:01:26 MST 2010
rac01$ssh rac02 date
Sat Jan  2 12:46:57 MST 2010
rac01$ssh rac03 date
Sun Jan  3 16:33:42 MST 2010
rac01$


rac02$ssh rac01 date
Sat Jan  2 08:02:13 MST 2010
rac02$ssh rac02 date
Sat Jan  2 12:49:11 MST 2010
rac02$ssh rac03 date
The authenticity of host 'rac03 (10.13.67.83)' can't be established.
RSA key fingerprint is cb:5e:c3:42:8f:0c:6d:d3:50:9a:1a:be:d3:c8:43:7d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'rac03,10.13.67.83' (RSA) to the list of known hosts.
Sun Jan  3 16:35:36 MST 2010

同樣在rac03 上執行這些命令。 確認都不需要輸入密碼了就表示ssh 可以遠端複製檔案了。

 

19. 開始配置OCFS2 檔案系統 。

要加入這個節點的ocfs configure 資訊到 /etc/ocfs2/cluster.conf
我們VNC圖形介面在已經存在的節點1上 # ocfs2console
在彈出的畫面中選擇cluster -> Node configuration
ADD 加入節點3的資訊,然後apply . 這時候進入節點1的/etc/ocfs2/cluster.conf可以
看到配置資訊改變了,變成3個節點。

然後再次 # ocfs2console , cluster -> Propagate Configuration 將配置檔案cluster.conf
自動傳輸到節點2及新節點3 上,我們可以到節點2,3 上同樣目錄下檢視。
下面在新節點3上操作:

[root@rac03 /]# /etc/init.d/o2cb enable
Writing O2CB configuration: OK
Loading filesystem "configfs": OK
Mounting configfs filesystem at /sys/kernel/config: OK
Loading filesystem "ocfs2_dlmfs": OK
Creating directory '/dlm': OK
Mounting ocfs2_dlmfs filesystem at /dlm: OK
Starting O2CB cluster ocfs2: OK


[root@rac03 /]# /etc/init.d/o2cb configure
Configuring the O2CB driver.

This will configure the on-boot properties of the O2CB driver.
The following questions will determine whether the driver is loaded on
boot.  The current values will be shown in brackets ('[]').  Hitting
without typing an answer will keep that current value.  Ctrl-C
will abort.

Load O2CB driver on boot (y/n) [y]: y
Cluster stack backing O2CB [o2cb]:
Cluster to start on boot (Enter "none" to clear) [ocfs2]:
Specify heartbeat dead threshold (>=7) [31]: 61
Specify network idle timeout in ms (>=5000) [30000]:
Specify network keepalive delay in ms (>=1000) [2000]:
Specify network reconnect delay in ms (>=2000) [2000]:
Writing O2CB configuration: OK
Cluster ocfs2 already online
[root@rac03 /]# /etc/init.d/o2cb  stop
Stopping O2CB cluster ocfs2: OK
Unmounting ocfs2_dlmfs filesystem: OK
Unloading module "ocfs2_dlmfs": OK
Unmounting configfs filesystem: OK
Unloading module "configfs": OK


[root@rac03 /]# /etc/init.d/o2cb  stop
Stopping O2CB cluster ocfs2: OK
Unmounting ocfs2_dlmfs filesystem: OK
Unloading module "ocfs2_dlmfs": OK
Unmounting configfs filesystem: OK
Unloading module "configfs": OK


[root@rac03 /]# /etc/init.d/o2cb  start
Loading filesystem "configfs": OK
Mounting configfs filesystem at /sys/kernel/config: OK
Loading filesystem "ocfs2_dlmfs": OK
Mounting ocfs2_dlmfs filesystem at /dlm: OK
Starting O2CB cluster ocfs2: OK

 

20. 開始配置共享磁碟 (這裡是虛擬機器共享磁碟設定方式,和實體SAN不一樣) 。

建立一個資料夾(這裡節點1,2共享的磁碟即是節點3要掛載的,所以不用新建): 
E:\VitrualMachine\ShareDisks

E:\Program Files\VMware\VMware Workstation>vmware-vdiskmanager.exe -c -s 10Gb -a
 lsilogic  -t  2   "E:\VitrualMachine\ShareDisks"\ShareDisk1.vmdk

E:\VitrualMachine\ShareDisks 下會生成兩個檔案。


關閉新節點所在Linux系統及所在的虛擬機器(如果有其他linux系統也最好一併關閉),關閉虛擬機器程式 :

到虛擬機器目錄比如 E:\VitrualMachine\RAC03, 直接編輯新節點的*.vmx檔案, 加上語句(所有虛擬機器都要做).

disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"

scsi1.present = "TRUE"
scsi1.virtualDev = "lsilogic"
scsi1.sharedBus = "virtual"

scsi1:1.present = "TRUE"
scsi1:1.mode = "independent-persistent"
scsi1:1.filename = "E:\VitrualMachine\ShareDisks\ShareDisk1.vmdk"
scsi1:1.deviceType = "disk"


然後開啟虛擬機器程式,檢視每個節點虛擬機器Devices部分。


在新節點上 [root@rac03 ~]# fdisk -l 可以看到共享磁碟,我們需要到新節點上/etc/fstab
中加入掛載指令碼。

先在新節點上建立掛載的目錄 :
[root@rac03 ~]# mkdir -p  /ocfs_data  /ocfs_index  /ocfs_ctrl_redo
[root@rac03 ~]# chown -R oracle.dba  /ocfs_data  /ocfs_index  /ocfs_ctrl_redo 

在新節點/etc/fstab中加入:
/dev/sdb1              /ocfs_data            ocfs2  _netdev,datavolume,nointr  0 0
/dev/sdb2              /ocfs_index           ocfs2  _netdev,datavolume,nointr  0 0
/dev/sdb3              /ocfs_ctrl_redo       ocfs2  _netdev,datavolume,nointr  0 0

 

21. 重新啟動三個節點,檢視三個節點共享磁碟的掛載情況。


22. 新增clusterware到新節點,在節點1上執行:

rac01$/u01/packages/clusterware/cluvfy/runcluvfy.sh  stage -pre crsinst -n rac03 -verbose

如果返回資訊中提示“Could not find a suitable set of interfaces for VIPs.”,可以忽略該錯誤
資訊,這是一個bug,Metalink中有詳細說明,doc.id:338924.1。 
參考  http://space.itpub.net/7607759/viewspace-620131 

 

23. 在節點1上使用vnc圖形介面,準備安裝clusterware到新節點3上。

$ cd  /u01/product/crs/oui/bin 
$ ./addNode.sh   介面中加入節點3的一些資訊,然後安裝(其實主要是從節點1複製檔案到遠端新
節點),然後按順序執行以下指令碼(root):


節點3上執行orainstRoot.sh;
節點1上執行rootaddnode.sh;
節點3上執行root.sh;  --  注意:執行這個指令碼之前需要更改vip中的程式碼 (對應一個bug:3937317)


修改VIP檔案: # vi /u01/product/crs/bin/vipca  在fi後面加入  unset LD_ASSUME_KERNEL
注意scrctl也需要更改一下:   # vi /u01/product/crs/bin/srvctl  在export後面加入
 unset LD_ASSUME_KERNEL , 然後應該是VIPCA的配置畫面(如果沒有出現,需要手工在新節點執行
vipca:  到/u01/product/crs/bin下#./vipca), 完成後回去clusterware安裝介面點選OK . 

24. 接下來需要將新節點的ONS(Oracle Notification Services)配置資訊寫入OCR(Oracle Cluster Register),
在節點1執行指令碼如下:

rac01$/u01/product/crs/bin/racgons add_config  rac03:6200

25. 至此,新節點的CLUSTERWARE配置完成,要檢查安裝的結果,可以在新節點中呼叫cluvfy命令進行驗證

rac03$/u01/product/crs/bin/cluvfy stage -post crsinst -n rac03 -verbose

參考:   http://space.itpub.net/7607759/viewspace-620131

如果報錯
ERROR:  CRS is not installed on any of the nodes.
Verification cannot proceed.
需要在新節點上改許可權:
# chmod 644 /etc/oraInst.loc
# ls -l /etc/oraInst.loc

26.  複製oracle軟體到新節點,我們選擇在節點1上操作(VNC xwindows介面):

[oracle@rac01]$ cd   /u01/product/oracle/oui/bin 
$ ./addNode.sh    介面中選擇要加入的節點3 ,點選安裝後ORACLE 自動開始複製文
件到新節點中, 複製操作完成後,提示在新節點即mxrac04 執行指令碼,注意要以root身份進行,
上述指令碼成功執行後,返回視窗介面點選OK,提示安裝成功,點選exit退出介面即可。

27. 配置監聽服務到新節點, 在新節點4上 以ORACLE身份登陸到linux系統,執行$ORACLE_HOME/bin
目錄中的netca命令即可, 配置前注意備份原節點1,2的listener.ora及tnsnames.ora 檔案。

如果提示監聽名稱存在,不能建立,可以先刪除所有節點的監聽,然後重新建立一個。


28.  最後還要從節點1  tnsnames.ora中複製local_listener.ora 到新節點3中。 設定為:

LOCAL_ORCL =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.13.67.83)(PORT = 1521))
  )
配置好所有節點的listener.ora , tnsnames.ora 檔案


29.  新增例項到新節點3 ,我們選擇在節點1上執行dbca (VNC XWINDOWS介面),千萬注意
其中redo log thread的問題。

選擇"Instance Management”, 選擇"Add an instance“, 然後選擇一個RAC資料庫(如果當
前存在多個RAC環境的話),再一個就是指定一個具有SYSDBA許可權的使用者及密碼; 彈出介面顯示
當前RAC配置中擁有的例項,直接點選下一步即可; 為新節點上的例項命名(orcl3)

接下來,需要定義一些與例項相關的檔案,比較UNDO、REDOLOG等,想省事的話此處保持預設即可,
因為這些資訊如果發現不合適,後期也都是可調的。確認無誤後,點選FINISH按鈕 ; 在此期間,
ORACLE開始自動在新節點上建立例項


30. 截止到目前,新節點已經是這個RAC配置中的一員了,使用crs_stat -t 命令檢視 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-624301/,如需轉載,請註明出處,否則將追究法律責任。

相關文章