1.查看系统环境及版本
uname -a
cat /etc/redhat-release
2.修改主机名
永久修改主机名:
# hostnamectl set-hostname centos7
# su
# hostname
centos7
3.配置hosts
确保 RAC 节点名没有出现在环回地址中
确保/etc/hosts?文件的环回地址中不包含节点名(racnode1或racnode2)。 如果计算机名出现在环回地址条目中,
如下所示:
127.0.0.1 racnode1 localhost.localdomain localhost
需要将其删除,
如下所示:
127.0.0.1 localhost.localdomain localhost
echo "192.168.56.101 rac1
192.168.56.201 rac1-vip
192.168.56.102 rac2
192.168.56.202 rac2-vip
89.89.89.101 rac1-priv
89.89.89.102 rac2-priv
192.168.56.150 rac-scan" >> /etc/hosts
cat /etc/hosts
4.关闭防火墙
chkconfig NetworkManager off
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
vi /etc/selinux/config
SELINUX=disabled
5.创建用户和组
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 -u 501 -G dba,asmadmin,asmdba,asmoper grid
useradd -g oinstall -u 502 -G dba,asmdba oracle
passwd oracle
passwd grid
6.配置本地yum源
6.1挂载镜像
mkdir /media
mount /dev/cdrom /media/
6.2备份原yum源配置
cd /etc/yum.repos.d/
mkdir bak
mv *repo bak
6.3创建本地yum源配置文件
vi red.repo
[service]
name=service
baseurl=file:///media
enabled=1
gpgcheck=1
gpgkey=file:///media/rhel/RPM-GPG-KEY-CentOS-7
6.4 更新yum源配置
yum clean all
yum makecache
6.5安装GUI图形界面
yum groupinstall "Server with GUI"
6.6启动图形界面
startx
7. 配置网络
配置enp0s3 ,enp0s8 ip
/etc/sysconfig/network-scripts/ifcfg-enp0s3
8. 安装必要的rmp包
Oracle官方文档中确定要安装的包如下:
binutils-2.17.50.0.6
cvudisk-1.0.9 --在grid安装目录的rpm目录下
compat-libstdc+±33-3.2.3
compat-libstdc+±33-3.2.3 (32 bit)
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
gcc-4.1.2
gcc-c+±4.1.2
glibc-2.5-24
glibc-2.5-24 (32 bit)
glibc-common-2.5
glibc-devel-2.5
glibc-devel-2.5 (32 bit)
glibc-headers-2.5
ksh-20060214
libaio-0.3.106
libaio-0.3.106 (32 bit)
libaio-devel-0.3.106
libaio-devel-0.3.106 (32 bit)
libgcc-4.1.2
libgcc-4.1.2 (32 bit)
libstdc+±4.1.2
libstdc+±4.1.2 (32 bit)
libstdc+±devel 4.1.2
make-3.81
numactl-devel-0.9.8.x86_64
pdksh-5.2.14
sysstat-7.0.2
unixODBC-2.2.11
unixODBC-2.2.11 (32 bit) unixODBC-devel-2.2.11
unixODBC-devel-2.2.11 (32 bit)
检查安装的包:
rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make numactl-devel pdksh sysstat unixODBC unixODBC-devel | sort
yum install xxx -y
不用输入y后再安装
yum install compat* elfutils-libe* gcc* glibc* libaio* libgcc* libstdc* make* numactl-* sysstat* unixODBC* -y
yum install compat*i686.rpm elfutils-libe*i686.rpm gcc*i686.rpm glibc*i686.rpm libaio*i686.rpm libgcc*i686.rpm libstdc*i686.rpm make*i686.rpm numactl-*i686.rpm sysstat*i686.rpm unixODBC*i686.rpm -y
rpm -ivh compati686.rpm
rpm -ivh elfutils-libei686.rpm
rpm -ivh gcci686.rpm
rpm -ivh glibci686.rpm
rpm -ivh libaioi686.rpm
rpm -ivh libgcci686.rpm
rpm -ivh libstdci686.rpm
rpm -ivh makei686.rpm
rpm -ivh numactl-i686.rpm
rpm -ivh sysstati686.rpm
rpm -ivh unixODBC*i686.rpm
rpm -ivh compat-libstdc+±33-3.2.3-69.el6.i686.rpm
rpm -ivh glibc-devel-2.12-1.80.el6.i686.rpm
rpm -ivh unixODBC-devel-2.2.14-11.el6.i686.rpm
yum install unixODBC-devel-2.2.14-11.el6.i686.rpm -y
卸载rpm
rpm -e
注:在Oracle数据库软件安装时,ksh实际是用的pdksh,但ksh也是可以使用的,只是安装时会有警告,pdksh是一个早期的软件包,可以在以下网站找到.
http://rpm.pbone.net/
9. 配置oracle,grid用户的环境变量
grid用户:
cat >>/home/grid/.bash_profile <<EOF
##########2014-01-01############
ORACLE_SID=+ASM1; export ORACLE_SID
#ORACLE_SID=+ASM2; export ORACLE_SID
JAVA_HOME=/usr/bin/java; export JAVA_HOME
ORACLE_BASE=/u01/app/grid; export ORACLE_BASE
ORACLE_HOME=/u01/app/11.2.0/grid; export ORACLE_HOME
ORACLE_PATH=/u01/app/oracle/common/oracle/sql; export ORACLE_PATH
#NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"; export NLS_DATE_FORMAT
PATH=.:\${JAVA_HOME}/bin:\${PATH}:\$HOME/bin:\$ORACLE_HOME/bin
PATH=\${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
PATH=\${PATH}:/u01/app/common/oracle/bin
export PATH
LD_LIBRARY_PATH=\$ORACLE_HOME/lib
LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:\$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
export PATH=\${JAVA_HOME}/bin:\${PATH}:\$HOME/bin:\$ORACLE_HOME/bin:\$PATH
umask 022
export DISPLAY=192.168.56.1:0.0
EOF
clear
cat /home/grid/.bash_profile
oracle用户:
cat >>/home/oracle/.bash_profile <<EOF
##########2014-01-01############
ORACLE_SID=racdb1; export ORACLE_SID
#ORACLE_SID=racdb2; export ORACLE_SID
ORACLE_UNQNAME=racdb; export ORACLE_UNQNAME
JAVA_HOME=/usr/local/java; export JAVA_HOME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=\$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME
ORACLE_PATH=/u01/app/common/oracle/sql; export ORACLE_PATH
#NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"; export NLS_DATE_FORMAT
PATH=.:\${JAVA_HOME}/bin:\${PATH}:\$HOME/bin:\$ORACLE_HOME/bin
PATH=\${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
PATH=\${PATH}:/u01/app/common/oracle/bin
export PATH
LD_LIBRARY_PATH=\$ORACLE_HOME/lib
LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:\$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
CLASSPATH=\$ORACLE_HOME/JRE
CLASSPATH=\${CLASSPATH}:\$ORACLE_HOME/jlib
CLASSPATH=\${CLASSPATH}:\$ORACLE_HOME/rdbms/jlib
CLASSPATH=\${CLASSPATH}:\$ORACLE_HOME/network/jlib
export CLASSPATH
export PATH=\${JAVA_HOME}/bin:\${PATH}:\$HOME/bin:\$ORACLE_HOME/bin
export DISPLAY=192.168.56.1:0.0
EOF
clear
cat /home/oracle/.bash_profile
10.创建oracle基目录
mkdir -p /u01/app/grid
mkdir -p /u01/app/11.2.0/grid
chown -R grid:oinstall /u01
mkdir -p /u01/app/oracle
chown oracle:oinstall /u01/app/oracle
chown -R grid:oinstall /u01/app/11.2.0/grid
chmod -R 775 /u01
11.对oracle软件安装用户设置资源限制
1,
cp /etc/security/limits.conf /etc/security/limits.conf.bak
cat >>/etc/security/limits.conf <<EOF
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
EOF
2,
echo "session required pam_limits.so" >>/etc/pam.d/login
3,
echo "if [ \$USER = "oracle" ] || [ \$USER = "grid" ]; then
if [ \$SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi">> /root/.bash_profile
12. 配置内核参数
cat >> /etc/sysctl.conf <<EOF
#2013-12-18
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 1052125184
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048586
EOF
激活内核参数:
sysctl -p
13. 绕过DNS配置
mv /usr/bin/nslookup /usr/bin/nslookup.original
cat >> /usr/bin/nslookup <<EOF
#!/bin/bash
HOSTNAME=\${1}
if [[ \$HOSTNAME = "rac-scan" ]]; then
echo "Server: 24.154.1.34"
echo "Address: 24.154.1.34#53"
echo "Non-authoritative answer:"
echo "Name: rac-scan"
echo "Address: 192.168.56.150"
else
/usr/bin/nslookup.original \$HOSTNAME
fi
EOF
chmod 775 /usr/bin/nslookup
14. 配置共享存储
14.1 查看没有分区的磁盘
fdisk -l
14.2 查找scsi_id 路径
find / -name scsi_id
14.3 没有对sdb进行分区,执行如下shell脚本
for i in b c d ;
do
echo "KERNEL==\"sd*\", SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\", RESULT==\"`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", SYMLINK+=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\""
done
14.4将结果复制到99-oracle-asmdevices.rules
cd /etc/udev/rules.d/
vi 99-oracle-asmdevices.rules
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c2948ef9d9e4a7937bfc65888bc8", NAME="asm-diskb", OWNER="grid", GROUP="asmadmin", MODE="0660"
14.5 启动udev
/usr/sbin/udevadm control --reload-rules
systemctl status systemd-udevd.service
systemctl enable systemd-udevd.service
14.6检查设备是否正确绑定
# ls -l /dev/asm* /dev/sdb
15. 上传介质到grid的目录,并安装grid
用root用户解压grid包,用grid用户安装图形界面
unzip /media/p13390677_112040_Linux-x86-64_3of7.zip
./runInstaller
15.1 报错
安装grid提示:Package:cvuqdisk-1.0.9-1 filed
解决办法:(grid 按装包的rpm目录下有此包。)
1.执行#cd grid/rpm
2.执行rpm -ivh cvuqdisk-1.0.9-1.rpm (所有节点都要执行)
15.2 执行root脚本
RHEL 7 安装oracle rac 11.2.0.4执行root.sh报错ohasd failed to start
报错原因:
因为RHEL 7使用systemd而不是initd运行进程和重启进程,而root.sh通过传统的initd运行ohasd进程。
解决方法:
在RHEL 7中ohasd需要被设置为一个服务,在运行脚本root.sh之前。
步骤如下:
-
以root用户创建服务文件
#touch /usr/lib/systemd/system/ohas.service
#chmod 777 /usr/lib/systemd/system/ohas.service
-
将以下内容添加到新创建的ohas.service文件中
[root@rac1 init.d]# 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
- 以root用户运行下面的命令
systemctl daemon-reload
systemctl enable ohas.service
systemctl start ohas.service
- 查看运行状态
[root@rac1 init.d]# systemctl status ohas.service
ohas.service - Oracle High Availability Services
Loaded: loaded (/usr/lib/systemd/system/ohas.service; enabled)
Active: failed (Result: start-limit) since Fri 2015-09-11 16:07:32 CST; 1s ago
Process: 5734 ExecStart=/etc/init.d/init.ohasd run >/dev/null 2>&1 Type=simple (code=exited, status=203/EXEC)
Main PID: 5734 (code=exited, status=203/EXEC)
16. oracle 用户安装database软件
su - oracle
cd /u01/tmp/database/
./runInstall
16.1 创建数据库的时候报错
RHRL7.0安装RAC11.2.0.4----Error in invoking target ‘agent nmhs’ of makefile '/u01/app/oracle/product/1
vi $ORACLE_HOME/sysman/lib/ins_emagent.mk
Search for the line
$(MK_EMAGENT_NMECTL)
Change it to:
$(MK_EMAGENT_NMECTL) -lnnz11