一、需求描述
根据客户要求,需要从一个6个节点版本为12.2的ORACLE集群剔除2个节点。 ORACLE集群剔除节点的具体步骤如下文。
二、环境确认
1.主机及其IP地址
实例名 | 操作系统版本 | 主机名 | IP地址 |
oracle12c1 | suse12.1 | Oracle12c01 | 10.10.10.137 |
oracle12c2 | suse12.1 | Oracle12c02 | 10.10.10.139 |
oracle12c3 | suse12.1 | Oracle12c03 | 10.10.10.141 |
oracle12c4 | suse12.1 | Oracle12c04 | 10.10.10.147 |
oracle12c5 | suse12.1 | Oracle12c05 | 10.10.10.149 |
oracle12c6 | suse12.1 | Oracle12c06 | 10.10.10.151 |
需要将主机名为Oracle12c05、Oracle12c06的两个节点从数据库集群中踢掉
注:以下是按照删除Oracle12c06节点为例进程操作
2.检查确认集群状态是否健康,节点情况
crsctl stat res -t
srvctl config database -d oracle12c
3.备份OCR
$su - root
$GRID_HOME/bin/ocrdump /tmp/ocrdump_6nodes.bak
4.检查service
srvctl config database -d oracle12c
配置了 service 并且是 preferred 节点,那么 relocate service 到其他节点。
三、实施步骤
1.删除节点实例
<--Run as oracle on any one of remaining nodes --> oracle用户执行
dbca -silent -deleteInstance -nodeList Oracle12c06 -gdbName oracle12c -instanceName oracle12c6 -sysDBAUserName sys -sysDBAPassword oracle
2.rac层面删除
<--Run as oracle on node which you are deleting--> 在想要删除的那个节点执行,不要执行错机子
2.1停止监听
srvctl disable listener -l LISTENER -n Oracle12c06
srvctl stop listener -l LISTENER -n Oracle12c06
2.2更新本地inventory
/u01/app/oracle/product/12.2.0/db_1/oui/bin/runInstaller -updateNodeList ORACLE_HOME=/u01/app/oracle/product/12.2.0/db_1 "CLUSTER_NODES={Oracle12c06}" -local
2.3删除oracle_home
/u01/app/oracle/product/12.2.0/db_1/deinstall/deinstall -local
3.更新节点信息
<--Run as oracle on any one of remaining nodes -->(CLUSTER_NODES是集群中存在的任意一个节点)
/u01/app/oracle/product/12.2.0/db_1/oui/bin/runInstaller -updateNodeList ORACLE_HOME=/u01/app/oracle/product/12.2.0/db_1 "CLUSTER_NODES={Oracle12c01,Oracle12c02,Oracle12c03,Oracle12c04,Oracle12c05}"
4.GRID层面删除节点,并更新节点信息
4.1检查节点状态,是否是unpinned状态
<--run as grid on any one of remaining nodes--> grid权限
olsnodes -s -t
4.2root权限运行deconfig
<--run as root on node will be deleted--> root权限,在想要删除的那个节点执行,不要执行错了
/u01/app/12.2.0/grid/crs/install/rootcrs.pl -deconfig -deinstall -force
4.3在其他节点运行删除节点
<--run as root on any one of remaining nodes--> root权限
/u01/app/12.2.0/grid/bin/crsctl delete node -n Oracle12c06
4.4在想要删除的节点运行更新 inventory
<--run as grid on node will be deleted--> grid权限
/u01/app/12.2.0/grid/oui/bin/runInstaller -updateNodeList ORACLE_HOME=/u01/app/12.2.0/grid "CLUSTER_NODES={Oracle12c06}" CRS=TRUE -silent -local
4.5在想要删除的节点运行删除grid_home
<--run as grid on node will be deleted-->grid权限
/u01/app/12.2.0/grid/deinstall/deinstall -local
注意,该期间会提示你新建一个ssh会话,执行窗口提示的脚本
4.6在其他任意节点,更新inventory
<--run as grid on any one of remaining nodes-->
/u01/app/12.2.0/grid/oui/bin/runInstaller -updateNodeList ORACLE_HOME=/u01/app/12.2.0/grid "CLUSTER_NODES={Oracle12c01,Oracle12c02,Oracle12c03,Oracle12c04,Oracle12c05}" CRS=TRUE -silent
5.任意保留的一个节点运行CVU 检查节点删除是否成功
cluvfy stage -post -n Oracle12c06 -verbose
(删除节点5重复第三部分操作,注意修改相关信息)