【系列实验二】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 后数据库就可以正常开启。

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

至此升级操作完成。

相关推荐
大聪明-PLUS1 小时前
C++编程中存在的问题
linux·嵌入式·arm·smarc
川石课堂软件测试1 小时前
使用loadrunner调用mysql API进行性能测试
服务器·数据库·python·selenium·mysql·单元测试·自动化
pingzhuyan1 小时前
linux运维异常(总) - 排查与修复(系统yum,docker,网络dns解析等)
linux·运维·docker·centos·shell
迷茫的21世纪的新轻年1 小时前
PostgreSQL——SQL优化
数据库·sql·postgresql
问道飞鱼1 小时前
【Linux知识】Shell 脚本参数详解:从基础到高级应用
linux·运维·服务器·shell
观音山保我别报错1 小时前
文件操作指南
linux·运维·服务器
编程修仙2 小时前
第十一篇 Spring事务
xml·java·数据库·spring
绝顶少年2 小时前
Redis 高可用架构三部曲:主从复制、哨兵模式与集群模式深度解析
数据库·redis·架构
倔强的石头1062 小时前
从 Oracle 到 KingbaseES:破解迁移痛点,解锁信创时代数据库新可能
数据库·oracle·金仓数据库