Oracle 19.6 RAC节点1文件系统故障,要求重装系统,重建节点1。
在集群中剔除节点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
复制