文章联动

11gR2 rac 添加节点 2节点变为4节点

https://blog.51cto.com/u_13482808/7438119

Oracle rac one node添加节点操作步骤

https://blog.51cto.com/u_13482808/7620873

Oracle 19.6 RAC 删除并添加节点

https://blog.51cto.com/u_13482808/7621056

在集群中剔除节点1

1.1 删除节点DB instance

方案1:oracle用户在保留节点使用dbca的静默模式进行删除实例

$ dbca -silent -deleteInstance -nodeList "rac1" -gdbName "orcl" -instanceName "orcl1" -sysDBAUserName "sys" -sysDBAPassword oracle

方案2:oracle用户在保留节点运行dbca
oracle RAC database instance management–>delete an instence
检查

[oracle]$ srvctl config database -d orcl
Type: RAC
Database instances: orcl2
Configured nodes: rac2
[grid]$ crsctl status res -t

1.2 卸载节点Database软件

禁用和停止预删除节点的监听

[grid]$ srvctl disable listener -listener LISTENER -node rac1
[grid]$ srvctl stop listener -listener LISTENER -node rac1

在预删除的节点上执行以下命令更新Inventory

[oracle]$ cd $ORACLE_HOME/oui/bin
[oracle]$ ./runInstaller -updateNodeList ORACLE_HOME = /u02/app/oracle/product/19.0.0/db_1 "CLUSTER_NODES={rac1}" -local

移除预删除的节点上RAC database home,在删除的节点上执行

[oracle]$ cd $ORACLE_HOME/deinstall
[oracle]$ ./deinstall -local

此时会保留$ORACLE_BASE/admin目录,可以手动删除。
在集群中所有保留的节点上执行以下命令更新Inventory

[oracle]$ cd $ORACLE_HOME/oui/bin
[oracle]$ ./runInstaller -updateNodeList ORACLE_HOME = /u02/app/oracle/product/19.0.0/db_1 "CLUSTER_NODES={rac2}"

1.3 卸载节点Clusterware软件

查看预删除的节点是否为pinned状态

[grid]$ olsnodes -s -t

如果返回的结果是pinned状态,执行以下命令;如果是unpinned状态,跳过此步骤

[root]# cd /u01/app/19.0.0/grid/bin
[root]# ./crsctl unpin css -n rac1

在预删除的节点上执行以下命令更新Inventory

[grid]$ cd $ORACLE_HOME/oui/bin
[grid]$ ./runInstaller -updateNodeList ORACLE_HOME = /u01/app/19.0.0/grid "CLUSTER_NODES={rac1}" CRS=TRUE -silent -local

移除RAC grid home,在删除的节点上执行

[grid]$ cd $ORACLE_HOME/deinstall
[grid]$ ./deinstall -local

会提示以root用户运行rootcrs.sh脚本

/u01/app/19.0.0/grid/crs/install/rootcrs.sh -force  -deconfig -paramfile "/tmp/deinstallxxx/response/deinstall_xxx.rsp"

在所有保留节点上以grid用户 更新保留节点的Inventory

[grid]$ cd $ORACLE_HOME/oui/bin
[grid]$ ./runInstaller -updateNodeList ORACLE_HOME=/u01/app/19.0.0/grid "CLUSTER_NODES={rac2}" CRS=TRUE -silent -local

此时会保留目录/u01/app/19.0.0和/u01/app/grid
在保留节点的其中一个节点上运行以下命令删除群集节点:

[root@rac2 ~]# cd /u01/app/19.0.0/grid/bin/
[root@rac2 bin]# ./crsctl delete node -n rac1
[root@rac2 bin]# ./olsnodes -s -t

运行以下CVU命令以验证指定节点是否已成功从群集中删除:

$ cluvfy stage -post nodedel -n node_list [-verbose]

停止并删除VIP
此步骤需要在 要删除的节点已损坏并重做系统 时完成,如果执行了上一步,此步骤可跳过

[root@rac2 ~]# cd /u01/app/19.0.0/grid/bin
[root@rac2 bin]# ./srvctl stop vip -i rac1
[root@rac2 bin]# ./srvctl remove vip -i rac1 -f
[root@rac2 bin]# ./crsctl stat res -t     
SQL> select thread#,status,instance from gv$thread;

2 节点1重装操作系统

2.1 系统安装要求,只针对Oracle特需

  • 操作系统语言选择英文
  • 操作系统时区选择shanghai
  • 操作系统SWAP设置16G
  • 操作系统本地磁盘使用LVM划分/u01和/u02,各划分100G空间
  • 操作系统本地磁盘使用LVM划分/osw,大小30G
  • 操作系统本地磁盘使用LVM划分/目录,大小50G,其他空间划分不做要求
  • 设置主机名
  • 配置网卡绑定,配置IP地址,私网网卡不配置网关
  • 挂载系统镜像,用于安装oracle所需rpm包
  • 正确配置系统时间和NTP时间同步,注意硬件时间和系统时间保持一致

2.2 配置存储,只针对Oracle特需

  • 保证存储磁盘个数不变
  • 保证存储唯一识别号不变

3. 在集群中添加节点1

3.1 节点1系统配置

systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl stop  NetworkManager.service
systemctl disable NetworkManager.service
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0
systemctl stop avahi-daemon.socket
systemctl stop avahi-daemon.service
systemctl disable avahi-daemon.service
ps -ef|grep avahi-daemon
kill -9 pid avahi-daemon
sed -i '$a\NOZEROCONF=yes' /etc/sysconfig/network

安装rpm包

yum install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel libXext libXtst libX11 libXau libxcb libXi compat-libcap1 iscsi-initiator-utils *vnc* -y
yum install bc binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make net-tools nfs-utils python python-configshell python-rtslib python-six smartmontools sysstat targetcli -y

配置内核参数

vi /etc/hosts
vi /etc/security/limits.conf
vi /etc/pam.d/login
vi /etc/profile
vi /etc/sysctl.d/97-oracle-database-sysctl.conf
vi /etc/default/grub
GRUB_CMDLINE_LINUX=
"rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet transparent_hugepage=never numa=off

grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

创建用户和目录

/usr/sbin/groupadd -g 54321 oinstall
/usr/sbin/groupadd -g 54322 dba
/usr/sbin/groupadd -g 54323 oper
/usr/sbin/groupadd -g 54324 backupdba
/usr/sbin/groupadd -g 54325 dgdba
/usr/sbin/groupadd -g 54326 kmdba
/usr/sbin/groupadd -g 54327 asmdba
/usr/sbin/groupadd -g 54328 asmoper
/usr/sbin/groupadd -g 54329 asmadmin
/usr/sbin/groupadd -g 54330 racdba
/usr/sbin/useradd -u 54331 -g oinstall -G dba,asmdba,asmoper,asmadmin,racdba grid
/usr/sbin/useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,racdba oracle

echo "oracle" | passwd --stdin oracle
echo "grid" | passwd --stdin grid

vi /home/grid/.bash_profile
vi /home/oracle/.bash_profile

mkdir -p /u01/app/19.0.0/grid
mkdir -p /u01/app/grid
mkdir -p /u02/app/oracle/product/19.0.0/db_1
chown -R grid:oinstall /u01/
chown -R oracle:oinstall /u02/
chmod -R 775 /u01/ /u02/

检查NTP时间同步,如果没有配置则需要将其关闭

service ntpd stop
chkconfig ntpd off
mv /etc/ntp.conf /etc/ntp.conf.bak
mv /etc/resolv.conf /etc/resolv.conf.bak

systemctl stop chronyd
systemctl disable chronyd
mv /etc/resolv.conf /etc/resolv.conf.bak
mv /etc/chrony.conf /etc/chrony.conf.bak

配置共享存储

vi /etc/udev/rules.d/99-oracle-asmdevices.rules
/sbin/udevadm trigger --type=devices --action=change

3.2 配置SSH互信

对 grid 和 oracle 用户配置 SSH互信

# cd $ORACLE_HOME/oui/prov/resources/scripts
# ./sshUserSetup.sh -user grid -hosts "rac1 rac2" -advanced -noPromptPassphrase
# ./sshUserSetup.sh -user oracle -hosts "rac1 rac2" -advanced -noPromptPassphrase

3.3 使用CVU验证添加的节点是否满足要求

在现有集群节点的grid用户下执行以下命令验证添加的节点是否满足GI软件的要求

[grid]$ cluvfy stage -pre nodeadd -n rac1 -verbose -fixup   自动产生修复脚本

3.4 添加Clusterware

执行以下命令将添加新节点Clusterware软件 (在现有集群节点的grid用户执行)

[grid]$ cd /u01/app/19.0.0/grid/addnode/
[grid]$ export IGNORE_PREADDNODE_CHECKS=Y
[grid]$ ./addnode.sh -silent -ignorePrereq "CLUSTER_NEW_NODES={rac1}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={rac1-vip}" "CLUSTER_NEW_NODE_ROLES={hub}"

上一步执行成功之后,在新节点以root用户身份运行以下两个脚本

# /u01/app/oraInventory/orainstRoot.sh
# /u01/app/19.0.0/grid/root.sh

验证

[grid@rac1 ~]$ crsctl status res -t
[grid@rac1 ~]$ crsctl status res -t -init
[grid@rac1 ~]$ crsctl check cluster -all
[grid@rac1 ~]$ olsnodes -n
[grid@rac1 ~]$ srvctl status asm
[grid@rac1 ~]$ srvctl status listener

3.5 添加Database软件

为新节点添加Database软件 (在现有集群节点以oracle用户执行)

[oracle]$ cd /u02/app/oracle/product/19.0.0/db_1/addnode/
[oracle]$ ./addnode.sh -silent -ignorePrereq "CLUSTER_NEW_NODES={rac1}"

上一步完成之后,在新的节点以root用户身份运行以下脚本

[root@rac1 ~]# /u02/app/oracle/product/19.0.0/db_1/root.sh

在现有集群节点或新节点,在grid和oracle用户下执行以下命令验证Clusterware和Database软件是否添加正确

[grid]$ cluvfy stage -post nodeadd -n rac1 -verbose

3.6 添加DB instance

方案1:
使用dbca工具执行以下命令,以静默模式添加新节点数据库实例(在现有集群节点以oracle用户执行)

[oracle@rac2 ~]$ dbca -silent -addInstance -gdbName "orcl" -nodeName "rac1" -instanceName "orcl1" -sysDBAUserName "sys" -sysDBAPassword "oracle"

方案2:
在现有节点以 oracle 用户运行 dbca
oracle RAC database instance management–>add an instence

3.7 检查集群和数据库是否正常

SQL> select instance_number,instance_name,status from gv$instance;
SQL> select thread#,status,instance from gv$thread;
[grid@rac1 ~]$ crsctl status res -t