小弟我最近做了幾次補(bǔ)丁分析,最開始分析補(bǔ)丁,感覺挺痛苦的,因?yàn)檠a(bǔ)丁數(shù)量多,且涉及的知識點(diǎn)非常非常的廣,客戶的要求又非常高。挺傷不起的。不過隨著分析的深入,我慢慢的掌握了一些小方法。也在support網(wǎng)站上找到了一些相關(guān)性的文章。現(xiàn)在進(jìn)步了很多。所
小弟我最近做了幾次補(bǔ)丁分析,最開始分析補(bǔ)丁,感覺挺痛苦的,因?yàn)檠a(bǔ)丁數(shù)量多,且涉及的知識點(diǎn)非常非常的廣,客戶的要求又非常高。挺傷不起的。不過隨著分析的深入,我慢慢的掌握了一些小方法。也在support網(wǎng)站上找到了一些相關(guān)性的文章。現(xiàn)在進(jìn)步了很多。所以想寫篇文章,幫助那些受此困擾的兄弟們。
早在幾年前,我的一個客戶朋友告訴我一件事情,他們升級數(shù)據(jù)庫到最新版本,結(jié)果上線后發(fā)現(xiàn)一條SQL運(yùn)行錯誤,返回的結(jié)果集和以前版本返回的結(jié)果集不一致,他們緊急開了SR,申請了新補(bǔ)丁開發(fā),可是這個過程需要一定的時間。最終他們選擇了數(shù)據(jù)庫降級處理。這真是一個血的教訓(xùn)。在很多大型的企業(yè),對這種升級之后,都會做一系列的功能測試,但是對于他們這種小企業(yè),就是領(lǐng)導(dǎo)腦門一熱,一拍板就升上去了。這就導(dǎo)致了這個血的教訓(xùn)出現(xiàn)。
我們需要換位思考下。對于我們的客戶來說,在升級的時候,考慮最多的就是平滑過渡,追求的是穩(wěn)定與安全。那么我們作為服務(wù)商就需要給客戶提供安全感,所以補(bǔ)丁分析這事情也就納入到了議程。
我們遇到一般比較嚴(yán)重的問題有以下幾種,這樣的問題會嚴(yán)重影響到數(shù)據(jù)庫的使用,我們在一開始就需要關(guān)注這方面的補(bǔ)丁是否已經(jīng)修復(fù)。當(dāng)然我們需要考慮一點(diǎn),比如ASM的某個功能有BUG影響到Instance Crash,但是我們不使用ASM技術(shù),所以這些補(bǔ)丁我們是可以不關(guān)注的。這個要求我們需要熟悉我們數(shù)據(jù)庫使用者使用到的功能。
針對已經(jīng)修復(fù)的問題,建議參考文檔:11.2.0.4 Patch Set – List of Bug Fixes by Problem Type (文檔 ID 1562142.1)。同時這個文檔還會列出一些已修復(fù)的重大問題,如下面列表所示:
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 |
可以看到這些補(bǔ)丁都是很嚴(yán)重的損壞,包括我們前面說到的corruption、wrong result、Hang等問題。在這個版本已經(jīng)得到了修復(fù)。當(dāng)然這里列出來的只是大版本的修復(fù)的一些嚴(yán)重的補(bǔ)丁。不包含小版本(PSU)修復(fù)的嚴(yán)重補(bǔ)丁。
已知缺陷和補(bǔ)丁這個可以通過文檔11.2.0.4 Patch Set – Availability and Known Issues (文檔 ID 1562139.1)查看到,這個里面會列出該版本上的重要缺陷。有些缺陷在最新的PSU已經(jīng)修復(fù)了,也可能沒修復(fù)的。如下所示:
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里面還會列出因?yàn)樵鰪?qiáng)或者修復(fù)某個功能所造成的新版本一些行為上的變化,這也是我們需要注意的。
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 |
最后文檔還列出了一些嚴(yán)重缺陷或者是一般的問題,讓我們?nèi)ピu估在11.2.0.3之上應(yīng)用這些補(bǔ)丁的風(fēng)險。
這個問題也是讓領(lǐng)導(dǎo)很頭疼的,首先是大版本選擇的問題。例如,是選擇11.2.0.3還是選擇11.2.0.4,這個我覺得首先得看你升級的時間,假設(shè)現(xiàn)在剛剛出11.2.0.4,還沒有出任何的PSU,那么我建議你選擇11.2.0.3,安裝最新版的PSU。即使11.2.0.4包含了11.2.0.3 PSU 7的所有補(bǔ)丁,和2013年10月份的CPU補(bǔ)丁。第二點(diǎn)需要看你對新特性感不感興趣,Oracle的每一個大版本都會有一些新特性。比如11.2.0.4的新特性有Tracle File Analyzer and Collector等等。11.2.0.3有ACFS anapshot。
大版本選擇完了就要選擇小版本。比如我們確定了數(shù)據(jù)庫大版本為11.2.0.4后,那么小版本應(yīng)該選擇哪個呢?假設(shè)現(xiàn)在是4月份,剛剛出了11.2.0.4 PSU2,我們選擇最新出的PSU 2,還是選擇上一個版本PSU1呢?這需要我們做一個判斷,我們需要去對比11.2.0.4.1和11.2.0.4.2的補(bǔ)丁,如果發(fā)現(xiàn)11.2.0.4.2這個版本所修復(fù)的功能我不需要,或者修復(fù)的關(guān)鍵bug不是很多。那么我建議是選擇11.2.0.4.1+選裝PSU2的關(guān)鍵補(bǔ)丁。如果11.2.0.4.2這個版本修復(fù)的bug眾多,而且關(guān)鍵補(bǔ)丁也很多,那么建議直接打到11.2.0.4.2。對于小版本補(bǔ)丁的對比,我建議參考文檔11.2.0.4 Patch Set Updates – List of Fixes in each PSU (文檔 ID 1611785.1)。這篇文檔的好處在于它把PSU1修復(fù)的問題和PSU2修復(fù)的問題都做了列出。我們可以從文檔中看到PSU1只修復(fù)了17個補(bǔ)丁,而PSU2修復(fù)了多達(dá)66個補(bǔ)丁,而且PSU2上面有很多關(guān)鍵問題的修復(fù),例如Buffer cache Management上的修復(fù)。解決了幾個內(nèi)存管理引起的ORA-600和ORA-7445錯誤,可以防止數(shù)據(jù)庫宕機(jī)和壞塊的出現(xiàn)。所以看完這個文檔之后,可以把這些數(shù)據(jù)拿出來和領(lǐng)導(dǎo)及相關(guān)部門反饋,推薦安裝PSU2,有理有據(jù)。
到了該結(jié)尾的時候了,現(xiàn)在精簡一下我的方法。我們需要關(guān)注4篇文檔。這4篇文檔分別幫助我們發(fā)現(xiàn)該版本已經(jīng)修復(fù)的問題,該版本還沒有修復(fù)的問題,各個小版本(PSU)修復(fù)的問題清單,及新版本的新特性。通過這4篇文檔我們能夠給出一個大概的評估,在該版本上面數(shù)據(jù)庫可能會有什么風(fēng)險,能不能打補(bǔ)丁解決,如果不能,有什么規(guī)避措施。最終我們可以整理出一份補(bǔ)丁分析文檔出來,交給我們的最終客戶,讓它去決定是否安裝。
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數(shù)據(jù)庫補(bǔ)丁分析實(shí)踐, 感謝原作者分享。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com