Oracle RAC系统的安装,需要进行较多的实例配置,配置遗漏或者错误会导致安装失败。详细配置方法请参照具体的配置手册,或咨询Oracle专家,示例仅展示CentOS7下静默安装Oracle RAC的主要步骤。实例配置可参考Oracle官方文档。
系统及软件信息
在本次示例中:
- 实例的操作系统为:CentOS Linux release 7.6.1810,内核版本为:3.10.0-957.el7.x86_64。
- Oracle RAC的软件版本为:19c(19.3)Linux x86-64。
NTP配置
Oracle RAC需要集群内所有实例的时间保持一致,时钟差距过大,会导致集群节点无法正常启动。可以通过公网或者内网NTP server同步好集群内各个实例的时钟。
ntpdate <NTP_server>
swap空间配置
Oracle文档建议内存在4GB-16GB的实例,swap空间配置与内存空间一致,内存大于16GB的实例,swap空间配置为16GB即可。
fallocate -l 16G /swapfile # 此⽅式,swapon可能会失败,可以直接dd⼀个文件
dd if=/dev/zero of=/swapfile count=1024k bs=16384
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
/dev/shm 共享内存配置
需要确认/etc/fstab中配置了/dev/shm共享内存设备的正确挂载,类型需为 tmpfs 。
防火墙
检查Oracle相关服务没有被防火墙阻止(不建议直接关闭防火墙服务,除非在内网可信任网络内)。
用户目录配置
创建grid 和oracle 用户并修改密码。
/usr/sbin/groupadd -g 501 oinstall
/usr/sbin/groupadd -g 502 dba
/usr/sbin/groupadd -g 503 oper
/usr/sbin/groupadd -g 504 asmadmin
/usr/sbin/groupadd -g 506 asmdba
/usr/sbin/groupadd -g 507 asmoper
/usr/sbin/useradd -u 5001 -g oinstall -G dba,asmadmin,asmdba,asmoper grid
/usr/sbin/useradd -u 5002 -g oinstall -G dba,asmdba,oper oracle
mkdir -p /home/grid
mkdir -p /home/oracle
chown grid:oinstall /home/grid
chown oracle:oinstall /home/oracle
passwd grid
passwd oracle
/etc/hosts 文件配置
修改hosts文件,添加域名解析
192.168.0.31 rac-node01
192.168.0.32 rac-node02
192.168.0.41 rac-node01-vip
192.168.0.42 rac-node02-vip
192.168.0.50 SCAN20
192.168.100.31 rac-node01-priv
192.168.100.32 rac-node02-priv
ssh免密配置
由于安装文件传输、机器信息收集等操作,需要配置grid和oracle用户在集群内节点的免密登录。
内核参数修改
cp /etc/sysctl.conf /etc/sysctl.conf.bak
echo "#Oracle Parameter" >> /etc/sysctl.conf
echo kernel.shmmni = 4096 >> /etc/sysctl.conf
echo kernel.sem = 250 32000 100 128 >> /etc/sysctl.conf
echo fs.file-max = 6815744 >> /etc/sysctl.conf
echo fs.aio-max-nr = 1048576 >> /etc/sysctl.conf
echo net.ipv4.ip_local_port_range = 9000 65500 >> /etc/sysctl.conf
echo net.core.rmem_default = 262144 >> /etc/sysctl.conf
echo net.core.rmem_max = 4194304 >> /etc/sysctl.conf
echo net.core.wmem_default = 262144 >> /etc/sysctl.conf
echo net.core.wmem_max = 1048576 >> /etc/sysctl.conf
echo kernel.shmmax = 274877906944 >> /etc/sysctl.conf
echo net.ipv4.ping_group_range = 0 10000 >> /etc/sysctl.conf
echo net.ipv6.conf.all.disable_ipv6 = 1 >> /etc/sysctl.conf
cat /etc/sysctl.conf
sysctl -p
注意kernel.shmmax参数需要结合自身实例配置修改,检查脚本会提示需要修改的值。
limits配置修改
修改limits配置。
cp /etc/security/limits.conf /etc/security/limits.conf.bak
echo "#Oracle Parameter" >> /etc/security/limits.conf
echo grid soft nproc 2047 >> /etc/security/limits.conf
echo grid hard nproc 16384 >> /etc/security/limits.conf
echo grid soft nofile 1024 >> /etc/security/limits.conf
echo grid hard nofile 65536 >> /etc/security/limits.conf
echo grid soft stack 10240 >> /etc/security/limits.conf
echo grid hard stack 32768 >> /etc/security/limits.conf
echo oracle soft nproc 2047 >> /etc/security/limits.conf
echo oracle hard nproc 16384 >> /etc/security/limits.conf
echo oracle soft nofile 1024 >> /etc/security/limits.conf
echo oracle hard nofile 65536 >> /etc/security/limits.conf
echo oracle soft stack 10240 >> /etc/security/limits.conf
echo oracle hard stack 32768 >> /etc/security/limits.conf
cat /etc/security/limits.conf
创建安装目录
mkdir -p /u01/app/oraInventory
chown -R grid:oinstall /u01/app/oraInventory
chmod -R 775 /u01/app/oraInventory
mkdir -p /u01/app/grid
chown -R grid:oinstall /u01/app/grid
chmod -R 775 /u01/app/grid
mkdir -p /u01/app/grid_home
chown -R grid:oinstall /u01/app/grid_home
chmod -R 775 /u01/app/grid_home
mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/app/oracle
mkdir -p /u01/app/oracle_home
chown -R oracle:oinstall /u01/app/oracle_home
chmod -R 775 /u01/app/oracle_home
grid/oracle环境变量设定(各节点有差异)
在所有节点上,编辑grid用户的profile脚本。
su - grid
vi .bash_profile
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
# node1: ORACLE_SID=+ASM1 ;
# node2: ORACLE_SID=+ASM2 ;
# node3: ORACLE_SID=+ASM3 ;
ORACLE_SID=+ASM1; export ORACLE_SID
ORACLE_BASE=/u01/app/grid/; export ORACLE_BASE
ORACLE_HOME=/u01/app/grid_home; export ORACLE_HOME
NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"; export NLS_DATE_FORMAT
THREADS_FLAG=native; export THREADS_FLAG
PATH=$ORACLE_HOME/bin:$PATH; export PATH
THREADS_FLAG=native; export THREADS_FLAG
PATH=$ORACLE_HOME/bin:$PATH; export PATH
umask 022
export DISPLAY=10.228.100.100:0.0
注意不同节点的ORACLE_SID不一样。需要运行Linux图形界面的,可以配置 DISPLAY 。
在所有节点上,编辑oracle用户的profile脚本。
su - oracle
vi .bash_profile
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/u01/app/oracle/; export ORACLE_BASE
ORACLE_HOME=/u01/app/oracle_home; export ORACLE_HOME
# node1: ORACLE_SID=racdb1 ;
# node2: ORACLE_SID=racdb2 ;
# node3: ORACLE_SID=racdb3 ;
ORACLE_SID=racdb1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export
CLASSPATH
NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"; export NLS_DATE_FORMAT
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANG
umask 022
export DISPLAY=10.228.100.100:0.0
注意不同节点的ORACLE_SID不一样。需要运行Linux图形界面的,可以配置 DISPLAY 。
硬盘属性修改
定义udev 的规则,将需要给Oracle RAC使用的硬盘属性进行自动修改。修改文件: /etc/udev/rules.d/99- chown.rules
KERNEL=="vd[!a]*",OWNER="grid", GROUP="asmadmin", MODE="660"
然后重新加载生效后,检查 /dev/vd* 属性是否修改。
udevadm control --reload-rules
udevadm trigger
ls -al /dev/vd*
硬盘分区
如果需要对硬盘进行分区,可进行以下操作:
- 选取出需要分区的硬盘:
cat disk_list.txt
/dev/vdb
/dev/vdc
/dev/vdd
/dev/vde
/dev/vdf
/dev/vdg
/dev/vdh
/dev/vdi
- 对硬盘进行批量格式化、分区操作:
for Disk in `cat disk_list.txt`
do
fdisk $Disk <<EOF
n
p
w
EOF
done