Oracle19c-集群节点重新添加

前言:

        

        Oracle RAC集群在极端情况下,如硬件、主机,集群软件损坏,导致集群节点永久无法使用,需要对集群节点进行修复,删除节点集群信息并重新加入集群,以恢复集群原有的架构。

        本文主要讲述一套两节点的Oracle19c RAC集群,节点一orcl01由于主机异常无法正常启动,在对主机进行重装之后,需要将orcl01节点重新加入集群的操作步骤。

环境信息:

        操作系统:Linux 7

        RAC集群:19C

        主机节点:orcl01,orcl02

        实例:orcl1,orcl2

        存储访问:多路径+AFD

配置orcl01节点

        注:由于节点已经重装主机,所以主机信息需要重新配置

  • 配置hosts文件

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
​
10.10.4.26   orcl01
10.10.4.27   orcl02
10.10.4.34   orcl01-vip
10.10.4.35   orcl02-vip
192.168.25.1   orcl01-priv
192.168.25.2   orcl02-priv
​
10.10.4.36  orcl-scan
  • 存储多路径配置

#注意本环境集群用的AFD,不通过udev进行权限绑定
---使用节点二orcl02的/etc/multipath.conf
scp /etc/multipath.conf root@orcl01:/etc
---确认两节点磁盘数量,lun id一致
fdisk -l |grep -I sd
/usr/lib/udev/scsi_id -g -u -d /dev/sd{}
----生效多路径软件
systemctl restart multipathd
multipath -ll
  • 操作系统防火墙查看并关闭

---关闭防火墙
systemctl disable firewalld
systemctl stop firewalld
---检查防火墙状态
systemctl status firewalld
---关闭selinux
vim /etc/selinux/config
SELINUX=disabled
setenforce 0
getenforce
  • 禁用 Avahidaemon Service

systemctl stop avahi-dnsconfd
systemctl stop avahi-daemon
systemctl disable avahi-dnsconfd
systemctl disable avahi-daemon
  • 安装依赖包

---如果有缺少的软件包,请使用yum install -y 软件包名,进行安装
yum install -y gcc-c++*
yum install -y bc*
yum install -y binutils*
yum install -y compat-libcap1*
yum install -y compat-libstdc++*
yum install -y dtrace-modules*
yum install -y dtrace-modules-headers*
yum install -y dtrace-modules-provider-headers*
yum install -y dtrace-utils*
yum install -y elfutils-libelf*
yum install -y elfutils-libelf-devel*
yum install -y fontconfig-devel*
yum install -y glibc*
yum install -y glibc-devel*
yum install -y ksh*
yum install -y libaio*
yum install -y libaio-devel*
yum install -y libdtrace-ctf-devel*
yum install -y libXrender*
yum install -y libXrender-devel*
yum install -y libX11*
yum install -y libXau*
yum install -y libXi*
yum install -y libXtst*
yum install -y libgcc*
yum install -y librdmacm-devel*
yum install -y libstdc++*
yum install -y libstdc++-devel*
yum install -y libxcb*
yum install -y make*
yum install -y net-tools*
yum install -y nfs-utils*
yum install -y python*
yum install -y python-configshell*
yum install -y python-rtslib*
yum install -y python-six*
yum install -y targetcli*
yum install -y smartmontools*
yum install -y sysstat*
yum install -y compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
yum install -y /oracle/app/19.0/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm
  • 内核参数设置

---使用节点二orcl02的/etc/sysctl.conf
scp /etc/sysctl.conf root@orcl01:/etc
---生效
sysctl -p
  • 配置用户资源限制

---使用节点二orcl02的/etc/security/limits.conf
scp /etc/security/limits.conf  root@orcl01: /etc/security/
  • 加载pam_limits.so模块

vi /etc/pam.d/login
#ORACLE SETTING
session required pam_limits.so
  • 配置zeroconf

vi /etc/sysconfig/network
NOZEROCONF=yes
---重启网络生效
systemctl restart NetworkManager.service
  • 配置时间同步

---使用节点二orcl02的/etc/chrony.conf
scp /etc/chrony.conf  root@orcl01: /etc
systemctl status chronyd
systemctl start chronyd
systemctl enable chronyd
chronyc sources -n
  • 取消透明大页

---验证THP (Transparent hugepage)模式
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never  <<---- THP is enabled 
​
#备份并修改 /usr/lib/tuned/throughput-performance/tuned.conf ,将以下transparent_hugepages=always 修改为 transparent_hugepages=never
# cp /usr/lib/tuned/throughput-performance/tuned.conf /usr/lib/tuned/throughput-performance/tuned.conf.bkp_original
# vi  /usr/lib/tuned/throughput-performance/tuned.conf
[vm]  
transparent_hugepages=never
​
#重启服务器并验证THP模式.    
#cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never] <<--- THP Disabled
---查看是否关闭
cat /proc/meminfo |grep AnonHugePages
AnonHugePages:         0 kB
  • 创建用户和组

注意两节点的用户组id要一致
---创建用户组
groupadd -g 501 oinstall 
groupadd -g 502 dba
groupadd -g 503 oper
groupadd -g 504 backupdba
groupadd -g 505 dgdba
groupadd -g 506 kmdba
groupadd -g 507 racdba
groupadd -g 508 asmadmin
groupadd -g 509 asmdba
groupadd -g 510 asmoper
 
tail -n 10 /etc/group
​
---创建grid和oracle用户并设置密码:
useradd -u 501 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba,asmdba oracle             
useradd -u 502 -g oinstall -G dba,racdba,asmadmin,asmdba,asmoper grid   
passwd grid
passwd oracle
id oracle                                                         
id grid
  • 创建GI和DB软件相关目录

# ORACLE_BASE for GI
mkdir -p /oracle/app/grid
# ORACLE_HOME for GI
mkdir -p /oracle/app/19.0/grid
#ORA_INVENTORY FOR GI
Mkdir -p /oracle/app/oraInventory
# ORACLE_BASE for DB
mkdir -p /oracle/app/oracle
# ORACLE_HOME for DB
mkdir -p /oracle/app/oracle/product/19.0/db
chown -R grid.oinstall   /oracle
chmod -R 775 /oracle
chown -R oracle.oinstall /oracle/app/oracle 
#创建acfs挂载目录
mkdir /test
chown -R grid.oinstall /test
  • 设置用户环境变量

vi /home/grid/.bash_profile
PATH=$PATH:$HOME/bin:/oracle/app/19.0/grid/bin
​
export PATH
​
ORACLE_BASE=/oracle/app/grid
export ORACLE_BASE
ORACLE_HOME=/oracle/app/19.0/grid
export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export LD_LIBRARY_PATH
export ORACLE_SID=+ASM1
export CV_DESTLOC=/oracle/app/cvhome
​
vi /home/oracle/.bash_profile
ORACLE_BASE=/oracle/app/oracle
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/dbhome_1
export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export CLASSPATH
export PATH
export CV_DESTLOC=/oracle/app/cvhom
​
  • 配置互信

---在orcl02上执行
su - grid
cd $ORACLE_HOME/oui/prov/resources/scripts
./sshUserSetup.sh -user grid -hosts "orcl01" -advanced -noPromptPassphrase
su - oracle
cd $ORACLE_HOME/oui/prov/resources/scripts
./sshUserSetup.sh -user oracle -hosts "orcl01" -advanced -noPromptPassphrase
---手动执行一遍,确认互信正常
ssh orcl01 date
  • CVU检查

---在orcl02,grid上执行,验证节点之间配置是否一致
su - grid
$ cluvfy comp peer -refnode orcl02 -n orcl01
$ cluvfy stage -pre nodeadd -n orcl01

删除节点orcl01信息

由于orcl01主机异常,导致无法正常的从集群中删除异常orcl01的信息,所以需要我们手动从集群删除orcl01的信息

  • 剔除高可用服务orcl01实例信息

---orclsrv剔除orcl1
srvctl config service -d orcl -s orclsrv
srvctl modify service -d orcl -s orclsrv -modifyconfig -preferred orcl2 -f
srvctl status service -d orcl -s orclsrv
  • 通过DBCA删除orcl01实例信息

---通过dbca删除节点一orcl01实例,需要实例的sys密码以及图形界面
步骤1 instance management
步骤2 delete instance
#重复执行orcl
#删除实例节点的操作,主要会禁用instance_number,thread 1线程,删除thread 1相关的redo log以及节点一对应的undo表空间
#命令行方式删除
$ dbca -silent -deleteInstance -nodeName orcl01 -gdbName orcl  -instanceName  orcl1  -sysDBAUserName sys -sysDBAPassword "password"
---确认集群只剩节点二orcl02实例
crsctl stat res -t
  • 删除orcl01节点RDBMS软件清单信息

---orcl02软件清单里面删除RDBMS软件信息
su - oracle 
cd $ORACLE_HOME/oui/bin
./runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME  "CLUSTER_NODES={orcl02}"
  • 删除集群orcl01-vip节点信息

su - root
export ORACLE_HOME=/oracle/app/19.0/grid
cd $ORACLE_HOME/bin
#关闭orcl01-vip
./srvctl stop vip -i orcl01-vip
./srvctl remove vip -i orcl01-vip -f
#如果节点有其他vip,重复执行以上操作步骤即可
  • 删除集群orcl01节点信息

su - root
export ORACLE_HOME=/oracle/app/19.0/grid 
cd $ORACLE_HOME/bin
./olsnodes -s -t
./olsnodes -n -l
#如果状态为unpinned,则需要先unpin
crsctl unpin css -n orcl01
#delete集群orcl01信息
crsctl delete node -n orcl01
#确认删除完成
olsnodes -n -l

        删除集群orcl01节点信息

---orcl02软件清单里面删除gi软件信息
su - grid
cd $ORACLE_HOME/oui/bin
./runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME "CLUSTER_NODES={orcl02}" CRS=TRUE -silent

orcl01节点重新加入集群

  • 加入节点前预检查

在orcl02,grid用户下执行:
su - grid
$ cluvfy comp peer -refnode orcl02 -n orcl01
$ cluvfy stage -pre nodeadd -n orcl01
  • GI软件层面加节点

在orcl02,grid用户下执行:
su - grid
$ export IGNORE_PREADDNODE_CHECKS=Y
$ cd $ORACLE_HOME/addnode
$ ./addnode.sh -silent -ignorePrereq "CLUSTER_NEW_NODES={orcl01}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={orcl01-vip}"
  • CRS软件层面加节点

---确认afd,acfs操作系统支持
acfsdriverstate -orahome $ORACLE_HOME supported
afddriverstate -orahome $ORACLE_HOME supported
---添加之前确认两节点的tnsnames.ora,listener.ora,sqlnet.ora配置一致
---检查$ORACLE_HOME/crs/install/crsconfig_params配置信息正确
# /oracle/app/oraInventory/orainstRoot.sh
# /oracle/app/19.0/grid/root.sh
  • DB软件层面加节点

在orcl02,oracle用户下执行:
$ export IGNORE_PREADDNODE_CHECKS=Y
$ cd $ORACLE_HOME/addnode
$ ./addnode.sh -silent  -ignorePrereq "CLUSTER_NEW_NODES={orcl01}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={orcl01-vip}"
  • 实例层面加节点

---添加之前确认两节点的tnsnames.ora,listener.ora,sqlnet.ora,密码文件(非asm存放)配置一致
---gdbname 是unique_name
---srvctl  config database -d要为unique_name,不然会提示找不到
在orcl02,oracle用户下执行:
$ dbca -silent -addInstance -nodeName orcl01 -gdbName orcl  -instanceName  orcl1  -sysDBAUserName sys -sysDBAPassword "password"
  • 高可用服务加入orcl01实例

---orclsrv加入orcl1
srvctl config service -d orcl -s orclsrv
srvctl modify service -d orcl -s orclsrv -modifyconfig -preferred orcl2 -available orcl1
srvctl status service -d orcl -s orclsrv

检查集群状态

  • 检查加入后的集群状态

---检查集群组件状态
crsctl check crs 
crsctl stat res -t
crsctl query css votedisk
asmcmd lsdg
---检查集群日志
tail -100f $ORACLE_BASE/diag/crs/orcl01/crs/trace/alert.log
tail -100f $ORACLE_BASE/diag/crs/orcl02/crs/trace/alert.log
  • 检查加入后的实例状态

---检查实例状态
select inst_id,instance_number,instance_name,status,version,thread#
from gv$instance;
select inst_id,machine,count(*)
from gv$session
group by inst_id,machine;
---检查数据库日志
tail -100f $ORACLE_BASE/diag/rdbms/orcl/orcl1/trace/alert_orcl1.log
tail -100f $ORACLE_BASE/diag/rdbms/orcl/orcl2/trace/alert_orcl2.log
  • 检查主备状态

---检查dg状态信息
set linesize 200
col message for a100
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
select timestamp,message
from v$dataguard_status
order by timestamp;
set lin 180 pages 49999
col value for a50
select * FROM V$DATAGUARD_STATS;

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要向Oracle 19C集群添加节点,需要进行以下操作步骤: 1. 在新节点上安装Oracle软件并创建必要的目录结构,包括GI和DB软件相关目录。例如,创建ORACLE_BASE和ORACLE_HOME目录,并设置正确的权限。 引用中提供了一些示例命令,用于创建相关目录并设置权限。 2. 在新节点上创建新的实例,并将其添加集群配置中。可以使用srvctl命令来启动新实例并将其添加集群中。例如,可以使用以下命令启动新实例: 引用中提供了一个示例命令,用于启动新实例。 完成以上步骤后,新节点将成功添加Oracle 19C集群中。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Oracle19c-集群节点重新添加](https://blog.csdn.net/sinat_36757755/article/details/125774488)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [oracle19c 集群新增节点数据库实例](https://blog.csdn.net/fangang001/article/details/104835306)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值