主机网络配置注意事项:
ip地址使用静态配置:static
网关要指定
hostname不要出现在回环地址!
如果启动过单机asm服务,请先停止

在node1 & node2 运行install.sh
为oracle用户设置口令
修改oracle用户.bashrc文件
export ORA_CRS_HOME=/u01/app/crs_1
export ORACLE_SID=racdb#

su -
chown oracle.oinstall /u01/app -R

配置网络:
vi /etc/hosts
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
127.0.0.1  localhost.localdomain localhost
::1        localhost6.localdomain6 localhost6
# Public Network - (eth0)
192.168.3.50 stu50
192.168.3.52 stu52
# Public Virtual IP (eth0:1)
192.168.3.51 stu50-vip
192.168.3.53 stu52-vip
# Private Interconnect - (eth1 -> eth0:2)
10.0.0.50 stu50-priv
10.0.0.52 stu52-priv

配置eth0:2:
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth0:2
DEVICE=eth0:2
BOOTPROTO=static
HWADDR=00:E0:4D:3B:0C:B2
IPADDR=10.0.0.50
IPV6INIT=yes
IPV6_AUTOCONF=yes
NETMASK=255.255.255.0
GATEWAY=10.0.0.1
ONBOOT=yes

配置hangcheck-timer:用于监视 Linux 内核是否挂起
vi /etc/modprobe.conf
options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
自动加载hangcheck-timer 模块/u01/app/oracle/product/10.2.0/db_1
vi /etc/rc.local
modprobe hangcheck-timer
检查hangcheck-timer模块是否已经加载:
lsmod | grep hangcheck_timer

配置信任关系:
node1:192.168.3.50
su - oracle
ssh-keygen -t rsa
ssh-keygen -t dsa
cd .ssh
cat *.pub > authorized_keys

node2:192.168.3.52
su - oracle
ssh-keygen -t rsa
ssh-keygen -t dsa
cd .ssh
cat *.pub > authorized_keys

node1:192.168.3.50
scp authorized_keys oracle@192.168.3.52:/home/oracle/.ssh/keys_dbs

node2:192.168.3.52
cat keys_dbs >> authorized_keys
scp authorized_keys oracle@192.168.3.50:/home/oracle/.ssh/

测试信任关系:
node1:192.168.3.50
node2:192.168.3.52
ssh stu50
ssh stu52
ssh stu50-priv
ssh stu52-priv

准备公用卷:iscsi
rpm -ivh compat-db-4.2.52-5.1.i386.rpm
rpm -ivh libXp-1.0.0-8.1.el5.i386.rpm
rpm -ivh openmotif22-2.2.3-18.i386.rpm

node1 : 192.168.3.50 stu50 (iscsi server)

划分10G分区作为iscsi共享磁盘:
分区:/dev/sda5  5889        7105     9775521   83  Linux

iscsi 服务端:ClusterStorage目录下
rpm -ivh perl-Config-General-2.40-1.el5.noarch.rpm
rpm -ivh scsi-target-utils-0.0-5.20080917snap.el5.x86_64.rpm
Server目录下
rpm -ivh iscsi-initiator-utils-6.2.0.871-0.16.el5.i386.rpm

vi /etc/tgt/targets.conf
----------------------------------------
 <target iqn.2011-01.com.oracle.blues:luns1>
        backing-store /dev/sda9
       initiator-address 10.1.1.0/24
 </target>
----------------------------------------

vi /etc/udev/scripts/iscsidev.sh
----------------------------------------
#!/bin/bash
 BUS=${1}
 HOST=${BUS%%:*}
 [ -e /sys/class/iscsi_host ] || exit 1
 file="/sys/class/iscsi_host/host${HOST}/device/session*/iscsi_session*/targetname"
 target_name=$(cat ${file})
 if [ -z "${target_name}" ] ; then
        exit 1
 fi
 echo "${target_name##*:}"
----------------------------------------

chmod +x /etc/udev/scripts/iscsidev.sh

chkconfig iscsi on
chkconfig iscsid on
chkconfig tgtd on

service iscsi start
service iscsid start
service tgtd start

tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL
iscsiadm -m discovery -t sendtargets -p 10.1.1.103
service iscsi start
fdisk -l

重新扫描服务器
iscsiadm -m session -u
iscsiadm -m discovery -t sendtargets -p 10.1.1.103

vi /etc/rc.local
tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL
service iscsi start

iscsi客户端配置 client : 10.1.1.103
rpm -ivh iscsi-initiator-utils-6.2.0.871-0.16.el5.i386.rpm

vi /etc/udev/rules.d/55-openiscsi.rules
-----------------------------------------------
KERNEL=="sd*",BUS=="scsi",PROGRAM="/etc/udev/scripts/iscsidev.sh %b",SYMLINK+="iscsi/%c"
-----------------------------------------------

vi /etc/udev/scripts/iscsidev.sh
----------------------------------------
#!/bin/bash
BUS=${1}
HOST=${BUS%%:*}
[ -e /sys/class/iscsi_host ] || exit 1
file="/sys/class/iscsi_host/host${HOST}/device/session*/iscsi_session*/targetname"
target_name=$(cat ${file})
if [ -z "${target_name}" ] ; then
       exit 1
fi
echo "${target_name##*:}"
----------------------------------------

chmod +x /etc/udev/scripts/iscsidev.sh

service iscsi start
iscsiadm -m discovery -t sendtargets -p 10.1.1.18 -l
service iscsi start
fdisk -l
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
对iscsi共享盘分区:

将iscsi共享分区变为裸设备:
vi /etc/udev/rules.d/60-raw.rules
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdb3", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sdb5", RUN+="/bin/raw /dev/raw/raw4 %N"
KERNEL=="raw[1]", MODE="0660", GROUP="oinstall", OWNER="root"
KERNEL=="raw[2]", MODE="0660", GROUP="oinstall", OWNER="oracle"
KERNEL=="raw[3]", MODE="0660", GROUP="oinstall", OWNER="oracle"
KERNEL=="raw[4]", MODE="0660", GROUP="oinstall", OWNER="oracle"

分别在node1 & node2启动udev:
start_udev
分别在node1 & node2确认裸设备被加载:
[root@stu50 ~]# ll /dev/raw
总计 0
crw-rw---- 1 root   oinstall 162, 1 01-11 12:44 raw1
crw-rw---- 1 oracle oinstall 162, 2 01-11 12:44 raw2
crw-rw---- 1 oracle oinstall 162, 3 01-11 12:44 raw3
crw-rw---- 1 oracle oinstall 162, 4 01-11 12:44 raw4

使用CVU校验集群安装可行性:
./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose

安装clusterware软件(只需在一个节点做,但要手工将其它节点加入到群):
/mnt/clusterware/runInstaller

注意:在弹出要求运行root.sh脚本的对话框时先不要运行root.sh脚本先修改vipca和srvctl脚本,
不然运行脚本过程中调用java会报错!

su - oracle
vi +123 $CRS_HOME/bin/vipca
在123行 fi 后新添加一行:
unset LD_ASSUME_KERNEL

vi + $CRS_HOME/bin/srvctl
在export LD_ASSUME_KERNEL这一行后加
unset LD_ASSUME_KERNEL

在最后一个节点运行root.sh如果出现下面错误,请按下面蓝色字体部分解决!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Running vipca(silent) for configuring nodeapps
Error 0(Native: listNetInterfaces:[3])
  [Error 0(Native: listNetInterfaces:[3])]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

注意红颜色部分!要按自己的网络配置修改(注意网络适配器名称和IP地址!不要盲目照抄!)!
cd /u01/app/crs_1/bin
#./oifcfg iflist
#./oifcfg setif -global eth0/10.1.1.0:public
#./oifcfg setif -global eth0:2/10.0.0.0:cluster_interconnect
#./oifcfg getif

如果两台实验机的网卡一个是eth0一个是eth1,那么按如下方法修改:
./oifcfg setif -node node1 eth0/:10.1.1.0:public
./oifcfg setif -node node1 eth0:0/172.20.1.0:cluster_interconnect
./oifcfg setif -node node1 eth0:1/172.20.1.0:cluster_interconnect

./oifcfg setif -node node2 eth1/:10.1.1.0:public
./oifcfg setif -node node2 eth1:0/172.20.1.0:cluster_interconnect
./oifcfg setif -node node2 eth1:1/172.20.1.0:cluster_interconnect

############ 效果 ########
[root@server bin]# ./oifcfg getif
eth0  10.1.1.0  node1  public
eth0:0  172.20.1.0  node1  cluster_interconnect
eth0:1  172.20.1.0  node1  cluster_interconnect
eth1  10.1.1.0  node2  public
eth1:0  172.20.1.0  node2  cluster_interconnect
eth1:1  172.20.1.0  node2  cluster_interconnect

############ 效果 ########

设置网络接口后在当前节点手工运行vipca
unset LANG
./vipca

vipca向导将资源启动后,查看各资源状态
cd $ORA_CRS_HOME/bin
./crs_stat -t

查看各资源详细信息:
./crs_stat
./crs_stat -p

clusterware软件安装成功之后备份一下ocr!
./ocrconfig -export /home/oracle/ocr.bak

安装数据库软件(只需在一个节点做,会出现多节点的选择选项):安装时选择只安装软件不键库
/mnt/database/runInstaller

clusterware管理:
查看voting disk位置:
#./crsctl query css votedisk

备份voting disk
dd if=voting_disk_name of=backup_file_name bs=4k
还原voting disk
dd if=backup_file_name of=voting_disk_name bs=4k

添加新的表决磁盘:
# crsctl add css votedisk <new voting disk path>

删除表决磁盘:
# crsctl delete css votedisk <old voting disk path>

如果所有节点上的 Oracle Clusterware 都已关闭,请使用 –force 选项:
# crsctl add css votedisk <new voting disk path> -force
# crsctl delete css votedisk <old voting disk path> -force

查看OCR的位置
#./ocrcheck

找到物理备份:
$ocrconfig -showbackup

检查ocr内容:
# ocrdump –backupfile file_name

检查 OCR 完整性:
$ cluvfy comp ocr -n all

OCR 会在以下时间自动进行备份:
每 4 小时:CRS 会保留最后 3 个副本。
每天结束时:CRS 会保留最后 2 个副本。
每周结束时:CRS 会保留最后 2 个副本。

更改自动备份的默认位置:
# ocrconfig –backuploc /shared/bak

还原 OCR 物理备份:
# crsctl stop crs
# ocrconfig –restore <CRS HOME>/cdata/jfv_clus/day.ocr 
# crsctl start crs

手工备份:
/data/oracle/crs/bin/ocrconfig -export /data/backup/rac/ocrdisk.bak

还原逻辑 OCR 备份:
# crsctl stop crs
# ocrconfig –import /shared/export/ocrback.dmp 
# crsctl start crs

检查 OCR 完整性:
$ cluvfy comp ocr -n all

停止crs:
/etc/init.d/init.crs stop

启动crs:
/etc/init.d/init.crs start

查看系统活动:
tail -f /var/log/message

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
手工卸载clusterware:如果clusterware安装失败可以使用下面方法卸载clusterware!安装成功就不要卸载了!脚本别瞎用!
cd /u01/app/crs_1/install
./rootdelete.sh
./rootdeinstall.sh

rm -fr /etc/ora*
rm -fr /etc/init.d/*.crs
rm -fr /etc/init.d/*.crsd
rm -fr /etc/init.d/*.css
rm -fr /etc/init.d/*.cssd
su - oracle
rm -fr $ORACLE_BASE/*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cd $ORACLE_HOME/rdbms/lib
校验rac功能是否打开(结果大于0则是rac)
nm -r libknlopt.a | grep -c kcsm.o
打开rac功能
make -f ins_rdbms.mk rac_on
关闭rac功能
make -f ins_rdbms.mk rac_off