# Red Hat Enterprise Linux Server release 6.10.x86_64 (Santiago)
# Oracle Linux 7.5 x86_64
p13390677_112040_Linux-x86-64_1of7.zip
p13390677_112040_Linux-x86-64_2of7.zip
p13390677_112040_Linux-x86-64_3of7.zip
1.主机名都用小写字母,长度不能超过15位,不要有特殊符号
2.两个节点的Plublic和VIP所在网卡的网卡名要一样
3.表决盘应该都是相同的大小。不同的大小可能导致可用性降低。
1.IP地址规划
节点 | hostname | 类型 | IP地址 | 接口 | 备注 |
---|---|---|---|---|---|
1 | rac1 | Plublic IP | 10.0.1.131 | eth0 | 手动设置 |
2 | rac2 | Plublic IP | 10.0.1.132 | eth0 | 手动设置 |
1 | rac1-vip | Virtaual IP | 10.0.1.133 | eth0 | 集群自动设置 |
2 | rac2-vip | Virtaual IP | 10.0.1.134 | eth0 | 集群自动设置 |
Cluster | rac-scan | SCAN IP | 10.0.1.135 | eth0 | 集群自动设置 |
1 | rac1-priv | Private IP | 11.11.11.131 | eth1 | 手动设置 |
2 | rac2-priv | Private IP | 11.11.11.132 | eth1 | 手动设置 |
2.在两个节点分别将Plublic IP和Private IP写入(by all)
只需要手动在两个节点上设置静态IP地址即可。修改主机名、关闭防火墙等使用下边脚本来完成
vim /etc/sysconfig/network-scripts/ifcfg-eth0
vim /etc/sysconfig/network-scripts/ifcfg-eth1
1.现在Win2012上创建5个存储盘 这里创建了三个1G的投票盘(votingdisk),一个20G的数据盘(data),一个10G的备份盘(backup)。
2.连接iscsi 安装并设置自动启动(by all)
扫描iscsi存储并重启服务器,重启后会自动挂载
mkdir -p /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
cd /mnt/cdrom/Packages
----- RedHat6:
rpm -ivh iscsi-initiator-utils-6.2.0.873-27.el6_9.x86_64.rpm
chkconfig iscsid on
iscsiadm -m discovery -t sendtargets -p 10.0.1.141:3260
----- RedHat7:
rpm -ivh iscsi-initiator-utils-6.2.0.874-7.0.1.el7.x86_64.rpm
systemctl start iscsid
systemctl enable iscsid
iscsiadm -m discovery -t sendtargets -p 10.0.1.141:3260
3.查看挂载磁盘并分区(任意一个节点操作即可)
ll /dev/sd*
fdisk /dev/sdb
fdisk /dev/sdc
fdisk /dev/sdd
fdisk /dev/sde
fdisk /dev/sdf
分区后如果看不到分区可用以下命令刷新
partprobe /dev/sdb
partprobe /dev/sdc
partprobe /dev/sdd
partprobe /dev/sde
partprobe /dev/sdf
4.配置裸盘(by all)
vim /etc/udev/rules.d/60-raw.rules
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="sdf1", RUN+="/bin/raw /dev/raw/raw5 %N"
KERNEL=="raw[1-5]*", OWNER="grid" GROUP="asmadmin", MODE="660"
5.启动并验证udev(by all)
----- RedHat6:
/sbin/start_udev
[root@rac1 sshsetup]# ll /dev/raw/
总用量 0
crw-rw---- 1 grid asmadmin 162, 1 12月 28 20:14 raw1
crw-rw---- 1 grid asmadmin 162, 2 12月 28 20:14 raw2
crw-rw---- 1 grid asmadmin 162, 3 12月 28 20:14 raw3
crw-rw---- 1 grid asmadmin 162, 4 12月 28 20:14 raw4
crw-rw---- 1 grid asmadmin 162, 5 12月 28 20:14 raw5
crw-rw---- 1 root disk 162, 0 12月 28 20:14 rawctl
----- RedHat7:
/sbin/udevadm trigger --type=devices --action=change
重新加载udev rule
/sbin/udevadm control --reload
诊断udev rule
/sbin/udevadm test /sys/block/sdb
ll /dev/raw/
如果磁盘有数据的可以使用以下命令清空磁盘信息(任意一个节点操作即可)
dd if=/dev/zero of=/dev/raw/raw1 bs=1024 count=256
dd if=/dev/zero of=/dev/raw/raw2 bs=1024 count=256
dd if=/dev/zero of=/dev/raw/raw3 bs=1024 count=256
dd if=/dev/zero of=/dev/raw/raw4 bs=1024 count=256
dd if=/dev/zero of=/dev/raw/raw5 bs=1024 count=256
1.使用本脚本应注意事项(by all)
1.必须使用root执行
2.请确认已经将PlublicIP设置为静态IP
3.请确认已挂载Linux安装光盘
4.本脚本可以重复执行
5.本脚本会覆盖hosts设置,如有特殊需求的请在安装完毕后手动恢复所需内容
6.vip和priv主机名格式为:“主机名-vip”和“主机名-priv”,如有需要请更改
7.此脚本编写环境为RedHat6.10 && Oracle 11g RAC
8.此脚本只针对两个节点的RAC环境初始化,脚本启动的时候会让选择节点1还是节点2
9.最后请请根据自己实际情况修改脚本内最上部变量后即可执行
2.本脚本所实现功能(by all)
1.关闭SELinux
2.关闭iptables
3.修改主机名
4.写入hosts
5.禁用ntpd
6.创建所需要的账户和组
7.新建grid和oracle安装目录
8.配置oracle和grid用户变量
9.配置本地YUM并安装依赖包
1.1.使用oracle官方系统的脚本(用root账户在其中一个节点执行即可)
注意:需要同时配置grid和oracle两个账户下的public ip和vip的ssh互信
注意:在生成秘钥的时候不要设置密码
/home/grid/grid/sshsetup/sshUserSetup.sh -user oracle -hosts 'rac1 rac2 rac1-priv rac2-priv' -advanced
/home/grid/grid/sshsetup/sshUserSetup.sh -user grid -hosts 'rac1 rac2 rac1-priv rac2-priv' -advanced
-hosts 表示:需要配置互信的服务器ip
-user 表示:用于远程登录到服务器上的用户名
-advanced 表示:hosts里的主机,每两个主机之间都是互信的。
如果不加-advanced,例如:本机是HOST-A,在本机执行./sshUserSetup.sh -user aime -hosts A B C。那么就是HOST-A->A, HOST-A->B, HOST-A->C 的互信关系。A,B,C之间是不互信的。
1.2.可以使用以下命令测试刚才做的ssh互信是否生效,如果没有提示输入密码并且输出了系统时间就OK(by all)
su - oracle
ssh rac1 date && \
ssh rac2 date && \
ssh rac1-priv date && \
ssh rac2-priv date
su - grid
ssh rac1 date && \
ssh rac2 date && \
ssh rac1-priv date && \
ssh rac2-priv date
2.1.执行安装前的检查(任意节点执行一次即可)
su - grid
/home/grid/grid/./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose -fixup
语法说明:
-pre: 该选项主要检查是否满足安装的需要。
-post:该选择主要检查安装后组件是否正常。
-n:该选项用于指定节点列表。
-verbose:该选项用于输出详细的验证信息。
-fixup:这是Oracle 11gR2中新增加的一个参数。利用这个参数,可以产生一个名为runfixup.sh的脚本。
runfixup.sh脚本中包含一系列的操作系统命令,利用这个脚本可以对操作系统进行一定的修改,使其满足安装条件。完成系统进行校验之后,以root用户的身份执行脚本runfixup.sh,就可以解决操作系统中一些尚不满足安装条件的情况。
2.2.根据提示使用root用户在两个节点执行修复脚本并安装cvuqdisk和pdksh,安装完成后再此运行检查应该除了GNS和时间同步其他全部OK(by all)
/tmp/CVU_11.2.0.4.0_grid/runfixup.sh
rpm -ivh /home/grid/grid/rpm/cvuqdisk-1.0.9-1.rpm
rpm -ivh pdksh-5.2.14-37.el5_8.1.i386.rpm
rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm
pdksh需要单独下载:
https://pan.baidu.com/s/1cb3nsP7plx2tAqyLmeMGiQ
https://pan.baidu.com/s/1zL3bawYb4sLYx3bqEHQzlw
/home/grid/grid/runInstaller -showProgress -silent -responseFile /home/grid/grid.rsp
-showProgress 用于在控制台上显示安装进度。仅在无提示安装下才支持此选项。
-ignorePrereq 忽略运行先决条件检查。由于我们没有使用DNS来解析SCAN所以会报一个SCAN的错误,因为使用udev绑定裸设备而没有使用ASMLIB来使用ASM,所以会报一个ASM的错误,这两个错误都是可以忽略的,但静默安装在检测到错误后就会停止安装,不能像图形界面那样点一下忽略跳过,所以我们使用这个参数来绕过预检
-silent 对于无提示模式下的操作, 输入内容可以是一个响应文件, 也可以是命令行变量值对的列表。
-responseFile 指定要使用的响应文件和路径。
其它命令请查询帮助 -help
1.节点1:/u01/app/oraInventory/orainstRoot.sh
2.节点2:/u01/app/oraInventory/orainstRoot.sh
3.节点1:/u01/app/11.2.0/grid/root.sh
4.节点2:/u01/app/11.2.0/grid/root.sh
Redhat7在执行root.sh的时候出现以下错误提示,经查是个bug:
ohasd failed to start
Failed to start the Clusterware. Last 20 lines of the alert log follow:
2018-12-31 21:40:24.432:
[client(11531)]CRS-2101:The OLR was formatted using version 3.
解决方法1:
/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1
在运行安装程序的节点使用grid用户执行以下脚本
关于此密码文件的官方说明:https://docs.oracle.com/database/121/CWLIN/app_nonint.htm#CWLIN379
touch /home/grid/cfgrsp.properties
/u01/app/11.2.0/grid/cfgtoollogs/configToolAllCommands RESPONSE_FILE=/home/grid/cfgrsp.properties
在这里我们只提供一个空文件,关于官方说明只是在需要使用智能管理平台界面IPMICA的时候才需要提供密码。
[grid@rac1 ~]$ 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
[grid@rac1 ~]$ crs_stat -t -v
Name Type R/RA F/FT Target State Host
----------------------------------------------------------------------
ora....ER.lsnr ora....er.type 0/5 0/ ONLINE ONLINE rac1
ora....N1.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE rac1
ora.OCR.dg ora....up.type 0/5 0/ ONLINE ONLINE rac1
ora.asm ora.asm.type 0/5 0/ ONLINE ONLINE rac1
ora.cvu ora.cvu.type 0/5 0/0 ONLINE ONLINE rac1
ora.gsd ora.gsd.type 0/5 0/ OFFLINE OFFLINE
ora....network ora....rk.type 0/5 0/ ONLINE ONLINE rac1
ora.oc4j ora.oc4j.type 0/1 0/2 ONLINE ONLINE rac1
ora.ons ora.ons.type 0/3 0/ ONLINE ONLINE rac1
ora....SM1.asm application 0/5 0/0 ONLINE ONLINE rac1
ora....C1.lsnr application 0/5 0/0 ONLINE ONLINE rac1
ora.rac1.gsd application 0/5 0/0 OFFLINE OFFLINE
ora.rac1.ons application 0/3 0/0 ONLINE ONLINE rac1
ora.rac1.vip ora....t1.type 0/0 0/0 ONLINE ONLINE rac1
ora....SM2.asm application 0/5 0/0 ONLINE ONLINE rac2
ora....C2.lsnr application 0/5 0/0 ONLINE ONLINE rac2
ora.rac2.gsd application 0/5 0/0 OFFLINE OFFLINE
ora.rac2.ons application 0/3 0/0 ONLINE ONLINE rac2
ora.rac2.vip ora....t1.type 0/0 0/0 ONLINE ONLINE rac2
ora....ry.acfs ora....fs.type 0/5 0/ ONLINE ONLINE rac1
ora.scan1.vip ora....ip.type 0/0 0/0 ONLINE ONLINE rac1
[grid@rac1 ~]$ olsnodes -n
rac1 1
rac2 2
[grid@rac1 ~]$ ps -ef|grep lsnr|grep -v 'grep'|grep -v 'ocfs'|awk '{print$9}'
LISTENER_SCAN1
LISTENER
[grid@rac1 ~]$ srvctl status asm -a
ASM 正在 rac2,rac1 上运行
ASM 已启用。
[grid@rac1 ~]$ olsnodes -n -i -s -t
rac1 1 rac1-vip Active Unpinned
rac2 2 rac2-vip Active Unpinned
[grid@rac1 ~]$ crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 859e013bd7544f67bfb2f5ebc7ecbae4 (/dev/raw/raw1) [OCR]
2. ONLINE a96ac903004f4ffebf2f6da76fb5325b (/dev/raw/raw2) [OCR]
3. ONLINE 6e53a9f9bf8e4facbf26317b8edfbd34 (/dev/raw/raw5) [OCR]
Located 3 voting disk(s).
[grid@rac1 ~]$ srvctl config scan
SCAN 名称: rac-scan, 网络: 1/10.0.1.0/255.255.255.0/eth0
SCAN VIP 名称: scan1, IP: /rac-scan/10.0.1.135
[grid@rac1 ~]$ srvctl config scan_listener
SCAN 监听程序 LISTENER_SCAN1 已存在。端口: TCP:1521
1.创建ASM磁盘组DATA用于存放数据库文件和BAK用于备份
方法1:使用ASMCA
方法2:使用ASMCMD
/home/oracle/database/runInstaller
-responseFile 指定要使用的响应文件和路径。
-silent 对于无提示模式下的操作, 输入内容可以是一个响应文件, 也可以是命令行变量值对的列表。
-executePrereqs 仅执行先决条件检查。
-showProgress 用于在控制台上显示安装进度。仅在无提示安装下才支持此选项。
Bug说明:https://www.cnblogs.com/zx3212/p/7017641.html
ALERT: Grid Infrastructure Fails to Start OHASD With RedHat Linux or Oracle Linux with RedHat Compatible Kernel (RHCK) Version 3.10.0-514.21.2.EL7.X86_64 or Higher (Doc ID 2282371.1)
https://community.oracle.com/message/14424838#14424838
解决方法:手动创建服务文件,并设置开机自动启动
touch /usr/lib/systemd/system/ohas.service
chmod 777 /usr/lib/systemd/system/ohas.service
cat </usr/lib/systemd/system/ohas.service
[Unit]
Description=Oracle High Availability Services
After=syslog.target
[Service]
ExecStart=/etc/init.d/init.ohasd run >/dev/null 2>&1 Type=simple
Restart=always
[Install]
WantedBy=multi-user.target
EOF
以root用户运行下面的命令
systemctl daemon-reload
systemctl enable ohas.service
systemctl start ohas.service
#/bin/bash
# 本脚本针对RedHat6、CentOS6静默安装Oracle 11g RAC初始化系统参数用
# 本脚本只适用于新安装系统的初始化,已经在使用或者有调整系统参数的禁止使用!!!!!
# 注意:本脚本会覆盖hosts设置
################################### 已验证 Linux 发行版 ###################################
# Red Hat Enterprise Linux Server release 6.10.x86_64 (Santiago)
# Oracle Linux 7.5 x86_64
################################### 请根据自己实际情况修改变量 ###################################
rac1HostName=rac1
rac2HostName=rac2
rac1PlublicIP=10.0.1.131
rac2PlublicIP=10.0.1.132
rac1VIP=10.0.1.133
rac2VIP=10.0.1.134
scanIP=10.0.1.135
rac1PrivIP=11.11.11.131
rac2PrivIP=11.11.11.132
scanName=rac-scan
oraclePasswd=oracle
gridPasswd=grid
# grid and oracle 根目录
GridOracleHomeTemp=/u01
# grid实例名称(节点1为:“名称1”,节点2为:“名称2”)
GRID_SIDTemp=+ASM
# 安装grid时候的:Oracle Base
GRID_BASETemp=/u01/app/grid
# 安装grid时候的:Software Location
GRID_HOMETemp=/u01/app/11.2.0/grid
# 安装database时候的:Oracle Base
ORACLE_BASETemp=/u01/app/oracle
# 数据库名称
ORACLE_UNQNAMETemp=oracledbrac
# 数据库实例名称(节点1实例名称为:orcl1,节点2为:orcl2)
ORACLE_SIDTemp=orcl
################################### 请根据自己实际情况修改变量 ###################################
# 检查当前用户是否为root权限
if [ `id -u` -eq 0 ];then
echo "当前用户是root用户,将继续安装!"
else
echo "非root用户!"
exit 0
fi
# 输出提示,是否已设置静态IP并挂载光驱
echo
read -p "请确认您已经将PlublicIP设置为静态IP并已挂载Linux安装光盘.按Enter键开始,Ctrl+C退出" tempchar
echo
# 请选择你的系统版本(RedHat6或者Redhat7)
read -p "系统版本为:6 or 7:" LinuxVer
if [ ${LinuxVer} -eq 6 ]
then
echo "您选择的系统是Linux发行版:6"
elif [ ${LinuxVer} -eq 7 ]
then
echo "您选择的系统是Linux发行版:7"
else
echo "输入错误,程序将推出"
exit
fi
# 选择当前节点(此脚本只支持双节点安装RAC)
read -p "当前节点为1 or 2:" nodeNum
if [ $nodeNum -eq 1 ]
then
echo "当前服务器为:节点1"
hostname=${rac1HostName}
racPlublicip=${rac1PlublicIP}
racVIP=${rac1VIP}
elif [ $nodeNum -eq 2 ]
then
echo "当前服务器为:节点2"
hostname=${rac2HostName}
racPlublicip=${rac2PlublicIP}
racVIP=${rac2VIP}
else
echo -e "\033[31m节点选择错误\033[0m"
exit
fi
# 1.关闭SELinux
grep "SELINUX=disabled" /etc/selinux/config > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "SElinux本身就是关闭状态"
setenforce 0
else
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
[ $? -eq 0 ] && echo "关闭SELinux - Success" || echo -e "\033[31m关闭SELinux----------Failed\033[0m"
setenforce 0
fi
# 2.关闭iptables和firewalld(需要区分6和7)
if [ ${LinuxVer} -eq 6 ]
then
service iptables stop
chkconfig iptables off
[ $? -eq 0 ] && echo "禁止iptables开机自动启动 - Success" || echo -e "\033[31m禁止iptables开机自动启动----------Failed\033[0m"
else
systemctl stop firewalld
systemctl disable firewalld
[ $? -eq 0 ] && echo "禁止firewalld开机自动启动 - Success" || echo -e "\033[31m禁止firewalld开机自动启动----------Failed\033[0m"
systemctl stop iptables
systemctl disable iptables
[ $? -eq 0 ] && echo "禁止iptables开机自动启动 - Success" || echo -e "\033[31m禁止iptables开机自动启动----------Failed\033[0m"
fi
# 3.修改主机名(需要区分6和7)
if [ ${LinuxVer} -eq 6 ]
then
hostname ${hostname}
sed -i "/HOSTNAME=/c HOSTNAME=${hostname}" /etc/sysconfig/network
[ $? -eq 0 ] && echo "修改主机名 - Success" || echo -e "\033[31m修改主机名----------Failed\033[0m"
else
hostnamectl set-hostname ${hostname}
[ $? -eq 0 ] && echo "修改主机名 - Success" || echo -e "\033[31m修改主机名----------Failed\033[0m"
fi
# 4.写入hosts
cat </etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
${rac1PlublicIP} ${rac1HostName}
${rac2PlublicIP} ${rac2HostName}
${rac1VIP} ${rac1HostName}-vip
${rac2VIP} ${rac2HostName}-vip
${scanIP} ${scanName}
${rac1PrivIP} ${rac1HostName}-priv
${rac2PrivIP} ${rac2HostName}-priv
EOF
[ $? -eq 0 ] && echo "写入hosts文件 - Success" || echo -e "\033[31m写入hosts----------Failed\033[0m"
# 5.禁用ntpd,Oracle会自动启用自己的ctssd来进行时间同步(需要区分6和7)
if [ ${LinuxVer} -eq 6 ]
then
service ntpd stop
chkconfig ntpd off
[ $? -eq 0 ] && echo "禁止ntp开机自动启动 - Success" || echo -e "\033[31m禁止ntp开机自动启动----------Failed\033[0m"
# mv /etc/ntp.conf /etc/ntp.conf.bak > /dev/null 2>&1
else
systemctl stop ntpd
systemctl disable ntpd
[ $? -eq 0 ] && echo "禁止ntp开机自动启动 - Success" || echo -e "\033[31m禁止ntp开机自动启动----------Failed\033[0m"
# mv /etc/ntp.conf /etc/ntp.conf.bak > /dev/null 2>&1
fi
# 6.创建所需要的账户和组
#Add oracle user. If present ,do nothing but create the mandatory groups
#添加oracle用户。 如果存在,除了创建必需组之外什么也不做
USERID="54321"
GROUPID="54321"
# 6.1.检查GROUPID是否被占用
groupnum=`cat /etc/group | sort -t: -g +2 -3 | grep -v nfsnobody | cut -f3 -d":" | tail -1`
if [ "${groupnum}" -ge "${GROUPID}" ]; then
GROUPID=`expr $groupnum + 1`
fi
# 6.2.检查USERID是否被占用
usernum=`cat /etc/passwd | sort -t: -g +2 -3 | grep -v nfsnobody | cut -f3 -d":" | tail -1`
if [ "${usernum}" -ge "${USERID}" ]; then
USERID=`expr $usernum + 1`
fi
# 6.3.创建oinstall组
/bin/grep "^oinstall" /etc/group > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "Group oinstall - 已经存在"
else
echo "Adding group oinstall with gid ${GROUPID}"
/usr/sbin/groupadd -g ${GROUPID} oinstall
fi
# 6.4.创建dba组
/bin/grep "^dba" /etc/group > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "Group dba - 已经存在"
else
echo "Adding group dba"
/usr/sbin/groupadd dba
fi
# 6.5.创建oper组 add by 6
/bin/grep "^oper" /etc/group > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "Group oper - 已经存在"
else
echo "Adding group oper"
/usr/sbin/groupadd oper
fi
# 6.6.创建asmdba组 add by 6
/bin/grep "^asmdba" /etc/group > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "Group asmdba - 已经存在"
else
echo "Adding group asmdba"
/usr/sbin/groupadd asmdba
fi
# 6.7.创建asmadmin组 add by 6
/bin/grep "^asmadmin" /etc/group > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "Group asmadmin - 已经存在"
else
echo "Adding group asmadmin"
/usr/sbin/groupadd asmadmin
fi
# 6.8.创建asmoper组 add by 6
/bin/grep "^asmoper" /etc/group > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "Group asmoper - 已经存在"
else
echo "Adding group asmoper"
/usr/sbin/groupadd asmoper
fi
# 6.9.创建oracle账户,如果已有oracle账号,将自动为该账号设置密码。
/bin/grep "^oracle:" /etc/passwd > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Adding user oracle with user id ${USERID}, initial login group oinstall, supplementary group asmadmin,asmdba,dba,oper and home directory /home/oracle"
/usr/sbin/useradd -u ${USERID} -g oinstall -G asmadmin,asmdba,dba,oper -d /home/oracle oracle
if [ "$?" -eq "0" ]; then
echo "Changing ownership of /home/oracle to oracle:oinstall"
/bin/chown oracle:oinstall /home/oracle
else
echo -e "\033[31m创建oracle用户失败----------Failed\033[0m"
fi
else
echo "用户oracle已经存在"
fi
# 6.10.创建grid账户 如果已有grid账号,将自动为该账号设置密码。add by 6
/bin/grep "^grid:" /etc/passwd > /dev/null 2>&1
if [ $? -ne 0 ]; then
#Add the user - password is disabled for grid user.
#添加用户 - 并自动为grid用户设置密码。
echo "Adding user grid with user id ${USERID}, initial login group oinstall, supplementary group asmadmin,asmdba,asmoper,dba and home directory /home/grid"
/usr/sbin/useradd -u `expr ${USERID} + 1` -g oinstall -G asmadmin,asmdba,asmoper,dba -d /home/grid grid
if [ "$?" -eq "0" ]; then
echo "Changing ownership of /home/grid to grid:oinstall"
/bin/chown grid:oinstall /home/grid
else
echo -e "\033[31m创建grid用户失败----------Failed\033[0m"
fi
else
echo "用户grid已经存在"
fi
# 6.11.为oracle账户设置密码
echo ${oraclePasswd} | passwd --stdin oracle
if [ $? -eq 0 ]
then
echo "修改oracle密码 - Success"
else
echo -e "\033[31m修改oracle密码----------Failed\033[0m"
fi
# 6.12.为grid账户设置密码
echo ${gridPasswd} | passwd --stdin grid
if [ $? -eq 0 ]
then
echo "修改grid密码 - Success"
else
echo -e "\033[31m修改grid密码----------Failed\033[0m"
fi
# 6.13.检查oracle用户所属组是否正确
id oracle | grep asmadmin > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "oracle附属组检查通过"
else
usermod -aG asmadmin oracle
if [ $? -eq 0 ]
then
echo "用oracle用户添加组成功"
else
echo -e "\033[31m用oracle用户添加组失败----------Failed\033[0m"
fi
fi
id oracle | grep asmdba > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "oracle附属组检查通过"
else
usermod -aG asmdba oracle
if [ $? -eq 0 ]
then
echo "用oracle用户添加组成功"
else
echo -e "\033[31m用oracle用户添加组失败----------Failed\033[0m"
fi
fi
id oracle | grep dba > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "oracle附属组检查通过"
else
usermod -aG dba oracle
if [ $? -eq 0 ]
then
echo "用oracle用户添加组成功"
else
echo -e "\033[31m用oracle用户添加组失败----------Failed\033[0m"
fi
fi
id oracle | grep oper > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "oracle附属组检查通过"
else
usermod -aG oper oracle
if [ $? -eq 0 ]
then
echo "用oracle用户添加组成功"
else
echo -e "\033[31m用oracle用户添加组失败----------Failed\033[0m"
fi
fi
# 6.14.检查grid用户所属组是否正确
id grid | grep asmadmin > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "grid附属组检查通过"
else
usermod -aG asmadmin grid
if [ $? -eq 0 ]
then
echo "用户 grid 添加组成功"
else
echo -e "\033[31m用户 grid 添加组失败----------Failed\033[0m"
fi
fi
id grid | grep asmdba > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "grid附属组检查通过"
else
usermod -aG asmdba grid
if [ $? -eq 0 ]
then
echo "用户 grid 添加组成功"
else
echo -e "\033[31m用户 grid 添加组失败----------Failed\033[0m"
fi
fi
id grid | grep asmoper > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "grid附属组检查通过"
else
usermod -aG asmoper grid
if [ $? -eq 0 ]
then
echo "用户 grid 添加组成功"
else
echo -e "\033[31m用户 grid 添加组失败----------Failed\033[0m"
fi
fi
id grid | grep dba > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "grid附属组检查通过"
else
usermod -aG dba grid
if [ $? -eq 0 ]
then
echo "用户 grid 添加组成功"
else
echo -e "\033[31m用户 grid 添加组失败----------Failed\033[0m"
fi
fi
# 获取oinstall组的最终ID
GROUPID=`cat /etc/group | grep oinstall | awk -F ":" '{print $3}'`
# 6.15.检查oracle用户主组是否正确
id oracle | grep gid=${GROUPID} > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "oracle主组检查通过"
else
usermod --gid ${GROUPID} oracle
if [ $? -eq 0 ]
then
echo "用户 grid 主组修改成功"
else
echo -e "\033[31m用户 oracle 主组修改失败----------Failed\033[0m"
fi
fi
# 6.16.检查grid用户主组是否正确
id grid | grep gid=${GROUPID} > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "oracle主组检查通过"
else
usermod --gid ${GROUPID} grid
if [ $? -eq 0 ]
then
echo "用户 grid 主组修改成功"
else
echo -e "\033[31m用户 grid 主组修改失败----------Failed\033[0m"
fi
fi
# 7.新建grid和oracle安装目录
mkdir -p ${GRID_BASETemp}
mkdir -p ${GRID_HOMETemp}
mkdir -p ${ORACLE_BASETemp}
chown -R grid:oinstall ${GridOracleHomeTemp}
chown oracle:oinstall ${ORACLE_BASETemp}
chmod -R 775 ${GridOracleHomeTemp}
# 8.配置oracle和grid用户变量
if [ $nodeNum -eq 1 ]
then
grep 666666 /home/oracle/.bash_profile
if [ $? -eq 0 ]; then
cp /home/oracle/.bash_profile.666666 /home/oracle/.bash_profile
else
cp /home/oracle/.bash_profile /home/oracle/.bash_profile.666666
fi
cat <>/home/oracle/.bash_profile
#add by 666666
export ORACLE_SID=${ORACLE_SIDTemp}1 # RAC1
export ORACLE_UNQNAME=${ORACLE_UNQNAMETemp}
export ORACLE_BASE=${ORACLE_BASETemp}
export ORACLE_HOME=\$ORACLE_BASE/product/11.2.0/db
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export PATH=/usr/sbin:\$PATH
export PATH=\$ORACLE_HOME/bin:\$PATH
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
EOF
grep 666666 /home/grid/.bash_profile
if [ $? -eq 0 ]; then
cp /home/grid/.bash_profile.666666 /home/grid/.bash_profile
else
cp /home/grid/.bash_profile /home/grid/.bash_profile.666666
fi
cat <>/home/grid/.bash_profile
#add by 666666
export ORACLE_SID=${GRID_SIDTemp}1 # RAC1
export ORACLE_BASE=${GRID_BASETemp}
export ORACLE_HOME=${GRID_HOMETemp}
export PATH=/usr/sbin:\$PATH
export PATH=\$ORACLE_HOME/bin:\$PATH
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=\$ORACLE_HOME/JRE:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
umask 022
EOF
else
grep 666666 /home/oracle/.bash_profile
if [ $? -eq 0 ]; then
cp /home/oracle/.bash_profile.666666 /home/oracle/.bash_profile
else
cp /home/oracle/.bash_profile /home/oracle/.bash_profile.666666
fi
cat <>/home/oracle/.bash_profile
#add by 666666
export ORACLE_SID=${ORACLE_SIDTemp}2 # RAC2
export ORACLE_UNQNAME=${ORACLE_UNQNAMETemp}
export ORACLE_BASE=${ORACLE_BASETemp}
export ORACLE_HOME=\$ORACLE_BASE/product/11.2.0/db
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export PATH=/usr/sbin:\$PATH
export PATH=\$ORACLE_HOME/bin:\$PATH
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
EOF
grep 666666 /home/grid/.bash_profile
if [ $? -eq 0 ]; then
cp /home/grid/.bash_profile.666666 /home/grid/.bash_profile
else
cp /home/grid/.bash_profile /home/grid/.bash_profile.666666
fi
cat <>/home/grid/.bash_profile
#add by 666666
export ORACLE_SID=${GRID_SIDTemp}2 # RAC2
export ORACLE_BASE=${GRID_BASETemp}
export ORACLE_HOME=${GRID_HOMETemp}
export PATH=/usr/sbin:\$PATH
export PATH=\$ORACLE_HOME/bin:\$PATH
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=\$ORACLE_HOME/JRE:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
umask 022
EOF
fi
# 9.配置本地YUM并安装依赖包(需要区分6和7)
mkdir -p /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
mv /etc/yum.repos.d/local.repo /etc/yum.repos.d/local.repo.bak
cat </etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1
EOF
yum clean all #清理本地缓存
yum clean plugins #清理插件缓存
yum install -y binutils-* compat-db* compat-db-* control-center* gcc-* gcc-c++-* glibc-* glibc-common-* gnome-libs-* \
make-* pdksh* sysstat-* xscreensaver-* make-* gdb-6.1post-* glibc-* glibc-common-* glibc-devel-* glibc-devel-* \
compat-gcc-* compat-gcc-c++-* compat-libstdc++-* compat-libstdc++-devel-* gnome-libs-* libstdc++-* libstdc++-devel-* \
openmotif-* sysstat-* setarch-* libaio-* libaio-devel-* libXp* libXp-devel* elfutils-libelf-devel* unixODBC-* \
unixODBC-devel-* compat-libcap1.x86_64 libcap.so.1 sg3_utils
# 此文件从p13390677_112040_Linux-x86-64_2of7.zip提取
# by 6 20181231 QQ:1327133225
oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v11_2_0
# 修改1:当前安装节点的计算机名称----------------------------------------------(重点注意1)
ORACLE_HOSTNAME=rac1
# 修改2:版本信息路径(路径相关可以不修改)
INVENTORY_LOCATION=/u01/app/oraInventory
# 修改3:语言,多选用,隔开(正常来说保持默认即可)
SELECTED_LANGUAGES=en,zh_CN
oracle.install.option=CRS_CONFIG
# 修改4:grid 的 BASE 和 HOME 目录(路径相关可以不修改)
ORACLE_BASE=/u01/app/grid
ORACLE_HOME=/u01/app/11.2.0/grid
oracle.install.asm.OSDBA=asmdba
oracle.install.asm.OSOPER=asmoper
oracle.install.asm.OSASM=asmadmin
# 修改5:scan名称,和hosts对应--------------------------------------------------(重点注意2)
oracle.install.crs.config.gpnp.scanName=rac-scan
# 修改6:集群监听端口号---------------------------------------------------------(重点注意3)
oracle.install.crs.config.gpnp.scanPort=1521
# 修改7:cluster名称,可以保持默认
oracle.install.crs.config.clusterName=rac-cluster
oracle.install.crs.config.gpnp.configureGNS=false
oracle.install.crs.config.gpnp.gnsSubDomain=
oracle.install.crs.config.gpnp.gnsVIPAddress=
oracle.install.crs.config.autoConfigureClusterNodeVIP=false
# 修改8:节点信息,跟hosts对应---------------------------------------------------(重点注意4)
oracle.install.crs.config.clusterNodes=rac1:rac1-vip,rac2:rac2-vip
# 修改9:网卡信息和网段,对应ifconfig结果(两个节点的网卡名称需要一致)----------(重点注意5)
oracle.install.crs.config.networkInterfaceList=eth0:10.0.1.0:1,eth1:11.11.11.0:2
# 存储形式,使用ASM的话保持默认即可(可以不修改)
oracle.install.crs.config.storageOption=ASM_STORAGE
oracle.install.crs.config.sharedFileSystemStorage.diskDriveMapping=
oracle.install.crs.config.sharedFileSystemStorage.votingDiskLocations=
oracle.install.crs.config.sharedFileSystemStorage.votingDiskRedundancy=NORMAL
oracle.install.crs.config.sharedFileSystemStorage.ocrLocations=
oracle.install.crs.config.sharedFileSystemStorage.ocrRedundancy=NORMAL
oracle.install.crs.config.useIPMI=false
oracle.install.crs.config.ipmi.bmcUsername=
oracle.install.crs.config.ipmi.bmcPassword=
# SYS密码
oracle.install.asm.SYSASMPassword=asmadmin
# 修改10:表决盘名称(可以不修改)
oracle.install.asm.diskGroup.name=OCR
# 修改11:表决盘冗余选项(接受以下3个选项)-----------------------------------------(重点注意6)
# HIGH 高冗余:最少5块磁盘,Oracle ASM默认提供三重镜像。可以容忍在不同故障组中丢失两个Oracle ASM磁盘。
# NORMAL 正常冗余:最少3块磁盘,Oracle ASM默认提供双向镜像,这意味着镜像所有文件,以便每个范围有两个副本。容许丢失一个磁盘。
# EXTERNAL 外部冗余:最少1块盘,由外部RAID提供冗余。
oracle.install.asm.diskGroup.redundancy=NORMAL
oracle.install.asm.diskGroup.AUSize=1
# 修改12:表决盘所使用的裸盘,根据需要修改------------------------------------------(重点注意7)
oracle.install.asm.diskGroup.disks=/dev/raw/raw1,/dev/raw/raw2,/dev/raw/raw5
oracle.install.asm.diskGroup.diskDiscoveryString=
# ASMSNMP密码
oracle.install.asm.monitorPassword=asmadmin
oracle.install.crs.upgrade.clusterNodes=
oracle.install.asm.upgradeASM=false
oracle.installer.autoupdates.option=SKIP_UPDATES
oracle.installer.autoupdates.downloadUpdatesLoc=
AUTOUPDATES_MYORACLESUPPORT_USERNAME=
AUTOUPDATES_MYORACLESUPPORT_PASSWORD=
PROXY_HOST=
PROXY_PORT=0
PROXY_USER=
PROXY_PWD=
PROXY_REALM=