搭建Oracle RAC 集群

添加6块硬盘,每块50G,添加控制器,设为虚拟,添加网络适配器

设置主机名,配置网卡,编写/etc/hosts文件()

TypeScript 复制代码
[root@rac2 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

#rac1
192.168.17.11 rac1
192.168.200.11 rac1-priv
192.168.17.21 rac1-vip

#rac2
192.168.17.12 rac2
192.168.200.12 rac2-priv
192.168.17.22 rac2-vip

#scan
192.168.17.30 rac-scan
192.168.17.31 rac-scan
192.168.17.32 rac-scan

运行test.sh脚本,完成基础配置

TypeScript 复制代码
[root@rac2 ~]# cat test.sh
RACLE_BASE="/u01/app/oracle"
GRID_HOME="/u01/app/19.0.0/grid"
DB_HOME="/u01/app/oracle/product/19.0.0/dbhome_1"
ORA_INVENTORY="/u01/app/oraInventory"
# ================================================

echo "=========================================="
echo " Oracle Linux 7.9 RAC2 前置配置"
echo "=========================================="

# 1. 关闭防火墙和 SELinux
echo "[1/8] 关闭防火墙 & SELinux..."
systemctl stop firewalld && systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0

# 2. 禁用 Zeroconf
echo "[2/8] 禁用 Zeroconf..."
grep -q "NOZEROCONF" /etc/sysconfig/network || echo "NOZEROCONF=yes" >> /etc/sysconfig/network

# 3. 关闭 avahi-daemon
echo "[3/8] 关闭 avahi-daemon..."
systemctl stop avahi-daemon && systemctl disable avahi-daemon

# 4. 安装依赖包
echo "[4/8] 安装依赖包..."
yum install -y \
    bc bind-utils binutils compat-libcap1 compat-libstdc++-33 \
    gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel \
    libgcc libstdc++ libstdc++-devel libXi libXtst make \
    net-tools nfs-utils python python-configshell python-rtslib \
    python-six targetcli smartmontools sysstat unzip vim \
    elfutils-libelf elfutils-libelf-devel fontconfig-devel \
    libXrender libXrender-devel libX11 libXau libxcb \
    librdmacm-devel unixODBC unixODBC-devel &>/dev/null

# 5. 创建用户和组
echo "[5/8] 创建用户和组..."
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
groupadd -g 54324 backupdba
groupadd -g 54325 dgdba
groupadd -g 54326 kmdba
groupadd -g 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54329 asmadmin
groupadd -g 54330 racdba

id oracle &>/dev/null || useradd -u 54321 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper oracle
id grid &>/dev/null || useradd -u 54322 -g oinstall -G dba,asmdba,asmoper,asmadmin,racdba grid

echo "oracle:Oracle123" | chpasswd
echo "grid:Oracle123" | chpasswd

# 6. 创建目录
echo "[6/8] 创建目录结构..."
mkdir -p ${ORACLE_BASE} ${GRID_HOME} ${DB_HOME} ${ORA_INVENTORY}
chown -R grid:oinstall ${GRID_HOME} ${ORA_INVENTORY}
chown -R grid:oinstall ${ORACLE_BASE}
chown -R oracle:oinstall ${DB_HOME}
chmod -R 775 ${ORACLE_BASE} ${GRID_HOME} ${DB_HOME} ${ORA_INVENTORY}

# 7. 配置内核参数
echo "[7/8] 配置内核参数..."
cat > /etc/sysctl.d/99-oracle-rac.conf <<EOF
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
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 = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
vm.swappiness = 10
EOF
sysctl --system &>/dev/null

# 8. 配置资源限制
echo "[8/8] 配置资源限制..."
cat > /etc/security/limits.d/99-oracle-rac.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

# 配置环境变量 (RAC2 使用 +ASM2 / orcl2)
cat > /home/grid/.bash_profile <<EOF
export ORACLE_SID=+ASM2
export ORACLE_BASE=${ORACLE_BASE}
export ORACLE_HOME=${GRID_HOME}
export PATH=\$ORACLE_HOME/bin:\$PATH
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
umask 022
EOF

cat > /home/oracle/.bash_profile <<EOF
export ORACLE_SID=orcl2
export ORACLE_BASE=${ORACLE_BASE}
export ORACLE_HOME=${DB_HOME}
export PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$PATH
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
umask 022
EOF

# 禁用透明大页
cat > /etc/systemd/system/disable-thp.service <<EOF
[Unit]
Description=Disable Transparent Huge Pages
DefaultDependencies=no
After=sysinit.target local-fs.target
Before=oracle-rdbms.service

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/enabled && echo never > /sys/kernel/mm/transparent_hugepage/defrag'

[Install]
WantedBy=multi-user.target
EOF
systemctl enable disable-thp &>/dev/null
systemctl start disable-thp

echo ""
echo "=========================================="
echo " ✅ RAC2 前置配置完成!"
echo "=========================================="
echo "⚠️ 请重启服务器使配置完全生效"
echo "=========================================="
/bin/bash: indent: 未找到命令

配置SSH互信,分别RAC1和RAC2的root,grid,Oracle三个用户下执行以下命令

TypeScript 复制代码
ssh-keygen(一直按enter键即可)

ssh-copy-id rac2(rac1执行)

ssh rac1(验证连接)

su grid(切换grid用户执行以上命令)

su oracle

配置磁盘规则,执行writerule.sh脚本

bash 复制代码
[root@rac1 ~]# vi writerule.sh
[root@rac1 ~]# cat writerule.sh
# 定义磁盘列表
DISKS="b c d e f g"

for i in $DISKS; do
    # 获取WWID
    UUID=$(/usr/lib/udev/scsi_id -g -u /dev/sd$i)

    # 写入标准规则 (注意这里用的是 SYMLINK+=)
    echo "KERNEL==\"sd*\", SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id -g -u -d \$devnode\", RESULT==\"$UUID\", SYMLINK+=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\"" >> /etc/udev/rules.d/99-oracle-asmdevices.rules
done

echo "--- 规则生成完毕,内容如下 ---"
cat /etc/udev/rules.d/99-oracle-asmdevices.rules

[root@rac1 ~]# chmod +x writerule.sh
[root@rac1 ~]# ./writerule.sh
--- 规则生成完毕,内容如下 ---
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c292f69dbb4c769c83ad5993b9c0", SYMLINK+="asm-diskb", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c29d918eeeb60186961cc15a4887", SYMLINK+="asm-diskc", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c2938b5531eec06b22874d759416", SYMLINK+="asm-diskd", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c2989f4d6203261cac3b6e88a022", SYMLINK+="asm-diske", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c29502500225b134b677f621765f", SYMLINK+="asm-diskf", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c29ef9f275b56b87e92fc60b0d33", SYMLINK+="asm-diskg", OWNER="grid", GROUP="asmadmin", MODE="0660"
[root@rac1 ~]# udevadm control --reload-rules
[root@rac1 ~]# udevadm trigger --type=devices --action=change
[root@rac1 ~]# ls -l /dev/asm*
lrwxrwxrwx. 1 root root 3 7月   9 09:13 /dev/asm-diskb -> sdb
lrwxrwxrwx. 1 root root 3 7月   9 09:13 /dev/asm-diskc -> sdc
lrwxrwxrwx. 1 root root 3 7月   9 09:13 /dev/asm-diskd -> sdd
lrwxrwxrwx. 1 root root 3 7月   9 09:13 /dev/asm-diske -> sde
lrwxrwxrwx. 1 root root 3 7月   9 09:13 /dev/asm-diskf -> sdf
lrwxrwxrwx. 1 root root 3 7月   9 09:13 /dev/asm-diskg -> sdg
[root@rac1 ~]#

安装LINUX.X64_193000_grid_home.zip文件包

相关推荐
测试界的小码农21 分钟前
【图数据库实战进阶(03):Neo4j 图数据建模实战——节点、关系与属性应该怎么设计?】
数据库·oracle·neo4j
瑞克-桑切斯25 分钟前
redis
数据库·redis·缓存
freejackman1 小时前
【工程化】从“单兵作战”到“多引擎架构”:基于门面模式的重构实战
大数据·数据库·hive·sql·测试工具·设计模式·架构
bksczm2 小时前
InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer
数据库·mysql
花间相见2 小时前
【计算基础|Redis02】【上手】五大数据类型命令逐条实操
数据库·redis·后端
敲上瘾3 小时前
Qt Widgets入门:项目模板解析与Hello World
开发语言·数据库·c++·qt·ui·qt6.3
bksczm4 小时前
Redis 持久化:RDB 快照与 AOF 日志
数据库·redis·mybatis
.痞老板.4 小时前
mysql初阶--数据库设计
数据库·mysql·oracle
Decay__6 小时前
SQL Server 数据库全栈运维实战系列 — 合集索引(24 篇)
运维·数据库·sql·mysql·架构