一.前期准备
1.rac规划
服务器主机名 | rac1 | rac2 |
---|---|---|
公共ip地址 | 10.76.53.23 | 10.76.53.24 |
虚拟ip地址 | 10.76.53.25 | 10.76.53.26 |
私有ip地址 | 192.168.1.1 | 192.168.1.2 |
oracle RAC SID | cndba11 | cndba12 |
集群实例名称(服务名) | cndba | |
SCAN IP | 10.76.53.27 | |
操作系统 | red hat 7.3 | |
oracle版本 | 19.3.0 |
公共IP地址:服务器物理网卡IP,即对外提供服务的IP
私有IP地址:服务器内网、私网IP,主要用于数据库间同步
虚拟IP地址:与公有IP地址处于同一个网段
Scan IP:集群对外服务提供的地址
二.创建节点
1.创建rac1
硬件要求:4核cpu,内存8gb,硬盘50gb,并且新增一个网络适配器。
创建完成后,进入编辑设置。新增配置:disk.EnableUUID=TRUE(虚拟机显示磁盘uuid),添加完成后点击确认。
选择镜像,安装操作系统。软件选择带有GUI的服务器;安装并且配置网络(两块网卡都需要配置)。
开始安装,等待完成。
2.创建rac2
除了网络配置外,rac2的安装配置步骤和rac1的一致。网络需要配置rac2的公共网络和专用网络。
三.节点配置(rac1和rac2都需要配置)
1.修改主机名和hosts文件
在hosts文件下新增配置:
修改内部网络配置文件,修改完成后重启网卡。
rac2上进行相同的配置。
2.新建账号和组
/usr/sbin/groupadd -g 54321 oinstall
/usr/sbin/groupadd -g 54322 dba
/usr/sbin/groupadd -g 54323 oper
/usr/sbin/groupadd -g 54324 backupdba
/usr/sbin/groupadd -g 54325 dgdba
/usr/sbin/groupadd -g 54326 kmdba
/usr/sbin/groupadd -g 54327 asmdba
/usr/sbin/groupadd -g 54328 asmoper
/usr/sbin/groupadd -g 54329 asmadmin
/usr/sbin/groupadd -g 54330 racdba
/usr/sbin/useradd -u 54321 -g oinstall -G dba,asmdba,oper oracle
/usr/sbin/useradd -u 54322 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,asmoper,asmadmin,racdba grid
echo "oracle" | passwd --stdin oracle
echo "grid" | passwd --stdin grid
3.创建目录
mkdir -p /u01/app/19.3.0/grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle/product/19.3.0/db_1
chown -R grid:oinstall /u01
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
4.关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config #关闭selinux
5.关闭时钟同步
systemctl stop chronyd
systemctl disable chronyd
移除chrony配置文件:(必须移除,否则校验NTP失败)
mv /etc/chrony.conf /etc/chrony.conf.bak
6.关闭avahi-daemon
systemctl stop avahi-daemon
systemctl disable avahi-daemon
7.设置环境变量
vim /home/oracle/.bash_profile
#如果节点为rac1 ORACLE_SID=cndba11;如果节点为rac2 ORACLE_SID=cndba12
ORACLE_SID=cndba11;export ORACLE_SID
ORACLE_UNQNAME=cndba;export ORACLE_UNQNAME
JAVA_HOME=/usr/local/java; export JAVA_HOME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/19.3.0/db_1; export ORACLE_HOME
ORACLE_TERM=xterm; export ORACLE_TERM
NLS_DATE_FORMAT="YYYY:MM:DDHH24:MI:SS"; export NLS_DATE_FORMAT
NLS_LANG=american_america.ZHS16GBK; export NLS_LANG
TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11
PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin
PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/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
THREADS_FLAG=native; export THREADS_FLAG
export TEMP=/tmp
export TMPDIR=/tmp
umask 022
vim /home/grid/.bash_profile
PATH=$PATH:$HOME/bin
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.3.0/grid
export PATH=$ORACLE_HOME/bin:$PATH:/usr/local/bin/:.
export TEMP=/tmp
export TMP=/tmp
export TMPDIR=/tmp
umask 022
export PATH
8.修改资源限制
[root@rac1 ~]# cat >> /etc/security/limits.conf <<EOF
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock 3145728
oracle hard memlock 3145728
EOF
9.设置 PAM和NOZEROCONF
[root@rac1 ~]# cat >> /etc/pam.d/login <<EOF
session required pam_limits.so
EOF
echo "NOZEROCONF=yes" >>/etc/sysconfig/network
10.修改内核参数
[root@rac1 ~]# cat >> /etc/sysctl.d/sysctl.conf <<EOF fs.file-max = 6815744 kernel.sem = 250 32000 100 128 kernel.shmmni = 4096 kernel.shmall = 1073741824 kernel.shmmax = 4398046511104 kernel.panic_on_oops = 1 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 net.ipv4.conf.all.rp_filter = 2 net.ipv4.conf.default.rp_filter = 2 fs.aio-max-nr = 1048576 net.ipv4.ip_local_port_range = 9000 65500 EOF
[root@rac1 ~]# sysctl -p
11.配置yum源,下载对应的包
配置阿里云仓库
vi /etc/yum.repos.d/aliyun.repo
新增下面配置:
[aliyun]
name=aliyun
baseurl=centos-7-os-x86_64安装包下载_开源镜像站-阿里云
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7
下载对应的包
yum install -y bc yum install -y compat-libcap1* yum install -y compat-libcap* yum install -y binutils yum install -y compat-libstdc++-33 yum install -y elfutils-libelf yum install -y elfutils-libelf-devel yum install -y gcc yum install -y gcc-c++ yum install -y glibc-2.5 yum install -y glibc-common yum install -y glibc-devel yum install -y glibc-headers yum install -y ksh libaio yum install -y libaio-devel yum install -y libgcc yum install -y libstdc++ yum install -y libstdc++-devel yum install -y make yum install -y sysstat yum install -y unixODBC yum install -y unixODBC-devel yum install -y binutils* yum install -y compat-libstdc* yum install -y elfutils-libelf* yum install -y gcc* yum install -y glibc* yum install -y ksh* yum install -y libaio* yum install -y libgcc* yum install -y libstdc* yum install -y make* yum install -y sysstat* yum install -y libXp* yum install -y glibc-kernheaders yum install -y net-tools-*
12.安装rpm包
将compat-libstdc++-33-3.2.3-72.el7.x86_64和oracle-database-preinstall-19c-1.0-1.el7.x86_64上传到/opt下进行安装
rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64
rpm -ivh oracle-database-preinstall-19c-1.0-1.el7.x86_64
13.配置互信(rac1,rac2都配置)
root账户:
ssh-keygen (一直回车就可以)
ssh-copy-id rac1
ssh-copy-id rac2
grid账户:
ssh-keygen (一直回车就可以)
ssh-copy-id rac1
ssh-copy-id rac2
oracle账户:
ssh-keygen (一直回车就可以)
ssh-copy-id rac1
ssh-copy-id rac2
四.配置共享磁盘
1.rac1和rac2新增共享磁盘
关闭rac1和rac2的虚拟机电源,进入rac1的编辑设置页面,新增scsi控制器。修改该控制器总线共享为虚拟
rac1新增50g硬盘,修改磁盘置备为厚置备快速置零,磁盘模式为独立持久,虚拟设备节点为刚才新增的scsi控制器
依次新增5个硬盘,配置和之前的一致,一共新增了6个硬盘
点击确定,因为选择了厚置备快速置零,所以虚拟机配置完成等待时间较长,稍安勿躁。
rac1配置完成后,进入rac2编辑设置页面,和rac1一样,新增scsi控制器。修改该控制器总线共享为虚拟。
rac2新增现有磁盘,依次选择rac1新增的6个磁盘。
新增完成后,将6个硬盘的磁盘模式改为独立持久,设备节点改为新scsi控制器。点击确认,配置完成
2.生成asm命名的磁盘(rac1,rac2都要配置)
lsblk查看节点rac1,rac2的磁盘情况
在rac1的/root下新增asm.sh脚本
vi /root/asm.sh
新增如下脚本,并且赋予权限
for i in b c d e f g ;
do
echo "KERNEL==\"sd*\",ENV{DEVTYPE}==\"disk\",SUBSYSTEM==\"block\",PROGRAM==\"/usr/lib/udev/scsi_id -g -u -d \$devnode\",RESULT==\"`/usr/lib/udev/scsi_id -g -u /dev/sd$i`\", RUN+=\"/bin/sh -c 'mknod /dev/asmdisk$i b \$major \$minor; chown grid:asmadmin /dev/asmdisk$i; chmod 0660 /dev/asmdisk$i'\""
done
chmod +x asm.sh
./asm.sh 执行脚本,注意result==的磁盘uuid,等rac2执行完,可以进行对比,是否为同一个uuid
新增99-oracle-asmdevices.rules规则,将上述脚本执行的结果复制到该规则里
vi /etc/udev/rules.d/99-oracle-asmdevices.rules
执行命令使其udevadm配置生效:
undevadm control --reload
undevadm trigger
ll /dev/asm* 查看磁盘组情况
rac2进行同样的配置
五:安装压缩包(在rac1上操作)
1.安装grid_home
上传压缩包到/opt,修改权限
切换到grid用户,将压缩包解压到指定位置
切换到root用户,安装cvuqdisk(两个节点都安装)
rac1操作:
cd /u01/app/19.3.0/grid/cv/rpm
rpm -ivh cvuqdisk-1.0.10-1.rpm
scp -p /u01/app/19.3.0/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm rac2:/opt/
rac2操作:
cd /opt/
rpm -ivh cvuqdisk-1.0.10-1.rpm
切换到grid用户,进入/u01/app/19.3.0/grid/目录
./gridSetup.sh 调出图形化安装页面(在rac1桌面版终端上执行,xshell无法调出安装页面)
注:若报错无法弹出图形化安装页面,执行下列步骤:
执行命令# yum install tigervnc-server 安装vncserver
执行命令# vncserver
执行命令# export DISPLAY=localhost:1
执行命令# xhost+,显示access control disabled, clients can connect from any host表示成功
再次执行./gridSetup.sh,弹出图形化安装页面
scan name必须和/etc/hosts里面的scan的名字一样
添加rac2
网段选择,virbr0选择不适用此项
选择asm磁盘组
关于dns的问题可以忽略,如果是其他失败的则需要关注了,后续可能会出现问题
点击安装
当出现弹窗是,开始使用root账户执行脚本,先在rac1上执行,完成后在rac2上执行。不要同时执行。都执行完成后点击ok,继续安装。
grid_home安装完成
2.安装oracle
root用户修改权限
切换到oracle用户去解压到指定路径
解压完成后,进入该路径下,执行脚本调出database安装界面(桌面版终端上操作)
开始安装
点击安装
出现弹窗,在两个节点上使用root用户执行脚本,按照顺序执行。
完成后,点击ok,继续安装。直到安装完成。
3.创建数据库实例(rac1上操作)
切换到oracle用户,执行dbca调出安装页面(在桌面版终端上执行)
注意数据库名称可以写别的,但sid必须和oracle用户变量里设置的oracle_sid一致
勾选快速回复,开启归档日志
开始安装
六.查看集群状态和连接数据库
1.查看集群状态
查询集群运行状态:/u01/app/19.3.0/grid/bin/crsctl stat res -t
检查数据库的运行状态:/u01/app/oracle/product/19.3.0/db_1/bin/srvctl status database -d cndba
2.连接数据库
以管理员的身份登录数据库:/u01/app/oracle/product/19.3.0/db_1/bin/sqlplus / as sysdba
创建用户(创建者需要有dba权限,用户名必须以c##开头,默认的表空间是users,新用户没有任何权限。)
create user c##sl IDENTIFIED BY 123456; (c##sl是用户名,123456是密码)
新建用户成功后,grant create session to c##sl; 再给他赋予权限。
使用navicat连接数据库,主机名是scan ip,服务名是cndba