数据库管理-第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

相关文章

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级