如果是在几年前讨论Oracle升级的问题,其实会存在很多的异议,如今再来看待这个问题,我觉得情况有了变化,我来尝试重新解读一下这个问题。
1
Oracle数据库版本背景
首先来说下Oracle的版本背景。
根据Oracle的产品线规划,18c开始的新版本将是年度版,版本将是发布年度的最后两位数字。原本计划作为12.2.0.2的版本就是现在发布中的18c,12.2.0.3将以19c的版本形式发布。预期Oracle数据库19将是12.2的最后一个版本(“长期支持”版本)。
所以经历了8,8i,9i,10g,11g,12c之后,接下来的就是18c,19c,现在是2020年了,截止目前的最新版本还是19c,20c得等些时日了。
从版本V2发展至今,我细数了如下的一些版本情况。
如果要从整体看出版本的差异情况,可以看下面的柱状图。
这个图没有体现版本之间的时间差,仅仅从版本的变化情况来看。
仅仅从这个图上就能够看出一种鲜明的差异,那就是类似SQL Server这样的年度版本,能够对于版本的差异没有那么敏感。
2
Oracle数据库版本规划
我们能够看到有很多的版本,如果要选择升级数据库,到底是选择12c还是18c,还是19c呢,我们来看一个版本路线图,可以参考在MOS 官方文章:Release Schedule of Current Database Releases (文档 ID 742060.1)
这个图是理解整个内容的核心,可以看到19c的定位是长期版本,而且扩展服务的截止时间是目前最长的。
相比而言18c的生命周期就会短许多,有点像昙花一些的过渡版本,从性价比来看似乎还不如早一些的12.2.0.1这个版本,如何和当时的时间背景联系起来,应该是一批早期用户从11g升级,在没有12.2版本发布时,选择了升级到12.1.0.2,所以看到的12.2.0.1和18c的发布时间也很接近。
值得一提的是,在2020年4月15日,Oracle修改了12.2.0.1的扩展服务截止时间,从2020年12月1日扩展到了2020年3月31日。(Added Limited Error Correction for 12.2.0.1 from Dec 1, 2020 until March 31, 2022)
3
Oracle数据库服务支持
对于扩展服务,我们可能有些陌生,大体分来,支持的强度分为三个级别:Premier Support(最高优先级的支持),Extended Support(中等优先级的支持),Sustaining Support(最低优先级的支持)。
如果和上面的图联系起来,其实就是对于扩展服务打了一些补丁,可以举个例子来说明,比如主流版本是11g,那么会有一个相对稳定产品生命周期,比如是5年,那么在这5年内是官方大力支持的阶段,会修复一系列的版本bug,推出一些改进和新功能,临近产品生命周期,就需要考虑升级,如果不升级服务支持力度上就会打一定的折扣,比如说扩展服务周期是2年,那么2年后正常来说是无法下载一些补丁更新的,如果过了扩展服务周期还没有升级,如果是大客户,花钱继续支持也可以,如果又跨越了多个时段,但是原来的版本支持还是需要,就需要做定制化的支持了。
对于数据库版本来说,10g是个坎,升级到11g是个坎,升级到12c的选择空间从上图来看就比较有限了,目前可选的就是12.2.0.1,18c和19c了。我们来看下这3个版本,我来划一下重点。
从上面的图来看,为了求稳,我们不是选择最接近的低版本,而是要首选尽可能稳定的大版本,避免后续的大版本改动。如果说得更清楚些,那就是选择19c.
版本的情况基本说完了,我们来看下升级的正确姿势,因为环境的差异,肯定初始版本都不大相同。
4
Oracle数据库版本升级矩阵
对于11g的数据库来说,如果是11g的最新版本,则可以直接升级到19c,这是一个极大的利好消息,避免了过渡升级带来的潜在隐患和服务不可用过长。
对于12c以上的版本(12.1.0.2以上),则可以直接升级到19c。
升级的过程可以考虑纯手工方式升级数据字典,也可以考虑使用DBUA来做。
Oracle 19c - Complete Checklist for Upgrading to Oracle Database 19c (19.x) using DBUA (Doc ID 2545064.1)
如果使用DBUA来升级,直接升级可以参考如下的表格:
对于有些版本来说,则不可以直接升级,就需要过渡,比如你的版本是11.2.0.2,则需要先升级到11.2.0.4之后才可以升级到19c.
5
尝鲜新版本
此外,如果我们想先尝尝鲜,做下测试,
Oracle提供了另外两种方式来体验新版本,一种是LiveSQL,链接是https://livesql.oracle.com,同时也可以通过http://dosc.oracle.com进行了解。