转://Oracle数据库补丁分析实践
小弟我最近做了几次补丁分析,最开始分析补丁,感觉挺痛苦的,因为补丁数量多,且涉及的知识点非常非常的广,客户的要求又非常高。挺伤不起的。不过随着分析的深入,我慢慢的掌握了一些小方法。也在support网站上找到了一些相关性的文章。现在进步了很多。所以想写篇文章,帮助那些受此困扰的兄弟们。
早在几年前,我的一个客户朋友告诉我一件事情,他们升级数据库到最新版本,结果上线后发现一条SQL运行错误,返回的结果集和以前版本返回的结果集不一致,他们紧急开了SR,申请了新补丁开发,可是这个过程需要一定的时间。最终他们选择了数据库降级处理。这真是一个血的教训。在很多大型的企业,对这种升级之后,都会做一系列的功能测试,但是对于他们这种小企业,就是领导脑门一热,一拍板就升上去了。这就导致了这个血的教训出现。
我们需要换位思考下。对于我们的客户来说,在升级的时候,考虑最多的就是平滑过渡,追求的是稳定与安全。那么我们作为服务商就需要给客户提供安全感,所以补丁分析这事情也就纳入到了议程。
已经修复的问题
我们遇到一般比较严重的问题有以下几种,这样的问题会严重影响到数据库的使用,我们在一开始就需要关注这方面的补丁是否已经修复。当然我们需要考虑一点,比如ASM的某个功能有BUG影响到Instance Crash,但是我们不使用ASM技术,所以这些补丁我们是可以不关注的。这个要求我们需要熟悉我们数据库使用者使用到的功能。
- Instance Crash
- Hang
- Reboot
- Corruption
- leak memory
- SQL wrong Result
针对已经修复的问题,建议参考文档:11.2.0.4 Patch Set – List of Bug Fixes by Problem Type (文档 ID 1562142.1)。同时这个文档还会列出一些已修复的重大问题,如下面列表所示:
| 13326736* | Dictionary corruption / ORA-959 due to DROP TABLESPACE. This bug is alerted in Note:1390632.1 |
| 13605839* | ORA-600 [ktbsdp1] ORA-600 [kghfrempty:ds]. Corruption in Rollback with Clusterwide Global Transactions in RAC. This bug is alerted in Note:1527740.1 |
| 13384397+ | wrong results / OERI:[kkooqb: bsj not used] with star transformation |
| 13460353+ | Registration of 11.2 database fails against 12.1 CRS stack (required fix for 11g DB with 12c GI) |
| 13467683+ | Join of temp and permanent tables in RAC might cause corruption of permanent table. Regression by bug 10352368 |
| 13550185+ | Hang / SGA memory corruption / ORA-7445 [kglic0] when using multiple shared pool subpools |
| 13645917+ | PMON block recovery loop – instance hang |
| 13786142+ | Cannot drop/replace trigger in editioning environment |
| 14398428+ | Sporadic Wrong results from Exadata (duplicate rows) |
| 14668670+ | Wrong results when execution plan shows nested loop batching |
| 16299065+ | ORA-1206 in SOURCE database after RMAN duplicate |
| 14332688P* | Solaris / HP: ORA-29701 raised in ASM i/o path. This bug is alerted in Note:1561271.1 |
| 13443029P+ | AIX: Excess "work USLA heap" process memory use in 11.2 on AIX |
可以看到这些补丁都是很严重的损坏,包括我们前面说到的corruption、wrong result、Hang等问题。在这个版本已经得到了修复。当然这里列出来的只是大版本的修复的一些严重的补丁。不包含小版本(PSU)修复的严重补丁。
已知缺陷和补丁
已知缺陷和补丁这个可以通过文档11.2.0.4 Patch Set – Availability and Known Issues (文档 ID 1562139.1)查看到,这个里面会列出该版本上的重要缺陷。有些缺陷在最新的PSU已经修复了,也可能没修复的。如下所示:
This section lists alerts and important issues relevant to 11.2.0.4
| Bug/Doc | Fixed in PSU/Bundle | Description | Updated |
| 10194190P+ | Solaris: Process spin and/or ASM and DB crash if RAC instance up for > 248 days | 11/Feb/2014 |
|
| 17761775+ | 11.2.0.4.2 | ORA-600 [kclchkblkdma_3] ORA-600 [3020] or ORA-600 [kcbchg1_16] Join of temp and permanent table in RAC might lead to corruption | 14/Apr/2014 |
| 17752121+ | 11.2.0.4.2 | ORA-600 [kclchkblkdma_3] ORA-600 [3020] RAC diagnostic/fix to avoid a block being modified in Shared Mode and prevent corruption | 14/Apr/2014 |
文档1562139.1里面还会列出因为增强或者修复某个功能所造成的新版本一些行为上的变化,这也是我们需要注意的。
This section lists fixes / enhancements in 11.2.0.4 which may cause a notable change in behaviour.
| 13543207 | Allow Partial Filter push down on UNION ALL View – superseded |
| 13502700 | OS audit file naming algorithm can be slow |
最后文档还列出了一些严重缺陷或者是一般的问题,让我们去评估在11.2.0.3之上应用这些补丁的风险。
版本选择
这个问题也是让领导很头疼的,首先是大版本选择的问题。例如,是选择11.2.0.3还是选择11.2.0.4,这个我觉得首先得看你升级的时间,假设现在刚刚出11.2.0.4,还没有出任何的PSU,那么我建议你选择11.2.0.3,安装最新版的PSU。即使11.2.0.4包含了11.2.0.3 PSU 7的所有补丁,和2013年10月份的CPU补丁。第二点需要看你对新特性感不感兴趣,Oracle的每一个大版本都会有一些新特性。比如11.2.0.4的新特性有Tracle File Analyzer and Collector等等。11.2.0.3有ACFS anapshot。
大版本选择完了就要选择小版本。比如我们确定了数据库大版本为11.2.0.4后,那么小版本应该选择哪个呢?假设现在是4月份,刚刚出了11.2.0.4 PSU2,我们选择最新出的PSU 2,还是选择上一个版本PSU1呢?这需要我们做一个判断,我们需要去对比11.2.0.4.1和11.2.0.4.2的补丁,如果发现11.2.0.4.2这个版本所修复的功能我不需要,或者修复的关键bug不是很多。那么我建议是选择11.2.0.4.1+选装PSU2的关键补丁。如果11.2.0.4.2这个版本修复的bug众多,而且关键补丁也很多,那么建议直接打到11.2.0.4.2。对于小版本补丁的对比,我建议参考文档11.2.0.4 Patch Set Updates – List of Fixes in each PSU (文档 ID 1611785.1)。这篇文档的好处在于它把PSU1修复的问题和PSU2修复的问题都做了列出。我们可以从文档中看到PSU1只修复了17个补丁,而PSU2修复了多达66个补丁,而且PSU2上面有很多关键问题的修复,例如Buffer cache Management上的修复。解决了几个内存管理引起的ORA-600和ORA-7445错误,可以防止数据库宕机和坏块的出现。所以看完这个文档之后,可以把这些数据拿出来和领导及相关部门反馈,推荐安装PSU2,有理有据。
方法论
到了该结尾的时候了,现在精简一下我的方法。我们需要关注4篇文档。这4篇文档分别帮助我们发现该版本已经修复的问题,该版本还没有修复的问题,各个小版本(PSU)修复的问题清单,及新版本的新特性。通过这4篇文档我们能够给出一个大概的评估,在该版本上面数据库可能会有什么风险,能不能打补丁解决,如果不能,有什么规避措施。最终我们可以整理出一份补丁分析文档出来,交给我们的最终客户,让它去决定是否安装。
11.2.0.4 Patch Set – List of Bug Fixes by Problem Type (文档 ID 1562142.1)
11.2.0.4 Patch Set – Availability and Known Issues (文档 ID 1562139.1)
11.2.0.4 Patch Set Updates – List of Fixes in each PSU (文档 ID 1611785.1)
Oracle Database 11g Release 2 (11.2.0.4) New Features
转://Oracle数据库补丁分析实践的更多相关文章
- Oracle 数据库优化-分析现有的sql
在做数据库sql优化时,首先要对现有的数据库sql进行优化,主要包括以下几种: 1.数据库正在执行的SQL是? 2.已经执行过得SQL是? 3.最耗时的的前几条SQL是? 4.最耗IO的SQL是? 5 ...
- 【绝密外泄】风哥Oracle数据库DBA高级工程师培训视频教程与内部资料v0.1
[绝密外泄]风哥Oracle数据库DBA高级工程师培训视频教程与内部资料v0.1 由于是[绝密外泄]资料,防止被查,需要的小伙伴赶紧下载附件中的课件文档.由于视频太大了,已放在百度网盘了,已经在附中说 ...
- oracle打补丁
oracle 数据库补丁安装(单实例) ------------24006111 注:务必先安装24006111再安装24315821,否则无法进行正常的补丁安装流程.1.关闭数据库监听和数据库实例 ...
- Oracle数据库XXE注入漏洞(CVE-2014-6577)分析
在这篇文中,我们将共同分析一下Oracle数据库的XXE注入漏洞(CVE-2014-6577),Oracle公司1月20日发布了针对该漏洞的相关补丁. 有关XXE的相关知识,可以查看安全脉搏站内的另一 ...
- Oracle数据库版本号定期检视与升级的必要性分析
目 录 ▇1.ORACLE数据库版本号知识 ▇2.看看自己的数据库还有没有支持服务 ▇3.看11.2.0.3版本号各PSU的公布时间与解决BUG数量列表 ▇4.看11.2.0.4版本号各PSU的公布时 ...
- Oracle从11.2.0.2开始,数据库补丁包是一个完整安装包(转)
从11.2.0.2开始,数据库补丁包是一个完整安装包.也就是说:比如要打11.2.0.2的补丁包,直接用11.2.0.2包来安装就可以了,不需要像10G一样先安装数据库软件再来打补丁包. 如果已经安装 ...
- undo丢失恢复异常恢复,运维DBA反映Oracle数据库无法启动报错ORA-01157 ORA-01110,分析原因为Oracle数据库坏块导致
本文转自 惜纷飞 大师. 模拟基表事务未提交数据库crash,undo丢失恢复异常恢复,运维DBA反映Oracle数据库无法启动报错ORA-01157 ORA-01110,分析原因为Oracle数据库 ...
- 对Oracle 、SQL Server、MySQL、PostgreSQL数据库优缺点分析
对Oracle .SQL Server.MySQL.PostgreSQL数据库优缺点分析 Oracle Database Oracle Database,又名Oracle RDBMS,或简称Oracl ...
- oracle数据库归档日志量陡增分析
============= oracle数据库archivelog暴增分析 ==================== 前言 归档量突然增长到981G/天,导致归档目录使用率告警 归档日志量异常暴增会导 ...
随机推荐
- Log4j的扩展RollingFileAppender、DailyRollingFileAppender
最常用的Appender--RollingFileAppender RollingFileAppender的一个Log4j配置样例: log4j.appender.R=org.apache.log4j ...
- 提高 JavaScript 开发效率的高级 VSCode 扩展!
原文:提高 JavaScript 开发效率的高级 VSCode 扩展! 作者:前端小智 Fundebug经授权转载,版权归原作者所有. Quokka.js Quokka.js 是一个用于 JavaSc ...
- elementUI vue upload完整示例
elementUI 和vue 还有axios +java的完整示例, 代码敲了很久, 累死了, 以后用就直接复制了 ,很值吧!!! 1.html <!DOCTYPE html> <h ...
- [转]Javascript实现图片的预加载详解
下面的函数实现了一个我们想要的最基本的图片预加载效果 function preloadimages(arr){ var newimages=[] var arr=(typeof arr!=" ...
- 华为P20无线投屏到电脑 绝地求生投射电脑
如今出门在外,必不可少的就是手机,如果没有了手机,每个人都会感觉没有安全感,感觉和世界失去了联系,我们每天每个人都在使用手机,但是作为华为手机用户的你,了解华为P20无线投屏到电脑是怎么操作的吗? 使 ...
- Unity3D手机斗地主游戏开发实战(02)_叫地主功能实现
大体思路 前面我们实现了点击开始游戏按钮,系统依次给玩家发牌的逻辑和动画,并展示当前的手牌.这期我们继续实现接下来的功能--叫地主. 1.首先这两天,学习了DOTween,这是一个强大的Unity动画 ...
- 33.Odoo产品分析 (四) – 工具板块(4) – 问题追踪及群发邮件营销(1)
查看Odoo产品分析系列--目录 问题追踪 该应用程序允许您管理项目中可能遇到的问题,如系统中的bug.客户投诉或物料故障. 该模块安装后没有菜单显示,而是作为后台管理,接收一些问题报告. 群发邮件 ...
- 「Android」SurfaceFlinger分析
本篇针对surfaceFlinger模块进行分析,目录如下: 1.SurfaceFlinger功能 1.1.BufferQueue原理(native/libs/gui模块) 1.2 layer显示 ...
- 软件工程:java实现wc项目基本功能
项目相关要求 项目地址:https://github.com/xiawork/wcwork 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功能,并能够快速地处理多个 ...
- 使用 pjsip 代码独立开发
1.在不改动pjsip代码的情况下,和pjsip工程目录并行建立win32控制台程序工程P2PTraversal 目录结构如下: . ├── pjproject-2.6 └── pjsipdemo 2 ...