Oracle RAC 安装指北 10gR2+OEL5.11

Oracle RAC 安装总览

Oracle RAC 按我的理解就是:先在OS层上安装cluster应用(Oracle cluster ware),通过cluster应用在OS层面上实现多机器的集群。一般都为不支持集群的OS(例如:Linux、Window);当然支持集群的OS也可以安装(例如:AIX可以装IBM自己的HA也可以装Oracle cluster ware)。然后在cluster应用层上安装Oracle数据库,Oracle数据库通过改变自身的设置或启用集群模块在cluster应用层上以兼容模式运行。最后通过以业务方(数据库高可用+高性能+少花钱)的需求驱动,通过整合oracle与cluster提供一体化软件解决方案,干死了硬件厂商。
在安装过程中遇到了N多坑,本着总结RAC安装与胡说八道的目的和态度将本安装指北分为以下章节:

先搞台电脑

配置不需要太好,只要稳定就行。例如:Dell XPS 9550这种带独显又拉风的电脑最好别选,3年坏8次!电脑的好坏跟品牌其实无关,更多还是要看RP,但3年坏8次也很能说明问题。我最终完成安装的电脑是联想的台式(i7-6700+8G+1TB机械硬盘),在2019年来说这配置不算新,但就安装体验来讲,还真是蛮快的。

选择OS与Oracle版本

RAC这玩意是Oracle 10g才搞出来的,11g版本19年都进入扩展维护期,追新的话应该直接上12c,可如果想要把RAC学透还是从头来比较好(也方便以后可以用10g、11g、12c三个版本的RAC区别等内容来忽悠面试官)。
确定Oracle版本:Oracle 10gR2 (10.2.0.5)
确定了Oracle版本,那么OS的版本就好定了:打开Oracle 10gR2的官方文档,点击Install页签,读一下“READMEs and Release Notes”部分(AIX 5L、OpenVMS、HP-UX、z/OS、Solaris)这些都是什么玩意,完全没接触过,也许日后能安装玩下。可用的除了Windows就是Linux,直接无视图形界面的Windows,选定Linux。
然后打开《Release Notes for Linux x86-64》在Certification Information中得知最高支持到Linux 5,找下OEL5的最高版本就好了。
确定Linux版本:OEL5.11

选择虚拟机

Virtual Box、Vware、Hyper-v,一般用的多的也就这三个,第一个不要钱,而且也能用。对于企业级的虚拟化,等以后看东家用什么跟着用就好。
选定虚拟机:Virtual Box

规划RAC安装

最简单的RAC环境就是:2个节点+1套存储。

节点

RAC要求各节点配置一致、OS版本一致、Oracle版本一致,所以就用统一配置。
硬件配置表:

配置内容说明
CPU单核
内存1G推荐2G
硬盘3G /推荐10G
硬盘1.5G swap推荐2G
硬盘4G /oracle推荐10G
网络网卡1外网
网络网卡2内网

网络配置表:

节点网卡IPNet Mask
node1Public NIC192.168.56.101255.255.255.0
node1Public VIP192.168.56.201255.255.255.0
node1Private NIC10.0.0.101255.255.255.0
node2Public NIC192.168.56.102255.255.255.0
node2Public VIP192.168.56.202255.255.255.0
node2Private NIC10.0.0.102255.255.255.0

存储

存储涉及一个集群存储技术选型的问题,按推荐度从高到低列出对应技术:

技术说明
ASMOracle官方推荐,就日常使用来说此技术与Oracle契合度最高,容易管理。也不用跟存储工程师扯皮。
NAS网络存储价格便宜,上手难度也不高,性能什么的不是主要的,能用就好。
RAW裸设备技术正在被淘汰,但10g依然要用到。
OCFS集群文件系统,Oracle自己开发的技术,但居然把它给开源了,你就能猜道这玩意有多不靠谱。

这里当然选用ASM作为存储技术方案。

用途磁盘容量挂载点说明
OCRORC01256MBRAW1保存cluster设置信息,用于防止健忘
OCROCR02256MBRAW2推荐双路,官方要求最少256MB
Voting DiskVTDISK01256MBRAW3用于脑裂投票,必须为单数
Voting DiskVTDISK02256MBRAW4建议使用三路
Voting DiskVTDISK03256MBRAW5官方要求最少256MB
ASMDATA011.2GBDATA01数据存储空间
ASMDATA021.2GBDATA02官方要求最少1.2GB
ASMRCV012GBRCV01恢复区存储空间
ASMRCV022GBRCV02官方要求最少2GB

也就是说我们可以搞9块硬盘来进行安装,现实生产环境中只会更多,例如:使用ASM多故障组,每个故障组内添加多块硬盘。

实施RAC安装

新建虚拟机

图形界面,建立虚拟机的过程很简单,没什么可说的。补充一点Virtual Box对应的网络和共享存储知识:

Virtual Box网络

Virtual Box的网络有如下所示:

类型功能能否访问主机说明
NAT访问外网×提供外网访问能力,特殊点在于每一台虚拟机都会被分配10.0.2.15这个地址。
桥接虚拟主机网卡就相当于虚拟机安装了一块插在宿主机上的物理网卡。
仅主机搭建包含主机的网络搭建一套内部网络,有一个虚拟交换机,可以与主机通信,不能访问外网。
内部搭建不含主机的网络×搭建一套内部网络,有一个虚拟交换机,不能与主机通信,不能访问外网。
共享存储

Virtual Box建立共享存储很简单,只需要在:管理→虚拟介质管理→虚拟硬盘→类型修改为“可共享”后点应用按钮即可。
当然有个前提,就是建立虚拟硬盘时,必须一次性分配空间。

安装Linux

没什么可写的,安装选择最小化模式,所有包全不装就完了。

配置Linux

为了安装RAC配置Linux很简单,只要做一遍有个了解就好了。不过如果想对RAC进行极限的性能调优,那对于Linux来说就不容易了。

网络

配置网络可以在安装时就进行配置,图形界面比较友好,而且也方便使用ssh工具远程操作。(这样可以大量减少进机房的次数和时间,降低脚踢网线、意外触电、耳聋耳鸣等潜在风险。)
当然也可以在安装后进行配置,熟悉网络配置方法:

cd /etc/sysconfig/network-scripts/
vi ifcfg-eth0
--------------------------------------------------------------
# Intel Corporation 82540EM Gigabit Ethernet Controller
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.56.101
NETMASk=255.255.255.0
--------------------------------------------------------------
:x
vi ifcfg-eth1
--------------------------------------------------------------
# Intel Corporation 82540EM Gigabit Ethernet Controller
DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.0.0.101
NETMASK=255.255.255.0
--------------------------------------------------------------
:x
service network restart
ip ad sh
--------------------------------------------------------------
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 08:00:27:60:f9:da brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.101/24 brd 192.168.56.255 scope global eth0
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 08:00:27:5e:f4:4a brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.101/24 brd 10.0.0.255 scope global eth1
--------------------------------------------------------------

然后就可以使用ssh客户端连接Linux了,如果使用ip ad sh返回的结果中没有对应的IP地址,那可能是udev绑定网卡设备在搞怪,删掉对应的配置文件后重启即可。

cd /etc/udev/rules.d/
rm -rf 60-net.rules
init 6

关闭IPv6

#编辑network文件,IPV6设置为no
cd /etc/sysconfig
vi network
--------------------------------------------------------------
NETWORKING_IPV6=no
--------------------------------------------------------------
:x
#编辑host文件,注释掉IPV6的本地解析
cd /etc
vi hosts
--------------------------------------------------------------
#::1            localhost6.localdomain6 localhost6
--------------------------------------------------------------
:x
主机名

不仅要设置本机的主机名,也要在hosts文件中设置其他节点的路由信息。

#修改主机名配置文件
cd /etc/sysconfig
vi network
--------------------------------------------------------------
HOSTNAME=node1
--------------------------------------------------------------
:x
hostname node1
#添加各节点路由信息
cd /etc
vi hosts
--------------------------------------------------------------
#node1:
192.168.56.101  node1
192.168.56.201  node1-vip
10.0.0.101      node1-priv
#node2:
192.168.56.102  node2
192.168.56.202  node2-vip
10.0.0.102      node2-priv
--------------------------------------------------------------
:x
本地Yum源

配置本地yum源,一般都是把安装光盘挂载到某个文件夹下面,然后在yum配置文件中指过去。我们使用Virtual Box虚拟机进行练习,重启时会遇到进入Linux安装界面的问题,有些恶心。解决方法也简单,挂载光盘后,将光盘内容都copy到磁盘上,以后不再挂载安装光盘(有些败家,反正现在硬盘很便宜了,而且数据库有可能出现各种原因造成磁盘被占满然后hang住的问题。这时如果用了这种败家的方法,则可以通过删多余介质的方法腾地。否则要是开了lvm那还好,可以加硬盘;要不就得想各种办法腾地方,实在腾不开就只能停机做文件迁移了,关键系统停机可不是什么好事)。
先在启动状态把光盘装上,然后如下↓

mkdir -p /img/OEL
mkdir -p /img/CDROM
mount -o loop /dev/cdrom /img/CDROM/
cp -rf /img/CDROM/ /img/OEL
cd /etc/yum.repos.d
vi local.repo
--------------------------------------------------------------
[Server]
name=Server
baseurl=file:///img/OEL/CDROM/Server
enabled=1
gpgcheck=0

[Cluster]
name=Cluster
baseurl=file:///img/OEL/CDROM/Cluster
enabled=1
gpgcheck=0

[ClusterStorage]
name=ClusterStorage
baseurl=file:///img/OEL/CDROM/ClusterStorage
enabled=1
gpgcheck=0

[VT]
name=VT
baseurl=file:///img/OEL/CDROM/VT
enabled=1
gpgcheck=0
--------------------------------------------------------------
:x
rm public-yum-el5.repo
createrepo /img/OEL/CDROM/
yum list gcc
安装软件包

先安装x windows

yum groupinstall -y "X Window System"

安装缺失软件包

#yum install -y binutils
yum install -y compat-db.i386
yum install -y compat-db.x86_64
yum install -y compat-gcc-34
yum install -y compat-gcc-34-c++
#yum install -y compat-libstdc++-33.i386
#yum install -y compat-libstdc++-33.x86_64
#yum install -y compat-libstdc++-296.i386
yum install -y gcc
yum install -y gcc-c++
#yum install -y glibc.i686
#yum install -y glibc.x86_64
#yum install -y glibc-common
yum install -y glibc-devel.i386
#yum install -y glibc-devel.x86_64
#yum install -y glibc-headers
#yum install -y libgcc.i386
#yum install -y libgcc.x86_64
yum install -y libXp.i386
yum install -y libXp.x86_64
yum install -y libXt.i386
#yum install -y libXt.x86_64
#yum install -y libXtst.i386
#yum install -y libXtst.x86_64
#yum install -y libaio.i386
#yum install -y libaio.x86_64
yum install -y libaio-devel.i386
yum install -y libaio-devel.x86_64
#yum install -y libstdc++.i386
#yum install -y libstdc++.x86_64
yum install -y libstdc++-devel.i386
#yum install -y libstdc++-devel.x86_64
#yum install -y libgomp.x86_64
yum install -y libgomp.i386
#yum install -y make
yum install -y numactl-devel.i386
yum install -y numactl-devel.x86_64
yum install -y sysstat -y
#yum install -y smartmontools

前面带#的标明:需要但已经安装的包。

新建用户组与用户
groupadd -g 600 oinstall
groupadd -g 700 dba
useradd -u 1001 -g oinstall -G dba oracle
passwd oracle <<EOF
oracle
oracle
EOF
配置系统参数
vi /etc/sysctl.conf
--------------------------------------------------------------
#Add for Oracle
kernel.shmall = 2097152
kernel.shmmax = 2147483648
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
--------------------------------------------------------------
sysctl -p
vi /etc/pam.d/login
--------------------------------------------------------------
session    required     /lib64/security/pam_limits.so
--------------------------------------------------------------
vi /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
--------------------------------------------------------------
vi /etc/csh.login
--------------------------------------------------------------
if ( $USER == "oracle" ) then
 limit maxproc 16384
 limit descriptors 65536
endif
--------------------------------------------------------------
vi /etc/security/limits.conf
--------------------------------------------------------------
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
--------------------------------------------------------------
配置安装目录
mkdir -p /u01/app
chown -R oracle:oinstall /u01/app
配置用户参数
su - oracle
vi .bash_profile
--------------------------------------------------------------
umask 022
export ORACLE_BASE=/u01/app
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export CRS_HOME=$ORACLE_BASE/product/10.2.0/crs_1
export ORA_CRS_HOME=$CRS_HOME
export ORACLE_SID=orcl1
export PATH=$ORA_CRS_HOME/bin:$ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export NLS_LANG=AMERICAN_AMERICA.UTF8
--------------------------------------------------------------

现在可以停虚拟机,做快照,然后用快照镜像出二节点(然后修改对于的主机名、IP地址和用户配置文件中的ORACLE_SID即可)

配置应用存储

给oracle应用单独配置镜像存储,使用软raid-0。给node1添加2块硬盘,每块12GB后启动机器。

/sbin/scsi_id -g -u -s /block/sdb
/sbin/scsi_id -g -u -s /block/sdc
cd /etc/udev/rules.d
vi 99-oracle.rules
--------------------------------------------------------------
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VB216d0386-94867b97_", NAME="ora-disk1", OWNER="oracle", GROUP="oinstall", MODE="0775"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VBf6e72146-bf6cee7f_", NAME="ora-disk2", OWNER="oracle", GROUP="oinstall", MODE="0775"
-------------------------------------------------------------
mdadm --create /dev/md0 --level=1 --raid-devices=2 {/dev/ora-disk1,/dev/ora-disk2}
mdadm -D /dev/md0
mdadm -Ds
mkfs.ext3 /dev/md0
mount /dev/md0 /u01
chown -R oracle:oinstall /u01
chmod 775 /u01
vi /etc/mdadm.conf
echo DEVICE /dev/ora-disk1 /dev/ora-disk2 > /etc/mdadm.conf
mdadm -Ds >> /etc/mdadm.conf
-------------------------------------------------------------
DEVICE /dev/ora-disk1 /dev/ora-disk2
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=0.90 UUID=f8234f33:a8f3cab7:2af048b2:e84a2f18
-------------------------------------------------------------

在节点2上重复此步骤,给节点2也添加oracle使用的软raid存储。添加3块硬盘,每块6G,然后组成软raid5,可用容量也是12G。

fdisk /dev/sdb
fdisk /dev/sdc
fdisk /dev/sdd
mkfs.ext3 /dev/sdb1
mkfs.ext3 /dev/sdc1
mkfs.ext3 /dev/sdd1
#配置udev
/sbin/scsi_id -g -u -s /block/sdb
/sbin/scsi_id -g -u -s /block/sdc
/sbin/scsi_id -g -u -s /block/sdd
cd /etc/udev/rules.d
vi 99-oracle.runles
-------------------------------------------------------------
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VBe5375788-43ed32bc_", NAME="ora-disk1", OWNER="oracle", GROUP="oinstall", MODE="0775"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VBd9f82d02-c328d96e_", NAME="ora-disk2", OWNER="oracle", GROUP="oinstall", MODE="0775"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VB026a26aa-6c02ff02_", NAME="ora-disk3", OWNER="oracle", GROUP="oinstall", MODE="0775"
-------------------------------------------------------------
ll /dev/ora*
mdadm --create /dev/md0 --level=5 --raid-devices=3 {/dev/ora-disk1,/dev/ora-disk2,/dev/ora-disk3}
echo DEVICE /dev/ora-disk1 /dev/ora-disk2 /dev/ora-disk3 > /etc/mdadm.conf
mdadm -Ds >> /etc/mdadm.conf
mkfs.ext3 /dev/md0
mount /dev/md0 /u01
chown -R oracle:oinstall /u01
chmod 775 /u01
vi /etc/fstab
-------------------------------------------------------------
/dev/md0                /u01                    ext3    defaults        0 0
-------------------------------------------------------------

配置共享存储
fdisk sdd
fdisk sde
fdisk sdf
fdisk sdg
fdisk sdh
fdisk sdi
fdisk sdj
fdisk sdk
/sbin/scsi_id -g -u -s /block/sdb
/sbin/scsi_id -g -u -s /block/sde
/sbin/scsi_id -g -u -s /block/sdf
/sbin/scsi_id -g -u -s /block/sdg
/sbin/scsi_id -g -u -s /block/sdh
/sbin/scsi_id -g -u -s /block/sdi
/sbin/scsi_id -g -u -s /block/sdj
/sbin/scsi_id -g -u -s /block/sdk
vi /etc/udev/rules.d/99-oracle.rules 
-------------------------------------------------------------
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VB8eedf61e-aa8e593b_", NAME="ASM-OCR01", OWNER="root", GROUP="oinstall", MODE="0640"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VB5ea6a107-cbc4a5f1_", NAME="ASM-OCR02", OWNER="root", GROUP="oinstall", MODE="0640"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VB5c8e60aa-05099a5c_", NAME="ASM-VTDISK01", OWNER="root", GROUP="oinstall", MODE="0640"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VBd5b21d84-22df3cf4_", NAME="ASM-VTDISK02", OWNER="root", GROUP="oinstall", MODE="0640"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VB21d5e846-279b876a_", NAME="ASM-VTDISK03", OWNER="root", GROUP="oinstall", MODE="0640"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VB4861cb33-c4df43c9_", NAME="ASM-DATA01", OWNER="oracle", GROUP="dba", MODE="0660"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VB85832792-81326b2d_", NAME="ASM-DATA02", OWNER="oracle", GROUP="dba", MODE="0660"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VBcaab0c1e-b2af1efe_", NAME="ASM-RCV01", OWNER="oracle", GROUP="dba", MODE="0660"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VB5cd11fff-2b75cb22_", NAME="ASM-RCV02", OWNER="oracle", GROUP="dba", MODE="0660"
-------------------------------------------------------------
cd /dev
mkfs.ext3 ASM-OCR01
mkfs.ext3 ASM-OCR02
mkfs.ext3 ASM-VTDISK01
mkfs.ext3 ASM-VTDISK02
mkfs.ext3 ASM-VTDISK03
mkfs.ext3 ASM-DATA01
mkfs.ext3 ASM-DATA02
mkfs.ext3 ASM-RCV01
mkfs.ext3 ASM-RCV02
udevinfo -q path -n ASM-DATA01

配置用于crs的ORC与VTDISK对应的RAW设备,10gR2集群的ASM虽然已经支持块设备,但对应的OCR和VoteDisk还必须得是RAW。
节点1、2都执行↓

vi /etc/rc.local
-------------------------------------------------------------
#OCR root:oinstall:0640
raw /dev/raw/raw1 /dev/ASM-OCR01
raw /dev/raw/raw2 /dev/ASM-OCR02
chown root:oinstall /dev/raw/raw1
chown root:oinstall /dev/raw/raw2
chmod 640 /dev/raw/raw1
chmod 640 /dev/raw/raw2
#Voting Disks crs:oinstall:0640,
#这里如果使用root:oinstall的话,集群可以安装成功但重启系统后集群起不来,在/var/log/message中会报无法连接这几个raw设备
raw /dev/raw/raw3 /dev/ASM-VTDISK01
raw /dev/raw/raw4 /dev/ASM-VTDISK02
raw /dev/raw/raw5 /dev/ASM-VTDISK03
chown oracle:oinstall /dev/raw/raw3
chown oracle:oinstall /dev/raw/raw4
chown oracle:oinstall /dev/raw/raw5
chmod 640 /dev/raw/raw3
chmod 640 /dev/raw/raw4
chmod 640 /dev/raw/raw5
-------------------------------------------------------------
配置ntpdate服务

node1

vi /etc/ntp.conf
-------------------------------------------------------------
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.rhel.pool.ntp.org
#server 1.rhel.pool.ntp.org
#server 2.rhel.pool.ntp.org
# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
server  127.127.1.0     # local clock
#fudge  127.127.1.0 stratum 10
fudge 127.127.1.0 stratum 8

-------------------------------------------------------------
vi /etc/sysconfig/ntpd
-------------------------------------------------------------
# Set to 'yes' to sync hw clock after successful ntpdate
SYNC_HWCLOCK=yes
-------------------------------------------------------------
service ntpd restart
service ntpd status

node2

vi /etc/ntp.conf
-------------------------------------------------------------
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.rhel.pool.ntp.org
#server 1.rhel.pool.ntp.org
#server 2.rhel.pool.ntp.org
server node1
-------------------------------------------------------------
vi /etc/sysconfig/ntpd
-------------------------------------------------------------
# Set to 'yes' to sync hw clock after successful ntpdate
SYNC_HWCLOCK=yes
-------------------------------------------------------------
service ntpd restart
service ntpd status

node1作为NTP服务器需要先与其他NTP服务器进行校时,这需要一段时间才可以(不能连外网就与自己的硬件时间校时),可以通过命令进行跟踪查看,注意reach字段的值,这个值需要从0累积到17以后才开始工作。
watch ntpq -p
也可以使用ntpstat命令查看node2是否在于node1进行同步,当然也要等reach字段的值累积到17以后再查,才能判断是否正常。

[root@node2 /]# ntpstat
synchronised to NTP server (192.168.56.101) at stratum 10 
   time correct to within 450 ms
   polling server every 64 s
配置hangcheck-timer模块

2个节点都做同样的配置,修改配置文件后在启动hangcheck-timer,否则就得重启才能让配置生效了。

find /lib/modules -name "hangcheck-timer.ko" 
vi /etc/rc.d/rc.local
-------------------------------------------------------------
modprobe hangcheck-timer 
-------------------------------------------------------------
vi /etc/modprobe.conf 
-------------------------------------------------------------
options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180 
-------------------------------------------------------------
modprobe hangcheck-timer 
grep Hangcheck /var/log/messages | tail -2 
配置双机互信
#节点1执行
su - oracle
ssh-keygen -t rsa
ssh-keygen -t dsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
#节点2执行
su - oracle
ssh-keygen -t rsa
ssh-keygen -t dsa
#节点1执行
scp ~/.ssh/authorized_keys node2:~/.ssh/authorized_keys
#节点2执行
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys node1:~/.ssh/authorized_keys
#节点1执行,并接受密钥
ssh node1 date
ssh node2 date
ssh node1-priv date
ssh node2-priv date
#节点2执行,并接受密钥
ssh node1 date
ssh node2 date
ssh node1-priv date
ssh node2-priv date
上传&解压安装介质

节点1操作即可,安装时会自动同步到节点2
cpio -idmv < XXX

开始安装(Cluster)

在node1操作

su - oracle
ssh node2 mkdir /img/oracle/
scp cvuqdisk-1.0.1-1.rpm node2:/img/oracle/
scp rootpre.sh node2:/img/oracle
exit
cp /etc/redhat-release /etc/redhat-release_bak
echo 'redhat-4' > /etc/redhat-release
rmp -ivh /img/oracle/clusterware/rpm/cvuqdisk-1.0.1-1.rpm
sh /img/oracle/clusterware/rootpre/rootpre.sh

在node2操作

rmp -ivh /img/oracle/cvuqdisk-1.0.1-1.rpm
sh /img/oracle/rootpre.sh

返回node1操作

su - oracle
export DISPLAY=192.168.56.1:0.0
cd /img/oracle/clusterware/

./runInstaller

在安装过程中使用root用户运行脚本时需要注意:
/u01/app/oraInventory/orainstRoot.sh
可分别在node1、node2运行
/u01/app/product/10.2.0/crs_1/root.sh
在node1运行结束后,需要进行vip配置才能在node2运行,否则会报错。
在node1、node2分别用root运行

vi /u01/app/product/10.2.0/crs_1/bin/vipca
-------------------------------------------------------------
Linux) LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/srvm/lib:$LD_LIBRARY_PATH
 export LD_LIBRARY_PATH
 #Remove this workaround when the bug 3937317 is fixed
 arch=`uname -m`
 if [ "$arch" = "i686" -o "$arch" = "ia64" -o "$arch" = "x86_64" ]
 then
 # LD_ASSUME_KERNEL=2.4.19
 # export LD_ASSUME_KERNEL
 #添加下面这一行,注释上面2行
unset LD_ASSUME_KERNEL
 fi
 #End workaround
-------------------------------------------------------------
vi /u01/app/product/10.2.0/crs_1/bin/srvctl
-------------------------------------------------------------
#Remove this workaround when the bug 3937317 is fixed
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
 #添加下面这一行
unset LD_ASSUME_KERNEL
-------------------------------------------------------------

节点2运行/u01/app/product/10.2.0/crs_1/root.sh后出现错误信息

CSS is active on all nodes.
Waiting for the Oracle CRSD and EVMD to start
Oracle CRS stack installed and running under init(1M)
Running vipca(silent) for configuring nodeapps
Error 0(Native: listNetInterfaces:[3])
  [Error 0(Native: listNetInterfaces:[3])]

node2用root运行如下命令

cd /u01/app/product/10.2.0/crs_1/bin
./oifcfg setif -global eth0/192.168.56.0:public
./oifcfg setif -global eth1/10.0.0.0:cluster_interconnect
./oifcfg getif

node1用root运行

export DISPLAY=192.168.56.1:0.0
cd /u01/app/product/10.2.0/crs_1/bin
./vipca

图形界面配置完VIP运行结束后,返回OUI的安装界面,继续。
验证Cluster安装,使用oracle用户在node1、node2分别运行

crs_stat -t
---------------------显示结果如下--------------------------
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.node1.gsd  application    ONLINE    ONLINE    node1       
ora.node1.ons  application    ONLINE    ONLINE    node1       
ora.node1.vip  application    ONLINE    ONLINE    node1       
ora.node2.gsd  application    ONLINE    ONLINE    node2       
ora.node2.ons  application    ONLINE    ONLINE    node2       
ora.node2.vip  application    ONLINE    ONLINE    node2 
------------------------------------------------------------
卸载安装

如果安装出问题,要重装的话,Linux系统很简单,把文件都删干净就好↓

rm -f /etc/init.d/init.cssd
rm -f /etc/init.d/init.crs
rm -f /etc/init.d/init.crsd
rm -f /etc/init.d/init.evmd
rm -f /etc/rc2.d/K96init.crs
rm -f /etc/rc2.d/S96init.crs
rm -f /etc/rc3.d/K96init.crs
rm -f /etc/rc3.d/S96init.crs
rm -f /etc/rc5.d/K96init.crs
rm -f /etc/rc5.d/S96init.crs
rm -rf /etc/oracle/scls_scr
rm -f /etc/inittab.crs
rm -rf /etc/ora*
rm -rf /etc/init.d/init.*
rm -f /usr/local/bin/*
rm -rf /opt/ORCLfmap
rm -rf /opt/oracle/admin
rm -rf /u01/app/oraInventory
rm -rf /u01/app/product/10.2.0/crs_1
rm -rf /var/tmp/.oracle
 rm -rf /tmp/.oracle
 rm -f /etc/oracle/orc.loc
 dd if=/dev/zero of=/dev/raw1 bs=8192 count=2560
 dd if=/dev/zero of=/dev/raw2 bs=8192 count=2560
 dd if=/dev/zero of=/dev/raw3 bs=8192 count=2560
 dd if=/dev/zero of=/dev/raw4 bs=8192 count=2560
 dd if=/dev/zero of=/dev/raw5 bs=8192 count=2560
开始安装(Oracle)
su - oracle
cd /img/oracle/database
export DISPLAY=192.168.56.1:0.0
./runInstaller
升级版本

两个节点分别修改配置参数

vi /etc/sysctl.conf
------------------------------------------------------------
#fs.file-max = 65536
fs.file-max = 101365
#net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.ip_local_port_range = 9000 65500
#net.core.rmem_default = 262144
net.core.rmem_default =1048576
#net.core.rmem_max = 262144
net.core.rmem_max = 1048576
------------------------------------------------------------
sysctl -p

升级过程最后一步,按照要求逐个节点运行2个脚本即可。

然后可以使用crsctl query crs softwareversion进行版本查看

建立数据库

先使用dbca创建ASM,图形化界面很容易操作。
然后在使用dbca创建数据库最后一步点击finish按钮后程序丢失响应,原因不明。好在图形界面不好使,可以用命令行搞定。
dbca -silent -createDatabase -templateName /u01/app/product/10.2.0/db_1/assistants/dbca/templates/General_Purpose.dbc -gdbName orcl -sid orcl -sysPassword oracle -emConfiguration NONE -datafileDestination +DATA/orcl -recoveryAreaDestination +RCV/orcl -storageType ASM -asmSysPassword oracle -diskGroupName DATA -recoveryGroupName RCV -nodelist node1,node2 -characterSet AL32UTF8 -memoryPercentage 56 -databaseType OLTP

删除多余监听

crs_stop ora.node1.LISTENER_NODE1.lsnr
crs_unregister ora.node1.LISTENER_NODE1.lsnr
crs_stop ora.node2.LISTENER_NODE2.lsnr
crs_unregister ora.node2.LISTENER_NODE2.lsnr

删除多余ASM

srvctl config asm -n node1
crs_stop ora.node1.ASM1.asm
crs_unregister ora.node1.ASM1.asm
crs_stop ora.node2.ASM2.asm
crs_unregister ora.node2.ASM2.asm

安装好RAC后,在用DBCA建库时选择ASM做为存储方案时,有时候会报错说ASM是单实例环境,不是RAC环境,这样就无法继续建库下来,
出错信息如下:

The ASM instance configured on the local node is a single-instance ASM.To create a single-instance database using this
ASM instance ,restart DBCA and select the single-instance database option ,to create a RAC database using this ASM instance,
convert it to RAC ASM first.

这个错误一般是发生在重装clusterware和database后,这样无论怎么样重启DBCA运行都会报同样的错。
具体的解决办法便是在/etc/oratab里面的关于ASM的记录:+ASM1:/u01/app/oracle/product/10.2.0/db_1:N这么一行删除掉,
再接着建库就可以了。碰到过多次这个错误,记录在这里备忘一下。

[root@node1 bin]# ./srvctl stop asm -n node1
[root@node1 bin]# ./srvctl stop asm -n node2
[root@node1 bin]# ./crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora....SM1.asm application    OFFLINE   OFFLINE               
ora....E1.lsnr application    ONLINE    ONLINE    node1       
ora.node1.gsd  application    ONLINE    ONLINE    node1       
ora.node1.ons  application    ONLINE    ONLINE    node1       
ora.node1.vip  application    ONLINE    ONLINE    node1       
ora....SM2.asm application    ONLINE    OFFLINE               
ora....E2.lsnr application    ONLINE    ONLINE    node2       
ora.node2.gsd  application    ONLINE    ONLINE    node2       
ora.node2.ons  application    ONLINE    ONLINE    node2       
ora.node2.vip  application    ONLINE    ONLINE    node2       
[root@node1 bin]# ./srvctl remove asm -n node1
[root@node1 bin]# ./srvctl remove asm -n node2
[root@node1 bin]# ./crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora....E1.lsnr application    ONLINE    ONLINE    node1       
ora.node1.gsd  application    ONLINE    ONLINE    node1       
ora.node1.ons  application    ONLINE    ONLINE    node1       
ora.node1.vip  application    ONLINE    ONLINE    node1       
ora....E2.lsnr application    ONLINE    ONLINE    node2       
ora.node2.gsd  application    ONLINE    ONLINE    node2       
ora.node2.ons  application    ONLINE    ONLINE    node2       
ora.node2.vip  application    ONLINE    ONLINE    node2       
[root@node1 bin]# su - oracle
[oracle@node1 ~]$ dbca -silent -deleteASM
Look at the log file "/u01/app/product/10.2.0/db_1/cfgtoollogs/dbca/silent.log" for further details
[oracle@node1 ~]$ ssh node2
[oracle@node2 ~]$ dbca -silent -deleteASM
Look at the log file "/u01/app/product/10.2.0/db_1/cfgtoollogs/dbca/silent.log" for further details.
dd if=/dev/zero of=/dev/ASM-DATA01 bs=8k count=256
dd if=/dev/zero of=/dev/ASM-DATA02 bs=8k count=256
dd if=/dev/zero of=/dev/ASM-RCV01 bs=8k count=256
dd if=/dev/zero of=/dev/ASM-RCV02 bs=8k count=256

验证RAC安装

总结RAC安装

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值