文章联动
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