萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> oracle數據庫如何打補丁

oracle數據庫如何打補丁

給軟件打補丁相當於給人打預防針,對系統的穩定運行至關重要。本文詳細、系統地介紹了Oracle數據庫補丁的分類、安裝、管理等問題。

廠商提供給用戶的軟件補丁的形式多為編譯後的庫函數,所以安裝軟件補丁實際上就是把這些庫函數拷貝到相應目錄,並在需要時進行聯接操作。軟件公司一般在一段時間後會把針對某一版本的所有補丁進行整理:合並融合,解決沖突,進行整體測試,並使文件拷貝和聯接操作自動執行,得到一個軟件補丁“包 ”。不同的公司使用不同的名稱,現在一般計算機用戶都熟悉的Windows Service Pack就是這樣的補丁包。Oracle公司給出的補丁包的名稱是Patch Set,安裝Patch Set後的版本稱Patch Set Release(PSR)。

Oracle公司對處於標准技術支持的產品不定期地提供PSR,例如在完成本文時,版本10.2的最新PSR是10.2.0.2;版本10.1的最新PSR是10.1.0.5;版本9.2的最新(也極可能是最終)PSR是9.2.0.8.

在安裝最新PSR後新發現的Bug,其相應補丁當然會收錄到下一個PSR中。PSR是累積型的,即下一個PSR中會包括當前PSR中所有補丁和新發現Bug的補丁。同時存在幾個PSR時,只需安裝最新版本一次就可以了。但是由於PSR的發行有一定間隔,如果這些Bug對用戶有比較大的影響,那麼Oracle公司也會向用戶公開和提供這些補丁,這些補丁被稱為個別補丁(Interim Patch,one-off patch 或 Patch Set Exception)。而對於最終補丁發行版而言,由於不再有下一個PSR,所以當發現影響系統的新Bug時,個別補丁成為惟一選擇。

此外,Oracle公司還定期發布安全補丁,稱之為CPU(Critical Patch Updates)。安全補丁用來修復軟件的易受攻擊性(vulnerability)或通常說的安全漏洞。這類問題本來不屬於軟件錯誤,在正常使用中不會出現任何問題。但是別有用心的人可以通過運行非常精巧設計的代碼,繞過數據庫系統的安全管理機制,達到非授權存取的目的。

另外還存在一類補丁:診斷用補丁(diagnostic patch)。顧名思義,這類補丁不是用來解決問題的,而是用來尋找問題的原因的。這類補丁只在Oracle技術支持部門要求安裝時,才需要安裝。在得到需要的診斷信息後,應立即卸載這一補丁。

利弊及時機選擇

負責管理支撐大型應用系統的數據庫的DBA會容易理解安裝軟件補丁的代價。安裝PSR需要停止數據庫服務,關閉數據庫,對於許多應用系統安排這樣的停機時間本身就是一件比較困難的事情。事實上,更為嚴重的是由於安裝PSR可能“引入”新的Bug,反而影響應用系統的正常運行。軟件補丁本來是修正Bug,怎麼會帶來新的Bug?雖然有些讓人匪夷所思,但很不幸這是現實存在的。

對於每一個PSR,其中都包括了少則幾百多則上千個嚴重Bug的修正。即便是如此,在PSR發布後,很快就又會在安裝PSR後的數據庫中發現一些新問題。其中一部分Bug是以前就一直存在的只是以前沒有發現,而現在偶爾被發現,或者是由於PSR修正了某一錯誤從而將其“激活”或容易發現。但是確實有一些Bug是由這一PSR造成的,Oracle技術支持部門稱其為倒退(Regression)。對於每一PSR,在metalink中有兩個重要的與之有關的文檔,一個是“List of fixes added in XXXX”,是這一PSR修復的Bug的清單,是一本“功德簿”;另一個是“Known issues and alerts affecting XXXX”,是安裝PSR後發現的問題,可以稱其為“悔過簿”。由於大型軟件的復雜性,Bug幾乎是不可避免的。重要的是能夠及時提供信息,DBA可以結合自己系統的情況做出正確的判斷。讀者不必因為知道還存在著Bug,就對Oracle數據庫產品失去信心。PSR修復的上千個Bug中絕大多數是在一些很少見的環境中,或者是若干個組件的復雜組合使用的情形中發生的。

如果系統在運行中出現過某種問題,由Oracle技術支持部門或第三方的專家確認原因是PSR中的某一Bug,這樣就必須盡早安裝;如果系統一直運行正常,並且在PSR已發現的問題中涉及的組件或功能(如Logical Standby, JVM,RAC等)在系統中並不使用,此時可以選擇安裝也可以選擇不安裝。

另一個需要考慮的因素是安裝補丁的時機。上述這些考慮的一個重要前提是系統已經投入運行,擔心“倒退”的Bug影響系統。如果系統還處在開發和測試階段,不需要有任何猶豫,安裝最新的PSR,並在此基礎上測試應用系統是否工作正常。如果發現異常,要及時請Oracle技術支持部門確認是否新Bug,如果是請其提供個別補丁。目的就是在一個盡可能完善穩定的數據庫平台上測試應用系統。我們可以把這種安裝補丁的策略概括為“補丁補新不補舊”。

以上都是針對PSR的安裝,對於個別補丁,由於補丁修復的Bug單一,容易判斷是否需要安裝。需要注意的是,如果在當前PSR之上安裝了若干個個別補丁,那麼在下一個PSR發布後,在安裝下一個PSR之前,需要卸載所有個別補丁。為便於管理,現在Oracle技術支持部門要求必須使用工具opatch安裝管理個別工具,而盡量避免手動拷貝文件等操作。

最後是安全補丁安裝的判斷。雖然安全漏洞這個詞看上去讓人覺得非常嚴重,但是還要冷靜綜合分析這些漏洞在系統中的危害程度。事實上,不安裝安全補丁的危險性可能遠遠小於始終不渝地使用scott/tiger這樣人人都知道的用戶名和口令的“標准缺省”做法。

安裝PSR

使用oui工具安裝PSR時只需要用鼠標做幾個選擇就可以進入自動執行的階段,操作過程本身非常簡單。但是如果要求必須一次安裝成功;要求必須在凌晨2點到4點這個有限的停機時間段完成操作;要求安裝過程不出差錯,以後出現問題時能夠完全排除此次操作失誤的可能性,那麼就需要在啟動oui之前做一些准備工作。

1. 收集信息

有關PSR的信息中,一個最重要的文檔就是軟件補丁說明,這個文件相當於技術手冊中的安裝指南和發行說明。文件本身包含在下載的軟件補丁文件之中,文件名是patchnote.htm或README.html.需要注意的一個問題是在軟件補丁文件之中找到的這一Patch Set Notes可能不是最新版,可以根據文件內的提示信息在metalink中檢索最新版。

另外兩個重要文件就是前面已經提及的“功德簿”和“悔過簿”,相對於“功德簿”更應該仔細閱讀“悔過簿”中的每一項內容。另外,在Patch Set Notes的已知問題(Known Issues)一節內列出了安裝PSR後出現的一些問題。

除去這三個主要文件外,還應在metalink中檢索,尋找是否還有其他涉及這一PSR的技術文章,尋找其他用戶在安裝這一PSR時或安裝後遇到問題時所發的救助的帖子,前車之鑒更應重視。

2. 做出判斷

在認真閱讀收集到的文章之後,根據自己系統的實際情況,做出是立即安裝PSR,或是等待下一PSR的決定。如果是暫緩安裝,則要記錄原因,以便以後跟蹤Bug的修復進程。

  • 共4頁:
  • 上一頁
  • 1
  • 2
  • 3
  • 4
  • 下一頁
copyright © 萬盛學電腦網 all rights reserved