一、注意事项
1、oracle rac11gR2 安装文档
linux:rhel 6.x
db:11.2.0.4
2、规划ip,主机名,存储大小等
5个ip地址(public) 2个private ip
db1、db2
ocr/votedisk 3块磁盘 每块1G normal
data 1块磁盘 100G
arch fra 1块磁盘 50G
3、安装操作系统,常规安装即可。注意时间
注意:
swap分区的设置。
内存如果小于16G swap 1.5倍
内存大于32G swap 16G
网卡的设置
网卡信息必须一致网卡名要一模一样,比如都叫eth0, eth1,不能出现一台节点eth0,eth1, 另一台eth2, eth3不仅名字要一样,而且对应的public, private也要一致,不仅地址要对应,还要求子网掩码要一致 。
二、软件安装
1、关闭相关服务
service iptables stop
chkconfig iptables off
service cups stop
chkconfig cups off
service sendmail stop
chkconfig sendmail off
service smartd stop
chkconfig smartd off
service ntpd stop
chkconfig ntpd off
mv /etc/ntp.conf /etc/ntp.conf.bak
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0
2、配置/etc/hosts文件(配置完成后要进行ping测试,在两节点都进行)
cat >> /etc/hosts << EOF
#public ip
192.168.56.101 rac1
192.168.56.102 rac2
#vitr_vip
192.168.56.103 rac1-vip
192.168.56.104 rac2-vip
#scan-ip
192.168.56.105 rac-scan
#priv-vip
192.168.65.101 rac1-priv
192.168.65.102 rac2-priv
EOF
3、建立用户,用户组,密码(两节点密码必须一致)
groupadd -g 5000 asmadmin
groupadd -g 5001 asmdba
groupadd -g 5002 asmoper
groupadd -g 6000 oinstall
groupadd -g 6001 dba
groupadd -g 6002 oper
useradd -g oinstall -G asmadmin,asmdba,asmoper,dba grid
useradd -g oinstall -G dba,asmdba oracle
#对于已存在用户
usermod -g oinstall -G oinstall,dba,asmdba oracle
4、创建相关目录
mkdir -p /u01/app/11.2.0/grid
mkdir -p /u01/app/grid
mkdir /u01/app/oracle
chown -R grid:oinstall /u01
chown oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
5、创建yum本地源
mkdir /yum
mount /dev/cdrom /yum
rm -rf /etc/yum.repos.d/*.repo
cat >> /etc/yum.repos.d/lds.repo << EOF
[oel6]
name = Enterprise Linux 6 DVD
baseurl=file:///yum/Server
gpgcheck=0
enabled=1
EOF
6、安装软件包:
yum install \
compat* \
libstdc* \
glibc-headers \
glibc-devel \
libgomp \
libXp* \
sysstat* \
util-linux \
libXp* \
libXp.i686 \
compat-glibc \
libaio* \
make* \
libXt* \
libXt.i686 \
binutils* \
elfutils* \
kernel-headers* \
libgcc \
numactl \
glibc* \
gcc* \
libXtst.i686 \
elfutils-libelf-devel*
7、修改内核参数:
kernel.shmmax 一般为物理内存的一半,kernel.shmall一般是物理内存/4k
cat >> /etc/sysctl.conf << EOF
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall =1048576
kernel.shmmax = 2147483648
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
EOF
sysctl -p
8、配置limits文件
cat >> /etc/security/limits.conf << EOF
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
# grid
grid soft nofile 1024
grid hard nofile 65536
grid soft nproc 2047
grid hard nproc 16384
grid soft stack 10240
grid hard stack 32768
EOF
9、bash_profile的设置
su - grid
vi .bash_profile
#grid用户
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/sbin:/bin:/usr/sbin:/usr/bin
export ORACLE_SID=+ASM1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
#执行完上面命令后执行生效命令:
source .bash_profile
su - oracle
vi .bash_profile
#oracle用户
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/sbin:/bin:/usr/sbin:/usr/bin
export ORACLE_SID=db1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
#执行完上面命令后执行生效命令:
source .bash_profile
10、磁盘扫描
#查看主机总线号
ls /sys/class/scsi_host/
#重新扫描SCSI总线来添加设备
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan
echo "- - -" > /sys/class/scsi_host/host3/scan
echo "- - -" > /sys/class/scsi_host/host4/scan
echo "- - -" > /sys/class/scsi_host/host5/scan
echo "- - -" > /sys/class/scsi_host/host6/scan
echo "- - -" > /sys/class/scsi_host/host7/scan
#查看磁盘
fdisk -l
ll /dev/sd*
11、初始化磁盘
#linux 6
touch /etc/udev/rules.d/99-oracle-asmdevices.rules
#使用ls -l /dev/sd*查看有几块sd盘
for i in b c d e f;
do
echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\", RESULT==\"`/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", NAME=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\"" >> /etc/udev/rules.d/99-oracle-asmdevices.rules
done
#执行完上面指令后执行重启udev服务
start_udev
#查看asm磁盘
ll /dev/*asm*
#用这种方式添加,在后面的添加asm磁盘组的时候,需要指定Change Diskcovery Path为
/dev/*asm*
12、检查是否满足安装条件
./runcluvfy.sh stage -pre crsinst -n db1,db2 -verbose
13、安装grid软件
#grid用户下 解压安装包 unzip 包名
切记一定要在所有节点都安装grid文件中的rpm包,然后再进行下一步
#安装rpm包
14、ASMCA FRA、DATA
略
15、安装数据库软件
略
16、dbca建库
略
三、配置共享存储
一节点:
1、安装
yum install scsi-target-utils*
2、添加配置文件
cat >> /etc/tgt/targets.conf << EOF
<target iqn.2019-09.com.oracle:rac>
backing-store /dev/sdb
backing-store /dev/sdc
backing-store /dev/sdd
backing-store /dev/sde
backing-store /dev/sdf
initiator-address 1.1.1.0/24
write-cache off
</target>
EOF
3、启动服务
service tgtd start
chkconfig tgtd on
二节点
4、安装iscsi客户端 :
yum install iscsi*
5、启动iscsi守护进程
service iscsid start
chkconfig iscsi on
echo "options=--whitelisted --replace-whitespace">/etc/scsi_id.config
6、发现目标
iscsiadm -m discovery -t sendtargets -p 1.1.1.254:3260
7、登录节点
iscsiadm -m node -T iqn.2019-09.com.oracle:rac -p 192.168.0.20:3260 -l
8、重启iscsi服务
service iscsid restart
9、可能出现问题:vmware中的RHEL scsi_id不显示虚拟磁盘的wwid的问题
在vmx文件中添加
disk.EnableUUID = "TRUE"
四、常见问题处理
1、为解决乱码执行export LANG=”US” 报错如下
An unexpected error has been detected by HotSpot Virtual Machine:
SIGSEGV (0xb) at pc=0x000000388ba14d70, pid=3353, tid=139717139875600
Java VM: Java HotSpot(TM) 64-Bit Server VM (1.5.0_17-b03 mixed mode)
Problematic frame:
C [ld-linux-x86-64.so.2+0x14d70] An error report file with more information is saved as hs_err_pid3353.log
If you would like to submit a bug report, please visit:
http://java.sun.com/webapps/bugreport/crash.jsp
#解决方式
#执行语句
export LD_BIND_NOW=1
export LANG=”US”
#再重新运行
2、执行root.sh脚本报错
[grid@14oracle16 /]# /u01/sys_software/product/11.2.0/grid/root.sh
在此处会有停顿,此时要马上开另一个终端用root用户运行以下命令
dd if=/var/tmp/.oracle/npohasd of=/dev/nullbs=1024 count=1
之后就能运行成功啦
3、sysctl -P 报错解决办法
问题症状
修改 linux 内核文件
#vi /etc/sysctl.conf后执行sysctl -P 报错
error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
error: "net.bridge.bridge-nf-call-iptables" is an unknown key
error: "net.bridge.bridge-nf-call-arptables" is an unknown key
解决方法如下:
modprobe bridge
lsmod|grep bridge
执行完上面命令后继续执行:
sysctl -p
4、CRS-4639: Could not contact Oracle High Availability Services
原因,crs没有启动
方法1、oracle中的bug,
启动之前需要执行
/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1
如果想让重启能够执行,需要加入/etc /init.d/rc.local中,两个节点
然后再执行
[root@rac2 bin]# ./crsctl start crs
方法1如果不行可以尝试方法2
[root@rac2 install]# /u01/app/11.2.0/grid/crs/install/roothas.pl -deconfig -force -verbose
然后重新配置
[root@rac2 grid]# ./root.sh
Running Oracle 11g root.sh script...
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/11.2.0/grid
...
如果是centos6以上还需要运行
[root@rac2 ~]# /bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1
检查
[root@rac2 bin]# ./crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
另外,注意的是,如果还是在重启服务器之后不能启动crs,则需要在启动crs之前执行命令(两个节点)
/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1
追根就是oracle的一个bug
[root@rac2 bin]# ./crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4535: Cannot communicate with Cluster Ready Services
CRS-4530: Communications failure contacting Cluster Synchronization Services daemon
CRS-4534: Cannot communicate with Event Manager
这个问题有几个原因
1、使用./crsctl start crs 之后立即执行了check,需要等待
2、需要查看节点连通状态,公有网络私有等,还有就是disk的属性
[root@rac2 disks]# ll
total 0
brw-rw---- 1 oracle dba 8, 17 Feb 10 23:47 DISK5
brw-rw---- 1 oracle dba 8, 33 Feb 10 23:47 DISK6