【系列实验二】RAC 19C集群:CentOS 7.9 原地升级至 Oracle Linux 8.10 实战笔记

RAC 19C集群:CentOS 7.9 原地升级至 Oracle Linux 8.10 实战笔记

> 适用场景

> - 存量 CentOS 7.9 服务器(含 Oracle RAC 19c)

> - 需要"原地"过渡到 Oracle Linux 8.10,保留数据库与Grid软件

> - 可连外网,可短时间中断业务

> - 升级方案的一种,仅作为实验研究,生产上实施需充分评估


1. 升级总览

阶段 关键动作 预计耗时
① 预检查 卸载 EL5/EL6 包、停集群、备份 15 min
② 发行版迁移 执行 centos2ol.sh 切到 OL7 20~40 min
③ 主版本升级 leapp 两步式升级(preupgrade → upgrade) 50~120 min
④ 事后清理 装 GUI、启集群、验证 DB 15 min

2. 升级前准备

升级会遇到各种问题,建议操作前打个快照,有退路才是王道。

2.1 关闭 Oracle 集群

bash 复制代码
crsctl stop crs
crsctl disable crs
ps -ef | grep grid   # 确认无残留

2.2 清理"古董"包

bash 复制代码
rpm -qa | grep -E 'el5|el6|pdksh'
#如有返回,一律 yum remove 卸载

2.3 网络配置

配置网络,保证能连接外网,并对外网域名进行解析

bash 复制代码
ping www.baidu.com   # 确保能解析外网

2.4 清理 YUM配置

这个步骤很重要,不清理干净,很可能没开始就结束了,不要问我怎么知道的。没找到好的办法,只能回退快照了。

bash 复制代码
cd /etc/yum.repos.d/
rm -rf *.repo        # 清空旧源

3. 执行发行版迁移(CentOS → Oracle Linux 7)

到github上下载centos2ol.sh这个脚本,然后上传。

bash 复制代码
chmod +x centos2ol.sh
./centos2ol.sh
  • 脚本会自动置换 repo 并重装核心包
  • 完成后 必须重启,此时系统已是 Oracle Linux 7(内核仍为 3.10)
  • 其中有一次升级过程中网络不稳定中断了,报错如下,可以忽略。

4. 使用 leapp 升级到 Oracle Linux 8

4.1 准备 OL8 升级源

/etc/yum.repos.d/oracle-linux-ol7.repo 末尾追加:

ini 复制代码
[ol8_upgrade]
name=Oracle Linux $releasever Add ons ($basearch)
baseurl=https://yum.oracle.com/repo/OracleLinux/OL7/leapp/x86_64
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=0
enabled=1

4.2 安装 leapp

bash 复制代码
yum -y install leapp*

4.3 预升级检查

bash 复制代码
leapp preupgrade --nogpgcheck --oraclelinux

报错如下

  • 报告写入 /var/log/leapp/leapp-report.txt

  • /var/log/leapp/answerfile 提示 confirm=true ,按格式改为如下,后面不要有空格或者换行:

    复制代码
    confirm = True
记其中一次报错


看报错内容,把kernel-devel卸载了就可以了

bash 复制代码
yum remove kernel-devel-3.10.0-1160*

再次进行预检查

bash 复制代码
leapp preupgrade --nogpgcheck --oraclelinux

可以了。

4.4 正式升级

bash 复制代码
leapp upgrade --nogpgcheck --oraclelinux

可以查看以上报错或者 /var/log/leapp/leapp-report.txt 报告文件,删除不兼容的包

删除这些包:

bash 复制代码
yum -y remove sysvinit-tools-2.88-14.dsf.el7.x86_64
yum -y remove python-sssdconfig-1.16.5-10.el7.noarch
yum -y remove pycairo-1.8.10-8.el7.x86_64
yum -y remove python-idna-2.4-1.el7.noarch
yum -y remove python-six-1.9.0-2.el7.noarch
yum -y remove python-inotify-0.9.4-4.el7.noarch

再安装leapp

bash 复制代码
yum -y install leapp*

再执行一遍

bash 复制代码
leapp upgrade --nogpgcheck --oraclelinux

如果还有,就再重复上述操作。最终得到如下error=0,标题不是红色的,则成功。

4.5 重启进入 OL8

复制代码
reboot

差不多耗时30分钟左右。

  • 完成后 cat /etc/oracle-release 应显示:

5. 事后配置

5.1 安装图形化

bash 复制代码
yum -y groupinstall "Server with GUI"

reboot

5.2 重新启用集群

bash 复制代码
crsctl enable crs
crsctl start crs

开启集群后会发现数据库开启失败。

5.3 解决 DB 启动失败

手动开启数据库实例,报错如下:

bash 复制代码
[oracle@rac4 trace]$ srvctl start instance -d orcl -i orcl4
PRCR-1013 : Failed to start resource ora.orcl.db
PRCR-1064 : Failed to start resource ora.orcl.db on node rac4
CRS-5017: The resource action "ora.orcl.db start" encountered the following error:
ORA-03113: end-of-file on communication channel
Process ID: 0
Session ID: 0 Serial number: 0
. For details refer to "(:CLSN00107:)" in "/u01/app/grid/diag/crs/rac4/crs/trace/crsd_oraagent_oracle.trc".

CRS-2674: Start of 'ora.orcl.db' on 'rac4' failed

查看*/u01/app/grid/diag/crs/rac4/crs/trace/crsd_oraagent_oracle.trc*后发现报错如下:

看到这个报错就是共享内存段没有配置,查看 /etc/sysctl.conf ,没有内容,升级之前的配置都清空了。把sysctl.conf 配置完后 sysctl -p 后数据库就可以正常开启。

其他的操作系统的配置都要修改一下。

至此升级操作完成。

相关推荐
努力努力再努力wz26 分钟前
【Linux网络系列】:JSON+HTTP,用C++手搓一个web计算器服务器!
java·linux·运维·服务器·c语言·数据结构·c++
一码归一码@29 分钟前
Mysql进阶之事务原理
数据库·mysql
老邓计算机毕设8 小时前
SSM学生选课系统xvbna(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·学生选课系统·ssm 框架·高校教学管理
物理与数学8 小时前
linux 内存分布
linux·linux内核
枷锁—sha8 小时前
【PortSwigger Academy】SQL 注入绕过登录 (Login Bypass)
数据库·sql·学习·安全·网络安全
东城绝神9 小时前
《Linux运维总结:基于ARM64+X86_64架构使用docker-compose一键离线部署MySQL8.0.43 NDB Cluster容器版集群》
linux·运维·mysql·架构·高可用·ndb cluster
creator_Li9 小时前
即时通讯项目--(1)环境搭建
linux·运维·ubuntu
Mr'liu10 小时前
MongoDB 7.0 副本集高可用部署
linux·mongodb
逍遥德10 小时前
PostgreSQL 中唯一约束(UNIQUE CONSTRAINT) 和唯一索引(UNIQUE INDEX) 的核心区别
数据库·sql·postgresql·dba
工业甲酰苯胺10 小时前
字符串分割并展开成表格的SQL实现方法
数据库·sql