生产环境下oracle19c rac恢复节点2
现状:目前节点1数据库集群服务处于正常,节点2服务器由于系统故障无法恢复,确认系统重装。
目标:不影响业务的情况下,重新把节点2添加回集群中。
1.操作系统配置
当前环境
数据库版本:oracle 19.24
系统版本:银河麒麟V10 sp3
创建用户,安装目录,系统参数调整,环境变量配置,挂在共享磁盘等操作准备。由于此处不是本次文章的重点,可以参照节点1配置.
注意:用户/组(包括用户ID/组ID号)还有安装目录要和节点一保持一致,否则后续互信和共享磁盘权限都可能出问题:
1)添加相应的用户和组,用户及用户组 ID 相同
2)配置 hosts 文件 , 新增节点和原有都配置为相同
3)配置系统参数,用户参数和原有节点一样,配置网络
4)创建相应的目录,并保证权限对应(根据实际情况参考节点1创建目录)
5)检查多路径,盘权限
2.重新创建互信
在节点1上执行,使用root用户来执行
su - root
cd /u01/app/19.3.0/grid/oui/prov/resources/scripts
./sshUserSetup.sh -user grid -hosts "testdb1 testdb2" -advanced -noPromptPassphrase
./sshUserSetup.sh -user oracle -hosts "testdb1 testdb2" -advanced -noPromptPassphrase
3.删除testdb2的实例,节点1上执行
su - oracle
dbca -silent -deleteInstance -nodeName testdb2 -gdbName test -instanceName instdb2 -sysDBAUserName sys -sysDBAPassword "oracle"
4.删除软件清单中testdb2的软件信息,节点1上执行
su - oracle
cd $ORACLE_HOME/oui/bin
./runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME "CLUSTER_NODE={testdb2}"
5. 删除testdb2的vip信息,节点1上执行
su - root
cd /u01/app/19.3.0/grid//bin/
./srvctl stop vip -i testdb2-vip
./srvctl remove vip -i testdb2-vip
6.查看节点信息
su - root
./olsnodes -s -t
./olsnodes -n -l
此时只看到一个节点1了,看不到节点2的信息,表示正常。
7. 节点1上校验检查两节点,并执行节点添加测试
cluvfy comp peer -refnode testdb1 -n testdb2
cluvfy stage -pre nodeadd -n testdb2
节点1上执行grid软件添加节点
遇到的问题:
在做添加这步操作时一直显示ssh互信问题,但是ssh做了免密互信并且验证免密可以使用
最后通过修改以下几点,ssh得以成功
7.1 root用户(两个节点)
#重命名原始scp
su - root
mv /usr/bin/scp /usr/bin/scp.orig
#创建一个新文件</usr/bin/scp>
vi /usr/bin/scp ###将以下行添加到新创建的文件</usr/bin/scp>中.
/usr/bin/scp.orig -T $*
#更改文件权限.
chmod 555 /usr/bin/scp
more /usr/bin/scp
#grid和db软件,建库都完成后再修改回去
7.2 添加如下(两个机器都用root用户做)
su - root
/usr/lib64文件夹下面:
ln -s libnsl.so.2.0.1 libnsl.so.1,没有就yum -y install libnsl*
7.3 重新做互信
分别到grid和oracle用户下
rm -rf .ssh
参考《2.重新创建互信》
7.4 加回节点2
su – grid
export IGNORE_PREADDNODE_CHECKS=Y
export CV_ASSUME_DISTID=OL7
export SSH_AUTH_SOCK=0
cd $ORACLE_HOME/addnode
./addnode.sh -silent -ignorePrereq "CLUSTER_NEW_NODES={testdb2}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={testdb2-vip}"
8.db软件层面添加节点
su - oracle
export IGNORE_PREADDNODE_CHECKS=Y
cd $ORACLE_HOME/addnode
./addnode.sh -silent -ignorePrereq "CLUSTER_NEW_NODES={testdb2}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={testdb2-vip}"
9.节点1执行,添加实例
su - oracle
dbca -silent -addInstance -nodeName testdb2 -gdbName test -instanceName instdb2 -sysDBAUserName sys -sysDBAPassword "oracle"
10.集群状态检查,并重启节点2测试
crsctl stat res -t
11.同事误操作小插曲:
不小心把节点1的GRID_HOME和ORACLE_HOME目录的权限chown -R grid:oinstall 了。
此时别慌,对比好的rac集群目录权限参考:chown -R oracle:asmadmin $ORACLE_HOME
chmod 6751 $ORACLE_HOME/bin/oracle
chown -R grid:asmadmin $GRID_HOME
chmod 6751 $GRID_HOME/bin/oracle
11.参考文档:
https://blog.csdn.net/jycjyc/article/details/152173208