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 后数据库就可以正常开启。
其他的操作系统的配置都要修改一下。
至此升级操作完成。