这应该是2023年写的最后一篇关于Oracle的文章吧,其实手上的Oracle数据库最近都挺平稳的,没啥素材,在JiekeXu徐小强老师的群里征集了一下内容,其中对11g如何升级到19c相关内容感兴趣的比较多,但是细细想了实际的生产需求其实核心需求应该是如何把原来运行在Oracle 11g数据库中的数据想方设法弄到Oracle 19c的数据库中去。结合官方文档和实战经验,使用Oracle原生的方式并排除一些我认为比较复杂、操作性较低的方式,然后也是我第一次画在博文中画思维导图:
其实原地升级这种方式用的不多,因为大多数时候要用19c也会同步升级硬件。同时如果涉及需要升级操作系统,特别是在使用GI(ASM,大多数为RAC环境)的情况下升级操作系统是一件比较麻烦的事情,建议的方式是剔除节点,升级or重装操作系统,完成操作系统基础配置后再把节点加回来(也可以查看**Will an Operating System Upgrade Affect Oracle Clusterware? (Doc ID 743649.1)**用其中的方式来处理);所有节点完成操作系统滚动升级后才能升级GI,随后才是升级DB。
除去标准的DBUA方式以外,Oracle还提供了一个非常便利的DB升级工具:AutoUpgrade(AutoUpgrade Tool (Doc ID 2485457.1)):
++Benefits++
AutoUpgrade enables customers to upgrade one or many Oracle databases at the command-line with a single command and a single configuration file. AutoUpgrade will run the preupgrade tasks, perform automated fixups where needed, execute the database upgrade, and finish by taking care of post-upgrade tasks. It includes automatic retry and fallback, the possibility to schedule upgrades for future points in time, and the ability to set, change or remove initialization parameters as desired. It saves time and money by upgrading hundreds of databases with one command and replacing bespoke high maintenance upgrade solutions.
从文档介绍可以看出,AutoUpgrade是一个非常简化、自动、快速的数据库升级工具,仅需一条命令和一个配置文件即可。具体操作可以查看官方文档Using AutoUpgrade for Oracle Database Upgrades部分,这里就不做过多讲解(后续看情况单独写一篇)。
异机迁移是我生产中用的比较多的方式,确实大多数时候,是因为老库的硬件不行了或者还有其他用途。
我这里所说的逻辑迁移不仅限于Oracle提供的exp/imp工具,也包含基于dblink、业务系统本身或一些工具使用SQL的方式将数据从11g弄到19c去。
对于不是很大的数据库,我这里使用expdp/impdp的方式来迁移数据是比较多的,即便是字符集不相同也可以通过提前修改表结构来处理。
我这里使用过一次XTTS(增强表空间传输)来将HP小机上的11g数据迁移到Exadata上19c的PDB中,其他就不赘述了:
记一次HPUX到Exadata的xtts数据迁移——准备篇
记一次HPUX到Exadata的xtts数据迁移——xtts篇
记一次HPUX到Exadata的xtts数据迁移——实战篇
Oracle Golden Gate也是一种比较常见数据迁移方式,其好处就是数据可以跨平台跨版本实时同步,可以通过极短的时间实现切换,大幅减少停机时间。当然使用OGG也得考虑其配置问题以及开启数据库附加日志带来的性能问题(特别是老硬件)。
其实使用DG的方式也是比较合理的,特别是在RAC环境,可以在目标端预先安装符合要求的操作系统及GI,使用同版本DB来同步数据,需要升级时中断DG,再使用AutoUpgrade来升级目标端的DB。如果升级过程出现问题目标库不可用,源库也不会受到影响。
老规矩,知道写了些啥