乐于分享
好东西不私藏

Oracle Linux 9.6卸载Oracle 19c RAC集群

Oracle Linux 9.6卸载Oracle 19c RAC集群

将Oracle Linux 9.6(OL 9.6)上已部署的Oracle 19c RAC架构完全清理并恢复到“最干净的初始状态”,需要遵循先上层(Database)、后下层(Grid Infrastructure)、再环境与内核配置的逆向彻底卸载流程。

一、 卸载与清理步骤

1.彻底清理数据库与集群软件

为了防止残留进程锁住共享存储,请严格按照以下顺序执行。在节点1(或其中任一节点)执行即可,它会自动调用SSH清理其余节点:

1)删除数据库(以oracle用户执行)

# 删除数据库

[oracle@rac1 ~]$ dbca -silent -deleteDatabase -sourceDB racdb

# dbca -silent -deleteDatabase -sourceDB <数据库实例名/DB_UNIQUE_NAME>

# 验证是否删除成功

[oracle@rac1 ~]$ srvctl status database -d racdb

2)卸载数据库软件(在rac1节点执行)

[oracle@rac1 ~]$ cd $ORACLE_HOME/deinstall

[oracle@rac1 deinstall]$ ./deinstall

# 根据提示输入相应信息进行卸载

3)卸载 Grid Infrastructure(以grid用户执行)

进入GI安装目录的deinstall路径下执行脚本。它会清除节点上的所有集群配置:

[root@rac1 ~]# su - grid

[grid@rac1 ~]$ cd $ORACLE_HOME/deinstall

[grid@rac1 deinstall]$ ./deinstall

注意:执行过程中会弹出一个提示,要求以root用户在所有节点上运行指定的shell脚本命令,请务必开启另一个终端以root权限去执行,执行完后再回到当前窗口敲回车。

4)清理系统残留目录与配置文件(所有节点以root执行)

卸载工具通常无法100%擦除所有文本痕迹,必须手动强制清理

1)清理Oracle体系核心目录:

[root@rac1 ~]# rm -rf /u01/app/oracle

[root@rac1 ~]# rm -rf /u01/app/grid

[root@rac1 ~]# rm -rf /u01/app/oraInventory

2)清理系统注册与配置文件:

[root@rac1 ~]#rm -rf /etc/oratab

[root@rac1 ~]#rm -rf /etc/oraInst.loc

[root@rac1 ~]#rm -rf /etc/oracle

[root@rac1 ~]#rm -rf /opt/ORCLfpps

[root@rac1 ~]#rm -rf /var/tmp/.oracle

[root@rac1 ~]#rm -rf /tmp/OraInstall*

[root@rac1 ~]#rm -rf /tmp/.oracle

[root@rac1 ~]#rm -rf /etc/init.d/init.ohasd

二、恢复操作系统环境

1. 恢复伪装环境变量(伪装 OL8)(如果有配置)

由于Oracle 19c原生并不官方支持Oracle Linux 9.x系列安装,之前可能使用了修改os-release 或设置CV_ASSUME_DISTID环境变量等伪装手段。如果要达到最干净的状态,需要将其还原:

1)还原/etc/os-release模板:

备份过该文件,请直接覆盖恢复。如果没有,请编辑/etc/os-release和/etc/oracle-release,将其中的版本号改回您原本的9.6。

[root@rac1 ~]# cp /etc/oracle-release.bak /etc/oracle-release

[root@rac1 ~]# cp /etc/redhat-release.bak /etc/redhat-release

2)清理环境变量伪装:

检查并删除/home/grid/.bash_profile和/home/oracle/.bash_profile中的如下声明:

# 删除此行或将其注释

export CV_ASSUME_DISTID=OEL8.5 

2. 还原系统scp命令(撤销外壳脚本修改)(如果有配置)

如果之前为了绕过Java Bug修改了系统的scp二进制文件,请务必将其还原为官方原生状态。

1)在rac1和rac2上以root用户执行:

if [ -f /usr/bin/scp.orig ]; then

mv -f /usr/bin/scp.orig /usr/bin/scp

chmod 755 /usr/bin/scp

echo "SCP 命令已成功还原为系统原生状态"

fi

3. 彻底清空SSH互信与密钥缓存(双节点执行)(如果有配置)

1)清理grid和oracle用户的SSH钥匙串(所有节点):

[root@rac1 ~]# rm -rf /home/oracle/.ssh/*

[root@rac1 ~]# rm -rf /home/grid/.ssh/*

2)清理系统的已知主机记录及临时授权(所有节点):

[root@rac1 ~]# rm -rf /root/.ssh/*

4. 恢复系统加密策略(Crypto Policies)与FIPS(如果有配置)

如果您之前为了兼容旧版Oracle降低了系统的安全策略,现在将其改回Oracle Linux 9.6的标准默认状态。

1)在rac1和rac2上以root用户执行:

# 还原加密策略为系统默认的高强度模式

[root@rac1 ~]# update-crypto-policies --set DEFAULT

[root@rac1 ~]# update-crypto-policies --show

# 恢复SSH服务默认配置(删除在末尾添加的+ssh-rsa允许规则)

# 建议手动vi /etc/ssh/sshd_config删掉末尾的"PubkeyAcceptedKeyTypes +ssh-rsa"

[root@rac1 ~]# systemctl restart sshd

2)检查并根据您最初的状态决定是否恢复FIPS(通常保持disable即可,无需刻意恢复,否则会阻断很多基础软件)

[root@rac1 ~]# fips-mode-setup --check

[root@rac1 ~]# fips-mode-setup --enable (注:生产环境一般也不建议开启)

三、清理共享存储磁盘

在重新部署时,Grid检查如果发现磁盘上残留有之前的ASM头部信息,会直接报磁盘已被占用的错误。

1.在任意一个节点(例如rac1)上,以root用户对您所有的共享磁盘(DATA,RECO,CRS 等)灌入零字节,彻底擦除ASM元数据:

# 擦除规划用于OCR和DATA的所有共享磁盘前100M空间

[root@rac1 ~]# dd if=/dev/zero of=/dev/dm-5 bs=1M count=100 conv=notrunc

[root@rac1 ~]# dd if=/dev/zero of=/dev/dm-6 bs=1M count=100 conv=notrunc

# 执行完后,在rac2节点上运行以下命令强制让系统重新扫描磁盘阵列

# (若是多路径环境执行multipath -r,普通磁盘执行partprobe)

[root@rac2 ~]# multipath -r