一.安裝環境規劃:linux
1. 實驗環境:c++
a) 虛擬機:vmware server 2.0數據庫
b) 操做系統:RHEL4 2.6.9-55api
c) ORACLE:10G R2bash
d) 主機名:rac1與rac2網絡
2. IP規劃:session
a) publicIP(nat):
rac1:1.1.1.111
rac2:1.1.1.222oracle
b) privIP(hostonly):
rac1-priv:2.2.2.111
rac2-priv:2.2.2.222app
c) VIP:
rac1-vip:1.1.1.11
rac1-vip:1.1.1.22ssh
3. 磁盤規劃(添加四塊磁盤):
a) /dev/sdb1用裸設備作爲OCR磁盤
b) /dev/sdc1用裸設備作爲表決磁盤
c) /dev/sdd一、/dev/sde1作爲ASM共享磁盤
4. 不少安裝文檔上是使用先安裝好一臺機器再使用vmware克隆一個新的節點的方式,可是中心有一些細節比較容易出問題,爲保證明驗的效果和模擬真實環境下的配置操做,我直接採用安裝兩臺全新虛擬機的方式來完成。
二.CRS安裝步驟
1. 按平時的操做建立兩臺vmware的虛擬機,操做系統安裝RHEL4,安裝過程當中最好把GCC能選上去,把防火牆和selinux關掉,這個很簡單,不作過多介紹
2. 安裝rac前對rac1虛擬機的配置以下:
a) 將rac1虛擬機init 0關機後對硬件作配置,保證機器上有兩塊分另屬於不一樣通道的網卡
b) 爲虛擬機添加四塊scsi磁盤,我直接加了四塊1g的scsi磁盤,注意指定不一樣的scsi通道(scsi1:x)和咱們本機使用的磁盤不要在同一通道上,依次添加四塊磁盤,分別對應scsi1:0/scsi1:1/scsi1:2/scsi:3,我下面標紅的三個地方請注意最好能調整過來
c) 磁盤添加完成後,須要對vmware的.vmx配置文件作修改,取消對磁盤的鎖定,使這四個磁盤成爲共享磁盤,在虛擬機的vmx文件後添加以下語句:
disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
scsi1:0.deviceType = "disk"
scsi1:1.deviceType = "disk"
scsi1:2.deviceType = "disk"
scsi1:3.deviceType = "disk"
配置完成後將rac1啓動
d) 建立rac的安裝目錄
mkdir –p /u01/oracle/product/10.2/crs/
mkdir –p /u01/oracle/product/10.2/db1/
f) 檢查用戶與組ID,兩個rac節點的用戶與組id必須一致
g) 將oracle安裝目錄的全部者改成oracle用戶和dba組
[root@rac1 ~]# chown -R oracle:oinstall /u01/
[root@rac1 ~]# chmod -R 775 /u01/
h) 檢查並安裝RAC、oracle程序須要使用的包:
binutils-2.15.92.0.2-18
compat-libstdc++-33.2.3-47.3
elfutils-libelf-0.97-5
elfutils-libelf-devel-0.97-5
glibc-2.3.9.4-2.19
glibc-common-2.3.9.4-2.19
glibc-devel-2.3.9.4-2.19
gcc-3.4.5-2
gcc-c++-3.4.5-2
libaio-devel-0.3.105-2
libaio-0.3.105-2
libgcc-3.4.5
libstdc++-3.4.5-2
libstdc++-devel-3.4.5-2
make-3.80-5
sysstat-5.0.5
unixODBC-2.2.11
unixODBC-devel-2.2.11
openmotif-2.2.3
rsh-0.17-25.4
rsh-server-0.17-25.4
setarch-1.6-1
i) 檢查並安裝ASM須要使用的包(ASM所使用的包須要到oracle官方網站上根據本身CPU及linux內核的對應版本去選擇下載):
oracleasm-support-2.1.4-1.el4.i386.rpm
oracleasm-2.6.9-55.EL-2.0.3-1.i686.rpm
oracleasmlib-2.0.4-1.el4.i386.rpm
oracleasm-2.6.9-55.ELhugemem-2.0.3-1.i686.rpm
oracleasm-2.6.9-55.ELsmp-2.0.3-1.i686.rpm
oracleasm-2.6.9-55.ELxenU-2.0.3-1.i686.rpm
j) 修改主機名,hosts文件,網絡配置
改主機名vi /etc/sysconfig/network
改ip與主機名對應關係vi /etc/hosts,按以前的規劃將ip與主機名映射進行編輯
(在hosts文件中注意127.0.0.1對應localhost,不要對應主機名~~~)
1.1.1.111 rac1
2.2.2.111 rac1-priv
1.1.1.11 rac1-vip
1.1.1.222 rac2
2.2.2.222 rac2-priv
1.1.1.22 rac2-vip修改網卡配置
vi /etc/sysconfig/network-scripts/ifcfg-eth0
vi /etc/sysconfig/network-scripts/ifcfg-eth1
修改rac1的內核參數文件vi /etc/sysctl.conf添加以下內容
kernel.shmmax = 4294967295
kernel.shmall = 2097152
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 = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
添加完後執行sysctl -p
k) 修改etc/security/limits.conf,添加以下內容:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
l) Vi /etc/pam.d/login,添加以下內容(64位系統不須要):
session required /lib/security/pam_limits.so
session required pam_limits.so
m) 修改/etc/profile,加入如下內容:
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
n) 配置hangcheck:vi /etc/modprobe.conf
添加options hangcheck-timer hangcheck-tick=30 hangcheck_margin=180
再執行modprobe -v hangcheck-timer
vi /etc/grub.conf
clock=pit nosmp noapic nolapic
o) 開啓sshd服務
chkconfig sshd on
service sshd start
p) 使用oracle用戶登陸後修改修改~/.bash_profile添加以下環境變量:
export ORACLE_SID=racdb
export ORACLE_BASE=/u01/oracle/product
export ORACLE_HOME=/u01/oracle/product/10.2/db1
export ORA_CRS_HOME=/u01/oracle/product/10.2/crs
export ORACLE_ADMIN=$ORACLE_BASE/admin
export ORACLE_HOME_LISTNER=$ORACLE_HOME
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/jlib
export JAVA_HOME=$ORACLE_HOME/jdk
export ORA_NLS10=$ORACLE_HOME/nls/data
export PATH=$PATH:$ORACLE_HOME/bin:/usr/bin:/usr/sbin:/usr/local/sbin:/usr/lib:$JAVA_HOME/bin:$ORA_CRS_HOME/bin
至此rac1的初期配置完成,後面開始rac2的配置
3. 安裝rac前對虛擬機rac2的配置過程以下:
a) 在關機狀態下爲虛擬機rac2添加網卡(兩塊)與共享磁盤,由於以前rac1已經建立磁盤,因此在rac2上不用建立新磁盤,直接使用rac1上已經建好的四塊共享磁盤便可,注意我打標記的地方
b) 四塊磁盤加完後,在rac2虛擬機的vmx文件中添加如下內容後開機:
disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
scsi1:0.deviceType = "disk"
scsi1:1.deviceType = "disk"
scsi1:2.deviceType = "disk"
scsi1:3.deviceType = "disk"
c) Rac2的操做請重複rac1前面所作的操做,徹底同樣,最後一步建立分區能夠不用作,在rac1上建立好分區後,rac2上能夠用fdisk –l直接看到全部已經建立好的磁盤分區
4. 爲rac1與rac2配置時間同步:
a) 在rac1上執行如下命令開啓時間服務
[root@rac1 ~]# chkconfig ntpd on
[root@rac1 ~]# service ntpd status
ntpd is stopped
[root@rac1 ~]# service ntpd start
Starting ntpd: [ OK ]
[root@rac1 ~]#
b) 在rac2上輸入system-config-date配置,輸入rac1的ip後選擇add,ok
c) 再vi /etc/rc.local
輸入如下內容:
while [ 1 ];do ntpdate rac1 1>/dev/null 2>&1; sleep 2;done&
時間同步配置完成
5. 配置SSH
a) 切換爲oracle用戶,在rac1與rac2上的用戶根目錄下分別建立.ssh目錄並給與指定權限:
mkdir ~/.ssh/
chmod 700 ~/.ssh
b) 在rac1上分別使用ssh-keygen命令生成rsa與dsa的非對稱密鑰。
ssh-keygen –t rsa
ssh-keygen –t dsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/authorized_keys >> rac1.authorized_keys
c) 在rac2上分別使用ssh-keygen命令生成rsa與dsa的非對稱密鑰。
ssh-keygen –t rsa
ssh-keygen –t dsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/authorized_keys >> rac2.authorized_keys
d) 將rac1與rac2的密鑰文件進行交換
在rac1上:
在rac2上:
e) 將rac2的密鑰文件合併到rac1的密鑰文件中:
在rac1上執行
cat rac2.authorized_keys >>authorized_keys
f) 將rac1的密鑰文件合併到rac2的密鑰文件中:
在rac2上執行:
cat rac1.authorized_keys >>authorized_keys
g) Chmod 700 authorized_keys(必需要配置,不然會須要密碼)
h) 檢測ssh配置是否成功:
ssh rac1 date
ssh rac2 date
ssh rac1-priv date
ssh rac2-priv date
若是執行以上命令不須要輸入密碼則ssh配置成功
6. 在rac1及rac2上配置裸設備與ASM磁盤:
a) 在rac1和rac2上配置裸設備(將/dev/sdb1與/dev/sdc1配置爲ocr磁盤與表決磁盤)
Vi /etc/sysconfig/rawdevices
在其中增長兩行代碼:
/dev/raw/raw1 /dev/sdb1
/dev/raw/raw2 /dev/sdc1
而後vi /etc/udev/permissions.d/50-udev.permissions,將與raw有關的權限選項進行修改
# raw devices
ram*:root:disk:0660
#raw/*:root:disk:0660
raw/*:oracle:dba:0660
再執行檢查配置是否成功:
chkconfig --list rawdevices
service rawdevices restart
b) 在rac1與rac2上配置ASM磁盤(確保前面在兩臺機器上已經安裝了asm的相關包)
使用root用戶登陸:
i. 執行如下命令:/etc/init.d/oracleasm configure
ii. 使用/etc/init.d/oracleasm createdisk vol1 /dev/sdd1建立asm磁盤
在rac1與rac2分別進行如上配置後,磁盤配置完成:
7. 執行以下命令,檢查安裝環境是否匹配安裝要求:
/u01/cluster/cluvfy/runcluvfy.sh stage -pre crsinst -n rac1,rac2
8. 在rac1上執行安裝程序:
. /u01/cluster/runInstall
11. 指定兩個網卡的鏈接類型,將eth0設置爲public,eth1設置爲private
12. 將事先配置好的裸設備/dev/raw/raw1與/dev/raw/raw2分別指定爲ocr磁盤與表決磁盤後開始執行安裝.
13. 使用集羣軟件在兩個節點進行安裝,安裝完成後按要求分別在rac1與rac2上執行指定腳本:
. /u01/oracle/product/oraInventory/orainstRoot.sh
. /u01/oracle/product/10.2/crs/root.sh
rac1:
rac2:
15. 在兩個節運行完腳本後,修改兩個配置文件:
修改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
16. 使用root用戶登陸在rac2上執行:
/u01/oracle/product/10.2/crs/bin/vipca
選擇public網卡點next
對vip與別名進行相應設置
若是在/u01/oracle/product/oraInventory/logs/installActions2011-03-21_11-23-35文件中
報WARNING: RAC2:6200 already configured.WARNING: RAC1:6200 already configured.的錯誤
請執行
$cd /home/oracle/app/crs/bin
/u01/oracle/product/10.2/crs/bin/racgons remove_config rac1:6200
/u01/oracle/product/10.2/crs/bin/racgons remove_config rac2:6200
17. 在rac2上執行完netca後,在rac1上點擊ok,crs安裝完成
三.羣集數據庫安裝
1. 將oracle10g安裝軟件複製到rac1並進行解壓
2. 運行. /u01/database/runInstal選擇安裝企業版
選擇安裝目錄
6. 安裝數據庫並配置ASM:
在rac1上執行dbca安裝羣集數據庫:
13. 點擊ok後會提示沒有建立監聽,直接yes讓oracle自動配置監聽程序,並開始配置Asm實例