Oracle11g RAC集群重新添加节点

前言

在工作中,客户的11g rac集群环境其中一个节点服务器出现故障,重新购置服务器后需要把节点重新加回到集群当中。此篇文章为RAC集群环境重新添加节点测试。

环境准备

准备RAC集群环境,把其中的rac1node1节点关机,模拟故障。然后新建一台虚拟机进行配置。
新虚拟机根据挂掉的rac01节点,装好系统、配置好ip(公有ip和私有ip)、主机名、hosts文件

-- hosts文件
#Public Network
192.168.2.120 rac1node1
192.168.2.121 rac1node2
192.168.2.100 jjjtoraclu02-scan

#Private Interconnect
192.168.71.120 oradb1-priv
192.168.71.121 oradb2-priv

#Public Virtual IP
192.168.2.20 rac1node1-vip
192.168.2.21 rac1node2-vip

新节点配置

根据存活节点oracle、grid用户信息创建用户和组并创建所需目录、环境变量、安装所需依赖包,安装cvuqdisk,配置系统内核参数和limits.conf 配置需与存货节点保持一致

-- 创建组
groupadd -g 1010 oinstall
groupadd -g 1021 asmdba
groupadd -g 1031 dba
groupadd -g 1032 beoper
groupadd -g 1020 asmadmin
-- 创建用户
useradd -u 1101 -g oinstall -G asmdba,dba,beoper oracle
useradd -u 1100 -g oinstall -G asmadmin,asmdba,dba grid
-- 密码
echo oracle | passwd oracle --stdin
echo oracle | passwd grid --stdin
-- 创建目录
mkdir -p /app/oracle 
mkdir -p /app/oracle/product/11.2.0/db_1
mkdir -p /app/oracle_grid/
-- 修改目录权限
chmod 755 /app
chown grid:oinstall /app
chmod 775 /app/oracle
chown oracle:oinstall /app/oracle
chmod 755 /app/oracle_grid
chown grid:oinstall /app/oracle_grid
-- 用户环境变量
#oracle用户
echo "export TMP=/tmp" >> ~oracle/.bash_profile
echo 'export TMPDIR=$TMP' >> ~oracle/.bash_profile
echo 'export ORACLE_BASE=/app/oracle' >> ~oracle/.bash_profile
echo 'export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1' >> ~oracle/.bash_profile
echo 'export ORACLE_SID=orcl1' >> ~oracle/.bash_profile
echo 'export ORACLE_TERM=xterm' >> ~oracle/.bash_profile
echo 'export PATH=/usr/sbin:$PATH' >> ~oracle/.bash_profile
echo 'export PATH=$ORACLE_HOME/bin:$PATH' >> ~oracle/.bash_profile
echo 'export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/usr/X11R6/lib64' >> ~oracle/.bash_profile
echo 'export CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib' >> ~oracle/.bash_profile
echo 'export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"'>> ~oracle/.bash_profile
# grid用户
echo "export TMP=/tmp" >> ~grid/.bash_profile
echo 'export TMPDIR=$TMP' >> ~grid/.bash_profile
echo 'export ORACLE_BASE=/app/oracle' >> ~grid/.bash_profile
echo 'export ORACLE_HOME=/app/oracle_grid/' >> ~grid/.bash_profile
echo 'export ORACLE_SID=+ASM1' >> ~grid/.bash_profile
echo 'export ORACLE_TERM=xterm' >> ~grid/.bash_profile
echo 'export PATH=/usr/sbin:$PATH' >> ~grid/.bash_profile
echo 'export PATH=$ORACLE_HOME/bin:$PATH' >> ~grid/.bash_profile
echo 'export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/usr/X11R6/lib64' >> ~grid/.bash_profile
echo 'export CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib' >> ~grid/.bash_profile
echo 'export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"'>> ~grid/.bash_profile
-- 安装cvuqdisk
rpm -ivh cvuqdisk-1.0.9-1.rpm
-- 安装所需依赖包
yum install -y binutils compat-libcap1 compat-libstdc++-33 \
elfutils-libelf elfutils-libelf-devel \
gcc gcc-c++ glibc glibc-devel libgomp libgcc libstdc++ libstdc++-devel \
glibc-common libaio libaio-devel make ksh sysstat unixODBC unixODBC-devel
-- 修改内核参数
kernel.shmall = 4294967296
kernel.shmmax = 137438953472
kernel.shmall = 33554432
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
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
fs.aio-max-nr=1048576
-- 修改limits.conf
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

配置存储

由于原环境配置的multipath多路径+asmlib 在新节点配置

-- multipath多路径配置
拷贝存活节点配置文件到新节点
cd /etc/multipath/ 
scp  bindings wwids root@192.168.2.120:${PWD} 
scp /etc/multipath.conf root@192.168.2.120:/etc/multipath.conf
multipath -v0 
重启multipathd守护程序
service multipathd restart
查看别名是否生效
multipath -ll

拷贝udev规则文件
cd /etc/udev/rules.d/
scp 99-asmdisk.rules root@192.168.2.120:${PWD}

udev生效
/sbin/udevadm control --reload-rules
/sbin/udevadm trigger --type=devices --action=change

-- asmlib配置
安装
rpm -ivh kmod-oracleasm-2.0.8-13.el6_8.x86_64.rpm
rpm -ivh oracleasm-support-2.1.8-1.el6.x86_64.rpm
rpm -ivh oracleasmlib-2.0.4-1.el6.x86_64.rpm
配置
oracleasm configure -i
输入用户:grid
输入组:asmadmin
再次输入两遍  y
oracleasm init
发现磁盘
/usr/sbin/oracleasm scandisks

重新加入集群

-- 先将原RAC变为单节点集群 保留存活的rac1node2节点
/app/oracle_grid/oui/bin/runInstaller -updateNodeList ORACLE_HOME=/app/oracle_grid/ "CLUSTER_NODES={rac1node2}" CRS=TRUE -silent -local

-- 通过脚本配置oracle grid用户ssh互信
./sshUserSetup.sh -user grid -hosts 'rac1node1 rac1node2 oradb1-priv oradb2-priv' -advanced
./sshUserSetup.sh -user oracle -hosts 'rac1node1 rac1node2 oradb1-priv oradb2-priv' -advanced

-- 检查rac1node1节点
cluvfy comp peer -n rac1node1

-- GI加入新节点并安装
./addNode.sh -silent  "CLUSTER_NEW_NODES={rac1node1}" \
"CLUSTER_NEW_PRIVATE_NODE_NAMES={oradb1-priv}" \
"CLUSTER_NEW_VIRTUAL_HOSTNAMES={rac1node1-vip}"

-- 程序异常终止  查看日志 因为java的堆栈内存溢出 找到配置文件 修改内存配置大小  存活节点grid用户
cp $ORACLE_HOME/oui/oraparam.ini $ORACLE_HOME/oui/bak-oraparam.ini
-- 修改JRE_MEMORY_OPTIONS参数  原先为 -mx150m  修改为1024
JRE_MEMORY_OPTIONS=" -mx1024m"

-- 根据上一步重新安装  安装后新节点执行以下脚本
/app/oraInventory/orainstRoot.sh
/app/oracle_grid/root.sh

-- 修改目录权限
chown -R grid:oinstall /u01
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
chown -R grid:oinstall /u01/app/oraInventory
chmod -R 775 /u01/app/oraInventory

-- 安装oracle软件
oracle变为单节点  剔除以前挂掉的节点信息
/app/oracle/product/11.2.0/db_1/oui/bin/runInstaller -updateNodeList ORACLE_HOME=/app/oracle/product/11.2.0/db_1 "CLUSTER_NODES={rac1node2}" CRS=FALSE -silent -local

-- 为新节点安装oracle软件  在已有节点执行
/app/oracle/product/11.2.0/db_1/oui/bin/addNode.sh "CLUSTER_NEW_NODES={rac1node1}"

-- 新节点执行脚本
/app/oracle/product/11.2.0/db_1/root.sh

-- 创建实例  存活节点执行
dbca -silent -addInstance -nodeList rac1node1 -gdbName orcl -instanceName orcl1 -sysDBAUserName sys -sysDBAPassword Jjjt1024
由于之前有orcl1信息  所以会提示已存在  

-- 直接startup的时候会提示找不到initorcl1.ora 
oracle用户进入到$ORACLE_HOME/dbs
拷贝
cp initorcl2.ora initorcl1.ora

-- 创建数据库所需路径 oracle用户
mkdir -p /app/oracle/admin/adump
mkdir -p /app/oracle/admin/dpdump
mkdir -p /app/oracle/admin/hdump
mkdir -p /app/oracle/admin/pfile
mkdir -p /app/oracle/admin/scripts

-- 然后开库会发现识别不到ASM磁盘组  需要给下面两个文件加s权限
oracle用户:
cd $ORACLE_HOME/bin
chmod +x oracle
grid用户:
cd $ORACLE_HOME/bin
chmod +x oracle

此时可以正常进行startup

查看集群资源状态  正常
crsctl stat res -t
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值