观点分享:Oracle数据库GRID升级的案例的闲聊
我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。
今天我们来聊聊Oracle集群环境中GRID/CRS大版本升级。别担心,这不是官方文档的枯燥翻译,也不是厂商PPT的自嗨推销,而是两个真实案例的“吐槽”与反思。案例如有雷同,纯属巧合,毕竟“神操作”总是惊人地相似。
为什么会想到聊这个话题呢?其实在1年之前在一次机缘巧合的情况下学习到B案例的升级方法,让我眼前一亮,原来11G的GRID升级到19C的GRID升级方案可以做得如此的“精美”,一次就可以搞定升级的事情,可以拆分成3次来做,10天的活可以弄成50天,关键是还能将风险从0直接拉到满分,真心的很佩服这样的方案设计师,成功的将368的价格吹成了9998,并且还在9998的价格成交了。
环境介绍
B案例的环境大概是这样,3节点Linux环境的RAC接2台存储做双活,其中第三节点异常,集群已经停了,备库有单机ADG和2套通过OGG来实现的报表数据库,主库的版本为11.2.0.4,报表数据库为12C,客户每间隔半年会有一天的检修事件,故整个数据库升级和验证工作在24小时完成即可。另外再补充一些额外信息,数据库容量在5T左右,操作系统版本兼容11G,但是不兼容19C。
升级方案
B案例最后实施方案分四步来实现:
第一步
新引入一套设备(包括服务器和存储)安装19C集群、19C数据库软件、11G数据库软件、安装OGG软件,搭建与11G主库的ADG和新建CDB,原单机备库安装19C数据库软件,搭建新建CDB到单机环境的ADG。
第二步
11G环境停业务、停OGG,将11G主库切换到19C新环境中,在19C新环境中升级11G数据库到19C,升级成功后将NON-CDB环境加载新建的CDB环境中,数据库成功的从11G环境升级到19C中,在19C中重新配置OGG,恢复OGG同步链路,在此状态下持续运行到下一个维护窗口期。
第三步
重新初始化原来11G的那套环境,安装最新的操作系统,安装19C的集群和数据库软件,重新搭建ADG实现数据库同步,从新配置OGG链路。
第四步
新环境19C数据库回切到原来老环境,OGG链路回切到老环境。
方案感想
复杂性:把简单的事做复杂,才显得专业
B案例整个系统环境是非常简单的,典型的RAC+ADG+OGG的环境,所以节点多,但是技术简单。方案设计师充分的考虑到客户系统对业务的影响,尽最大能力的降低数据库升级过程中给业务系统带来的不确定因素,所以采用“最保险的”异机升级数据库方案。在异机升级方案中,方案设计师引入了整个方案中最经典的设计,那就是引入一套新设备,并且需要再新设备上运行到下一次的维护窗口,那么也就意外这OGG等同步链路也要做对应的迁移,并且还涉及到回迁的操作,将整个升级工作成功的弄成了一个大工程。
风险可控:勇气可嘉,操作大胆
这个方案不仅仅是方案设计师拥有超高的设计水平,就连实施工程师一样的具备破釜沉舟的决心和毅力,听说整个方案在客户现场连测试都没有测试,直接升级迁移,最后出现方案命令都是错的,听说最后拿出了Win重启解决所有问题的大招,报错不行,就将整个环境删除,重新弄一套环境的方式,成功跳过了报错,一切都来到了新的状态,重新搭建ADG容灾。新引入的硬件设备也未做任何的压测和其它的风险评估,直接一下油门踩到底,高负载下见分享。
方案可靠:异机升级方案可靠吗?
异机升级方案基本成为Oracle数据库升级方案的代名词,不管什么环境,不管升级GRID还是DB,统一采用异机升级的方案。曾经听到过一些人说数据库不采用异机升级就不能做升级,如果要做升级,需要客户自己来承担风险,虽然很可笑,但是别人总以风险为理由。其实有些时候我们真应该想象,是真的有技术风险还是说不愿意研究新技术而有风险。异机升级升级方案其实就如过去Oracle数据库必须通过存储镜像来做容灾环境到现在大家基本已经接受通过Oracle ADG技术一样可以实现容灾需求一样,并不是技术不好,不可靠,而是当前已经有最新的技术更带来更好的效果。
最佳方案:你会怎么选
如果你是这个方案的主刀人,在客户有24小时的停机窗口下,以降低客户风险为前提下,你会涉及怎样的升级方案呢?
总结
升级本是技术活,结果被玩成了“项目管理+预算游戏”。方案设计师和实施工程师的“神操作”,让人忍俊不禁。希望大家在看完这个案例后,能对“复杂即高端”的迷思有新的认识。下次我们再聊聊A客户的升级故事,看看有没有更“清奇”的思路。
------------------作者介绍-----------------------
姓名:黄廷忠
现就职:Oracle中国高级服务团队
曾就职:OceanBase、云和恩墨、东方龙马等
电话、微信、QQ:18081072613
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)
观点分享:Oracle数据库GRID升级的案例的闲聊的更多相关文章
- oracle数据库psu升级(本实验是将10.2.0.3.12升级到10.2.0.3.15)
psu升级(本实验是将10.2.0.3.12升级到10.2.0.3.15) 一.解压安装包自定义存放路径为/home/oracle/yjb/psu/10.2.0.3.15cd /home/oracle ...
- Oracle 数据库升级过程中的主要步骤
Oracle 数据库升级包括六个主要步骤. Oracle 数据库的升级步骤工作流 步骤 1:准备升级 Oracle 数据库 熟悉 Oracle 数据库新版本的特性. 确定新版本的升级路径. 选择升级方 ...
- 【绝密外泄】风哥Oracle数据库DBA高级工程师培训视频教程与内部资料v0.1
[绝密外泄]风哥Oracle数据库DBA高级工程师培训视频教程与内部资料v0.1 由于是[绝密外泄]资料,防止被查,需要的小伙伴赶紧下载附件中的课件文档.由于视频太大了,已放在百度网盘了,已经在附中说 ...
- 《Oracle Database 12c DBA指南》第二章 - 安装Oracle和创建数据库(2.1 安装Oracle数据库软件和创建数据库概览)
当前关于12c的中文资料比较少,本人将关于DBA的一部分官方文档翻译为中文,很多地方为了帮助中国网友看懂文章,没有按照原文句式翻译,翻译不足之处难免,望多多指正. 2.1 安装Oracle数据库软件和 ...
- Oracle数据库版本号定期检视与升级的必要性分析
目 录 ▇1.ORACLE数据库版本号知识 ▇2.看看自己的数据库还有没有支持服务 ▇3.看11.2.0.3版本号各PSU的公布时间与解决BUG数量列表 ▇4.看11.2.0.4版本号各PSU的公布时 ...
- Oracle数据库升级(10.2.0.4->11.2.0.4)
环境: RHEL5.4 + Oracle 10.2.0.4 目的: 在本机将数据库升级到11.2.0.4 之前总结的Oracle数据库异机升级:http://www.cnblogs.com/jyzha ...
- 中断ORACLE数据库关闭进程导致错误案例
昨晚下班的时候,我准备关闭本机的虚拟机上的ORACLE数据库后准备下班,但是由于我SecureCRT开了多个窗口,结果一不小心,疏忽之下在一个生产服务器上执行了shutdown immediate命令 ...
- [原创]安装Oracle 11gR2,以及如何在win8下使用plsql develper连接Oracle数据库 ,在这里和大家分享下
一,关于win8下安装Oracle 11gR2 1.我下载的是Oracle_11gR2_win64.其中有两个包: 注意:在解压了之后将:win64_11gR2_database_2of2\datab ...
- 【JSP】JSP与oracle数据库交互案例
************************************************************************ ****原文:blog.csdn.net/clark_ ...
- 探索Oracle数据库升级6 11.2.0.4.3 Upgrade12c(12.1.0.1)
探索Oracle数据库升级6 11.2.0.4.3 Upgrade12c(12.1.0.1) 一.前言: Oracle 12c公布距今已经一年有余了,其最大亮点是一个能够插拔的数据库(PD ...
随机推荐
- 从零创建npm依赖,只需执行一条命令
由来 最近在弄新的npm依赖,但是发现没有都从头创建项目实属有点儿麻烦,然后我找了之前开发的依赖,将多余代码删除了作为初始化的项目.于是~为什么不弄个模版,每次只需要初始化模版即可,所以就有了这个模版 ...
- SpringAI vs JBoltAI:Java企业级AI开发的框架之争与实战选型
「SpringAI vs JBoltAI:Java企业级AI开发的框架之争与实战选型」 一.Java生态的AI困局:工具碎片化与工程化缺失 1. 技术断层:从API调用到全生命周期管理多数企业仍停留在 ...
- 将本地库上传到 GitHub
4.4.1 上传本地库 在 GitHub 网站上创建仓库 复制仓库地址 在 Idea 中的模块上右键 设置远程地址别名 点击 Push 推送到 GitHub 仓库 上传成功 4.4.2 正常情况下是合 ...
- 校验获取数据或者返回值的方法,should contain的用法
如上图,验证"首页"是否添加成功,我们就通过验证页面上是否存在"首页"这个关键字,来确认数据是否添加成功 RB的写法如上图,原理是以文本输出"首页&q ...
- DPDI(Dispatch PDI)kettle调度管理平台升级预告
亲爱的DPDI用户们,久等了!Dispatch PDI全新升级,焕然一新的UI页面计划于2025.03.23正式上线.这一次,我们精心打磨每一个细节,只为给您带来前所未有的丝滑体验,让每一次浏览都成为 ...
- 掌握Tortoise-ORM高级异步查询技巧
title: 掌握Tortoise-ORM高级异步查询技巧 date: 2025/04/22 12:05:33 updated: 2025/04/22 12:05:33 author: cmdrago ...
- jwt的个人理解
概念: jwt全名json web token,是一种web登录验证和授权技术 官网debug:#debug 应用场景: 授权这是使用JWT最常见的场景.一旦用户登录,每个后续请求将包括JWT,允许用 ...
- c#运算符重载(operator)
适用范围:C# 7.0及以上版本 C#学习-运算符重载(operator) - 百度文库 (baidu.com) 官网文档:Operator overloading - C# reference | ...
- C#基础——超级方便的ExpandoObject类别
这东西是.NET Framework 4.5 的新东西..发现这个,大概就跟发现新大陆一样的兴奋,让我再次赞叹Anders Hejlsberg 之神.. 这边有MSDN : http://msdn.m ...
- 【笔记】reko 0.10.2 反编译工具安装和使用记录|(2) 翻译 user‘s guide
Reko user's guide Reko是一个二进制可执行文件的反编译器.它接受输入的一个或多个二进制可执行文件,然后反编译成高级语言.它可以在GUI shell中被交互地使用,作为一个命令行项目 ...