写点什么

Oracle 19c GI 升级,遭遇未知 BUG 也不慌

  • 2020-08-19
  • 本文字数:2717 字

    阅读完需:约 9 分钟

Oracle 19c GI升级,遭遇未知BUG也不慌

本文由 dbaplus 社群授权转载。


大家好,今天咱来实践 19C 的 GI 升级。


前面提到过,Oracle 19C 替代 12C 将成为 Oracle 线条接下来这两年的主要工作。笔者所在客户现场的后续数据库集成安装都将以 19C 为标准版本。本文就以 19C 打最新的 GIRU(19.7.0.0.200414)步骤及遇到的问题做总结分享。

GIRU 实施步骤

补丁升级均采取滚动升级方式进行。


1、19 更新 OPatch 版本


打 GIRU(19.7.0.0.200414)所需要的 OPatch 版本为 12.2.0.1.19 及以上最新版本。建议使用 19C 版本进行补丁升级,所以我们这次使用的 OPatch 是 19C,具体命令如下:


更换GI HOME的opatch版本:su - gridcd /oracle/app/19.3.0/grid/cp /oraclelog/pa/opatch_20200622/p6880880_190000_Linux-x86-64.zip ./mv OPatch OPatch_20200622unzip p6880880_190000_Linux-x86-64.zipchown -R grid:oinstall OPatchchmod -R 775 OPatch/oracle/app/19.3.0/grid/OPatch/opatch version
更换DB HOME的opatch版本:su - oraclecd /oracle/app/oracle/product/19.3.0/dbcp /oraclelog/pa/opatch_20200622/p6880880_190000_Linux-x86-64.zip ./mv OPatch OPatch_20200622unzip p6880880_190000_Linux-x86-64.zip/u01/app/oracle/product/12.2.0.1/dbhome_1/OPatch/opatch version
复制代码


2、目录备份


该备份将作为补丁升级出错,rollback 也报错时的最后救命稻草。备份 app 及 oraInventory 两目录即可。


ps -ef|grep LOCAL=NO|awk '{print $2}'|xargs kill -9srvctl stop instance -d racdb -n racdb1su - root/oracle/app/19.3.0/grid/bin/crsctl stop crs/oracle/app/19.3.0/grid/bin/crsctl stat res -ttar -cvf /oraclelog/pa/opatch_20200622/gi_home_`hostname`_20200622.tar /oracle/apptar -cvf /oraclelog/pa/opatch_20200622/oraInventory_`hostname`_20200622.tar /oracle/app/oraInventory
复制代码


备份目录为啥要停库停 CRS?部分看官们估计会有疑问。这个还得从很早之前一次 Oracle 11G GI PSU 升级说起,当时笔者碰到这样一种情况,在确认当时备份命令运行正常,备份出来的文件大小正常情况下,在不停 CRS 的情况下备份出来的文件竟然不可用…还好当时值得庆幸的是补丁回滚成功了。所以这次“惊魂动魄”之后这个备份都“唯经验论”了。


3、拉起 CRS 进行补丁冲突分析


启动crs,不起db/oracle/app/19.3.0/grid/bin/crsctl start crs/oracle/app/19.3.0/grid/bin/crsctl stat res -ttail -100f /oracle/app/grid/diag/crs/*/crs/trace/alert*.log补丁冲突分析su - gridopatch prereq CheckConflictAgainstOHWithDetail –phBaseDir /oraclelog/pa/opatch_20200622/30899722/30869156opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /oraclelog/pa/opatch_20200622/30899722/30894985opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /oraclelog/pa/opatch_20200622/30899722/30869304opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /oraclelog/pa/opatch_20200622/30899722/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /oraclelog/pa/opatch_20200622/30899722/30898856su  - oracleopatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /oraclelog/pa/opatch_20200622/30899722/30869156opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /oraclelog/pa/opatch_20200622/30899722/30894985su - rootcd /oraclelog/pa/opatch_20200622/30899722/oracle/app/19.3.0/grid/OPatch/opatchauto apply /oraclelog/pa/opatch_20200622/30899722 -analyze
复制代码


预计这里有的看官又有疑问了,为啥启动 CRS,不起 DB?升级过程 GI 会自动把 DB 及 CRS 停下来并进行目录升级,这样不是多此一举吗。


各位看官应该清楚,繁忙生产库的 DB 因为并发和繁忙程度是没这么容易停下来的,一般作为老鸟来说,为了最大限度的万无一失,都会手动 kill 会话及手动做 checkpoint,switch logfile 让系统在自己眼皮子底下顺利停下来。这样做一来让系统停机可控,二来避免因让系统自动去停 DB 可能导致的各种各样的问题(如导致打补丁需要很长的时间等)。


冲突分析部分截图:





4、实施补丁


su - rootcd /oraclelog/shsnc/opatch_20200622/30899722/oracle/app/19.3.0/grid/OPatch/opatchauto apply /oraclelog/shsnc/opatch_20200622/30899722
复制代码


5、 数据字典更新并检查


在所有节点补丁实施完成后,拉起实例,开始数据字典更新。


su - oraclecd $ORACLE_HOME/OPatch./datapatch -verbose--检查补丁./opatch lsinventorysqlplus / as sysdbaset line 300 pages 100col ACTION_TIME for a30col DESCRIPTION for a60select PATCH_ID, FLAGS,ACTION,STATUS,INSTALL_ID,ACTION_TIME,DESCRIPTION   from DBA_REGISTRY_SQLPATCH order by ACTION_TIME;
复制代码


补丁升级成功截图:


问题汇总

1、补丁升级失败,报 oui-patch.xml 文件没有权限


报错截图如下:



从以上截图我们可以看到补丁在 DB HOME 已经成功应用,但是在 GI HOME 应用时失败,报/oracle/app/oraInventory/ContentsXML/oui-patch.xml 文件权限问题。我们查看文件权限发现问题所在,同组 grid 用户该文件无写权限。



补丁回滚失败后,把之前备份的目录 tar 回来发现数据库安装之后是没有这个文件的。由此我们可以知道 oui-patch.xml 是在 DB HOME 进行补丁升级时派生的。



再次进行补丁升级时,发现 oui-patch.xml 已生成。



紧急给 oui-patch.xml 赋予 664 权限(注:只要文件一旦生成,需立即赋权),补丁升级成功。



Warning 是告知实例未启动,需要手动启动并运行脚本进行数据字典更新,可忽略。


2、补丁升级成功之后,节点 1 CRS 报错如下



在节点 1 CRS alert 日志中我们发现节点 1 会去检查所有节点的这些文件。当发现文件不存在时就报该错。前往各节点查看这些文件,确认在所有节点都不存在。


核实部分截图:



这些 Jackson 开头的 JAR 包均是 Jackson 工具所属 JAR 包。从当前来看这个应该是 Oracle 为以后版本新功能准备的,但是当前目录又没有添加对应的 JAR 包,所以报错。通过核查集群及数据库均确认正常的情况下,该报错可忽略。

总结

以上两个报错在 MOS 均查不到详细信息,对于本来就是吃螃蟹的尝新过程,或多或少会遇到各种未知 BUG,这个过程我们遇山开路,逢水搭桥,依托自己的功力,相信自己,总会找到问题的原由及解决方案。


作者介绍


魏斌,新炬网络资深数据库专家,长期服务于运营商、金融、制造业及政企客户。从传统商业 DB 到开源分布式,均有涉猎及独到见解。职业以来扎根客户一线,对于紧急故障处置及性能问题优化具有丰富经验,尤善于灾备、多中心建设及异构数据迁移。


原文链接


Oracle 19c GI升级,遭遇未知BUG也不慌


2020-08-19 10:111864

评论

发布
暂无评论
发现更多内容

【kafka运维】Leader重新选举运维脚本

石臻臻的杂货铺

kafka 运维

schema设计与管理

刺猬

论文复现丨基于ModelArts进行图像风格化绘画

华为云开发者联盟

人工智能 华为云 12 月 PK 榜

企业大数据价值最大化的关键因素

元年技术洞察

大数据 数据中台 数字化转型

启科 QuSaaS 真随机数解决方案与 Amazon Braket 结合实践

亚马逊云科技 (Amazon Web Services)

亚马逊云科技 Hero 专栏

数据人PK也无人,为什么业务部门的数据需求都是急活?

雨果

数据开发 数据工程师 数据服务

什么是数据管理?看完这篇你一定有收获

雨果

数据管理

创元集团的数智化实践 这次选择了和火山引擎VeDI搭档

字节跳动数据平台

大数据 数据治理 12 月 PK 榜

女生参加前端培训学习有前途吗?

小谷哥

教你用JavaScript实现大转盘

小院里的霍大侠

JavaScript 初学者 入门实战

校招面试真题 | 你的期望薪资是多少?为什么?

霍格沃兹测试开发学社

云上安全办公,就用华为云桌面

科技说

前端培训机构学习前端开发难度大吗

小谷哥

武汉java培训后可以选择那些就业方向

小谷哥

【JVM实战系列】「监控调优体系」实战开发arthas-spring-boot-starter监控你的微服务是否健康!

码界西柚

Java JVM Alibaba Arthas 12 月 PK 榜

TypeScript 前端工程最佳实践

京东科技开发者

typescript 前端 前端开发 编程语言】

线上线下大数据培训机构应该怎么选

小谷哥

百度工程师带你体验引擎中的nodejs

百度Geek说

JavaScript 前端 nodejs 12 月 PK 榜

如何通过Java提取PDF中的图片

Geek_249eec

Java PDF 图片

数据中台选型前必读(七):解读数据服务的四大关键技术

雨果

数据中台 DaaS数据即服务

学习大数据技术后的就业前景怎么样

小谷哥

头像类NFT的未来,实际价值在哪里?

博文视点Broadview

【基础知识】PCB板上的字母数字是什么意思,代表哪些元器件?

华秋PCB

元器件 PCB PCB设计

远程灵活办公,就用华为云桌面

科技说

带你读AI论文丨针对文字识别的多模态半监督方法

华为云开发者联盟

人工智能 华为云 文字识别 12 月 PK 榜

技术分享 | 测试的本质是什么?

霍格沃兹测试开发学社

探索科创服务升级之路,星创科服“贴身陪伴”硬科技冠军企业成长

硬科技星球

图算法、图数据库在风控场景的应用

NebulaGraph

图数据库 风控

大道至简,自治为王 | 2022年12月《中国数据库行业分析报告》精彩抢先看

墨天轮

数据库 Serverless 云数据库 国产数据库 polarDB

阿里云助力抖音,为2022世界杯护航

云布道师

阿里云

这个团队敢闯、会创,北京交通大学团队结合昇思MindSpore技术助力打造“智慧安全交通”

极客天地

Oracle 19c GI升级,遭遇未知BUG也不慌_数据库_dbaplus社群_InfoQ精选文章