大规模升级来临,谈谈Oracle 12cR2使用经验数据库

来源:互联网 / 作者:SKY / 2019-04-15 20:13 / 点击:
随着2019年2月13日,Oracle 19c (Oracle 12.2.0.3) for Exadata 版本发布,Oracle 12cR2体系的数据库版本终于迎来了长期支持版本(Oracle 12c的最后一个大版本),

大规模升级来临,谈谈Oracle 12cR2使用经验

大规模升级来临,咱们来谈谈Oracle 12cR2使用经验。

一、升级到12cR2的必要性

随着2019年2月13日,Oracle 19c (Oracle 12.2.0.3) for Exadata 版本发布,Oracle 12cR2体系的数据库版本终于迎来了长期支持版本(Oracle 12c的最后一个大版本),也就是说数据库版本还在Oracle 10g/11g的系统是时候考虑升级了。

特别是在Oracle 11.2.0.4以前的版本,用了db link的系统,务必要升级。

大规模升级来临,谈谈Oracle 12cR2使用经验

其实,根据Oracle数据库生命周期和版本演进路线,到2018年12月31日,Oracle 11.2已经结束了免费的扩展服务期(Fee Waived ES),一些新遇到的bug补丁用普通的SR账号将没有权限下载。

同时考虑到SCN天花板速率算法变化的问题,12c升级就变得更加必要了(当然,应用没有变化,或者没有使用dblink的可以不用考虑)。

Oracle每个版本的bug都很多,不过并非是Oracle数据库软件不行,而是因为Oracle是OLTP领域的绝对王者,提供了太多方便的功能,bug就多了。所以每次升级前,我们都会去撸一遍fix list,看看有没有新的bug被其他人发现并解决了。

到目前为止,Oracle 12.2系列的fix patch数量是2078个:

大规模升级来临,谈谈Oracle 12cR2使用经验

当然,这补丁数量还是远远低于Oracle11.2系列的27782个:

大规模升级来临,谈谈Oracle 12cR2使用经验

也远低于Oracle 10.2系列版本的26281个(这些补丁均不包含集群补丁):

大规模升级来临,谈谈Oracle 12cR2使用经验

这个结果有些出乎意料,12cR2上的patch数量比前2个版本少了一个数量级。一个可能性是12cR2的bug少了很多,另一个可能性是12cR2还没有迎来大规模升级,而今年就是升级到12cR2的最佳时机。

二、Oracle 12c体系的一些新特性

Oracle 12c相比Oracle 11g,有3个特性被广为期待:

多租户:12cR1最多允许252个租户,12cR2-19c最多允许4098个租户,由max_pdbs参数控制

In-Memory Option

Sharding

从两年多的案例来看:

Sharding功能几乎没有被使用

主要原因是:在12.2,一个SDB中只支持一个Table Family,一个正常业务数据库都会需要有多个Table Family;而在Oracle 19c里,增加了Multiple Table Families特性,或许可以好好用一下

In-Memory Option没有大规模用起来

原因是一方面是使用场景,另一方面是维护成本,多租户特性成了这个版本的扛鼎之作。

多租户特性(Multitenant)是12c体系最重要的特性,在12.1.0.1版本引入。开创性地在一个容器数据库(cdb)中可以包含很多个可插拔数据库(pdb),每个pdb之间可以有自己独立的参数和资源占用限制,所以该特性成为了12c版本中最受欢迎的特性。

很多企业使用多租户特性整合那些零碎且单独占用一个数据库的小应用,大大减少了机器的数量,降低了数据库许可费用,而且pdb迁移起来更加灵活。

pdb使用过程中有几个bug,影响还是蛮大的。其中一个是pdb在Data Guard的备端运行一段时间后会”消失”:

Bug 25576813 - V$PDB and SHOW PDBS may not display some PDBs in Standby Database OR ORA-65011 on PDB Open OR PDB Datafile on Standby with wrong GUID ( Doc ID 25576813.8 )  

这个bug从17年开始有one-off patch,但是一直没有彻底修复。彻底修复只能升级到Oracle 18c,或者今年将推出来的19c。

大规模升级来临,谈谈Oracle 12cR2使用经验

我此前一直非常好奇,为什么一个bug的补丁不能在下一次PSU的时候,将这个one-off patch一起打包进去呢?

直到2018年一个叫oraguy的用户在Hacker News爆出了如下信息:

大规模升级来临,谈谈Oracle 12cR2使用经验

Oracle 12.2这个版本,有将近2500万行C代码!(相比较而言,最受欢迎的NoSQL数据库Redis最新版本5.0.4也不过2万多行代码,真是短小精干。)

oraguy是这么描述一个Oracle数据库程序员的工作流程的:

拿到一个新任务:解决一个新bug。

花两周时间了解20个不同的flag( 标记 ),这些标记用一种很奇怪的方式制造了这个bug。

尝试添加flag,写几行代码,同时要小心不会制造出更多bug。

将更改提交到包含大约100-200台服务器的测试服务器集群,这些服务器将编译代码,构建新的Oracle数据库软件,并以分布式方式运行数百万个测试。

回家。第二天来上班,继续处理别的bug 。测试可能需要20-30个小时才能完成。

阅读延展

1
3