暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

CentOS 7-Oracle RAC 安装

原创 黄丽萍 2021-08-01
2477

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-libe
i686.rpm
rpm -ivh gcci686.rpm
rpm -ivh glibc
i686.rpm
rpm -ivh libaioi686.rpm
rpm -ivh libgcc
i686.rpm
rpm -ivh libstdci686.rpm
rpm -ivh make
i686.rpm
rpm -ivh numactl-i686.rpm
rpm -ivh sysstat
i686.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之前。

步骤如下:

  1. 以root用户创建服务文件

    #touch /usr/lib/systemd/system/ohas.service

    #chmod 777 /usr/lib/systemd/system/ohas.service

  2. 将以下内容添加到新创建的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
  1. 以root用户运行下面的命令
    systemctl daemon-reload
    systemctl enable ohas.service
    systemctl start ohas.service
  1. 查看运行状态
   [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
最后修改时间:2021-08-02 08:58:07
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论