数据库管理-第162期 我敢在升级过程中ctrl+c,你敢么(20240320)

2024-03-20 17:52

本文主要是介绍数据库管理-第162期 我敢在升级过程中ctrl+c,你敢么(20240320),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据库管理162期 2024-03-20

  • 数据库管理-第162期 我敢在升级过程中ctrl+c,你敢么(20240320)
    • 1 背景
    • 2 问题1
    • 3 问题2
    • 4 解决
    • 总结

数据库管理-第162期 我敢在升级过程中ctrl+c,你敢么(20240320)

作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Associate: Database(Oracle与MySQL)
国内某科技公司 DBA总监
10年数据库行业经验,现主要从事数据库服务工作
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP、认证技术专家、年度墨力之星,ITPUB认证专家,OCM讲师
圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭。

春分到来,因为昨天凌晨割接了,昨天休息了一天,今天就给昨天割接过程中的小插曲总结分享一下。

1 背景

为了彻底解决在《数据库管理-第155期 记一次发生在备库上的故障处理(20240226)》中那个会导致实例异常重启的BUG,给数据库打19.22补丁(关于RAC上的升级操作,请看第七十六期)。这中间出现了俩问题:1.备库因为BUG的问题,在第一个节点opatchauto时另外3个节点数据库实例都挂了;2.主库在应用SQL Patch的时候卡了一小时。下面就跟随总监一起看看我是咋解决的。

2 问题1

其实这个问题挺好解决的,看了下挂掉实例的日志,确认是BUG引起的,那么还是按照之前的操作来,把除已经打好补丁的节点以外的节点都先干掉:

sudo /u01/app/19.0.0/grid/bin/crsctl stop crs -f

然后再启动下一个节点,并应用补丁:

sudo /u01/app/19.0.0/grid/bin/crsctl start crs
sudo /u01/app/19.0.0/grid/OPatch/opatchauto apply /path/to/patch/

在第二个节点补丁升级操作完成后确认节点一实例未出现异常,因此继续完成剩余节点补丁升级,未再出现问题。

3 问题2

首先重新梳理一下opatchauto到底做了些啥:

  1. 补丁检查(这一步也建议预先做了)
  2. 关闭CRS(包括DB)
  3. DB home应用补丁
  4. GI home应用补丁
  5. 启动CRS(包括DB)

这是常规的基本流程,在opatchauto判断到最后一个节点时,将增加sqlpatch的操作,等效于下面的操作:

$ORACLE_HOME/OPatch/datapatch -verbose

而这部分在opatchauto过程中是看不到日志位置的,日志位置在:

/u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_xxxxx_2024_03_19_xx_xx_xx/

在该目录下,sqlpatch_catcon_x.log则记录了对应容器的sqlpatch的操作日志,经过对每个日志文件检查,发现是有个PDB执行卡住了。在这个目录下还有一个文件,记录了干掉每个容器的操作会话:

sqlpatch_catcon__catcon_kill_sess_xxxxx_ALL.sql

在sqlplus里面执行即可终止sqlpatch操作:

start sqlpatch_catcon__catcon_kill_sess_xxxxx_ALL.sql

然后在opatchauto的终端果断按下了:

ctrl+c

结束了opatchauto。

4 解决

后面还有OJVM,因此用手工采用rolling的方式把OJVM补丁先打了,重新启动实例后确实发现之前卡住的PDB处在restricted状态,因此手工重新跑了sqlpatch:

$ORACLE_HOME/OPatch/datapatch -verbose

这次没有出现问题,看了下EMCC,应该是打第一次sqlpatch有些SQL影响了打补丁操作,再次重启后没有这些SQL了。

总结

本次解决了在升级过程中的两个问题,需要对RAC和升级流程非常了解。
老规矩,知道写了些啥。

这篇关于数据库管理-第162期 我敢在升级过程中ctrl+c,你敢么(20240320)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/830267

相关文章

HTML5中的Microdata与历史记录管理详解

《HTML5中的Microdata与历史记录管理详解》Microdata作为HTML5新增的一个特性,它允许开发者在HTML文档中添加更多的语义信息,以便于搜索引擎和浏览器更好地理解页面内容,本文将探... 目录html5中的Mijscrodata与历史记录管理背景简介html5中的Microdata使用M

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

python uv包管理小结

《pythonuv包管理小结》uv是一个高性能的Python包管理工具,它不仅能够高效地处理包管理和依赖解析,还提供了对Python版本管理的支持,本文主要介绍了pythonuv包管理小结,具有一... 目录安装 uv使用 uv 管理 python 版本安装指定版本的 Python查看已安装的 Python

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数