oracle數(shù)據(jù)庫如何打補丁
導讀:oracle數(shù)據(jù)庫的補丁是給軟件打補丁相當于給人打預防針,對系統(tǒng)的穩(wěn)定運行至關重要。本文詳細、系統(tǒng)地介紹了Oracle數(shù)據(jù)庫補丁的分類、安裝、管理等問題。
廠商提供給用戶的軟件補丁的形式多為編譯后的庫函數(shù),所以安裝軟件補丁實際上就是把這些庫函數(shù)拷貝到相應目錄,并在需要時進行聯(lián)接操作。軟件公司一般在一段時間后會把針對某一版本的所有補丁進行整理:合并融合,解決沖突,進行整體測試,并使文件拷貝和聯(lián)接操作自動執(zhí)行,得到一個軟件補丁“包 ”。不同的公司使用不同的名稱,現(xiàn)在一般計算機用戶都熟悉的Windows Service Pack就是這樣的補丁包。Oracle公司給出的補丁包的名稱是Patch Set,安裝Patch Set后的版本稱Patch Set Release(PSR)。
Oracle公司對處于標準技術支持的產(chǎn)品不定期地提供PSR,例如在完成本文時,版本10.2的最新PSR是10.2.0.2;版本10.1的最新PSR是10.1.0.5;版本9.2的最新(也極可能是最終)PSR是9.2.0.8.
在安裝最新PSR后新發(fā)現(xiàn)的Bug,其相應補丁當然會收錄到下一個PSR中。PSR是累積型的,即下一個PSR中會包括當前PSR中所有補丁和新發(fā)現(xiàn)Bug的補丁。同時存在幾個PSR時,只需安裝最新版本一次就可以了。但是由于PSR的發(fā)行有一定間隔,如果這些Bug對用戶有比較大的影響,那么Oracle公司也會向用戶公開和提供這些補丁,這些補丁被稱為個別補?。↖nterim Patch,one-off patch 或 Patch Set Exception)。而對于最終補丁發(fā)行版而言,由于不再有下一個PSR,所以當發(fā)現(xiàn)影響系統(tǒng)的新Bug時,個別補丁成為惟一選擇。
此外,Oracle公司還定期發(fā)布安全補丁,稱之為CPU(Critical Patch Updates)。安全補丁用來修復軟件的易受攻擊性(vulnerability)或通常說的安全漏洞。這類問題本來不屬于軟件錯誤,在正常使用中不會出現(xiàn)任何問題。但是別有用心的人可以通過運行非常精巧設計的代碼,繞過數(shù)據(jù)庫系統(tǒng)的安全管理機制,達到非授權存取的目的。
另外還存在一類補丁:診斷用補?。╠iagnostic patch)。顧名思義,這類補丁不是用來解決問題的,而是用來尋找問題的原因的。這類補丁只在Oracle技術支持部門要求安裝時,才需要安裝。在得到需要的診斷信息后,應立即卸載這一補丁。
利弊及時機選擇
負責管理支撐大型應用系統(tǒng)的數(shù)據(jù)庫的DBA會容易理解安裝軟件補丁的代價。安裝PSR需要停止數(shù)據(jù)庫服務,關閉數(shù)據(jù)庫,對于許多應用系統(tǒng)安排這樣的停機時間本身就是一件比較困難的事情。事實上,更為嚴重的是由于安裝PSR可能“引入”新的Bug,反而影響應用系統(tǒng)的正常運行。軟件補丁本來是修正Bug,怎么會帶來新的Bug?雖然有些讓人匪夷所思,但很不幸這是現(xiàn)實存在的。
對于每一個PSR,其中都包括了少則幾百多則上千個嚴重Bug的修正。即便是如此,在PSR發(fā)布后,很快就又會在安裝PSR后的數(shù)據(jù)庫中發(fā)現(xiàn)一些新問題。其中一部分Bug是以前就一直存在的只是以前沒有發(fā)現(xiàn),而現(xiàn)在偶爾被發(fā)現(xiàn),或者是由于PSR修正了某一錯誤從而將其“激活”或容易發(fā)現(xiàn)。但是確實有一些Bug是由這一PSR造成的,Oracle技術支持部門稱其為倒退(Regression)。對于每一PSR,在metalink中有兩個重要的與之有關的文檔,一個是“List of fixes added in XXXX”,是這一PSR修復的Bug的清單,是一本“功德簿”;另一個是“Known issues and alerts affecting XXXX”,是安裝PSR后發(fā)現(xiàn)的問題,可以稱其為“悔過簿”。由于大型軟件的復雜性,Bug幾乎是不可避免的。重要的是能夠及時提供信息,DBA可以結合自己系統(tǒng)的情況做出正確的判斷。讀者不必因為知道還存在著Bug,就對Oracle數(shù)據(jù)庫產(chǎn)品失去信心。PSR修復的上千個Bug中絕大多數(shù)是在一些很少見的環(huán)境中,或者是若干個組件的復雜組合使用的情形中發(fā)生的。
如果系統(tǒng)在運行中出現(xiàn)過某種問題,由Oracle技術支持部門或第三方的專家確認原因是PSR中的某一Bug,這樣就必須盡早安裝;如果系統(tǒng)一直運行正常,并且在PSR已發(fā)現(xiàn)的問題中涉及的組件或功能(如Logical Standby, JVM,RAC等)在系統(tǒng)中并不使用,此時可以選擇安裝也可以選擇不安裝。
另一個需要考慮的因素是安裝補丁的時機。上述這些考慮的一個重要前提是系統(tǒng)已經(jīng)投入運行,擔心“倒退”的Bug影響系統(tǒng)。如果系統(tǒng)還處在開發(fā)和測試階段,不需要有任何猶豫,安裝最新的PSR,并在此基礎上測試應用系統(tǒng)是否工作正常。如果發(fā)現(xiàn)異常,要及時請Oracle技術支持部門確認是否新Bug,如果是請其提供個別補丁。目的就是在一個盡可能完善穩(wěn)定的數(shù)據(jù)庫平臺上測試應用系統(tǒng)。我們可以把這種安裝補丁的策略概括為“補丁補新不補舊”。
以上都是針對PSR的安裝,對于個別補丁,由于補丁修復的Bug單一,容易判斷是否需要安裝。需要注意的是,如果在當前PSR之上安裝了若干個個別補丁,那么在下一個PSR發(fā)布后,在安裝下一個PSR之前,需要卸載所有個別補丁。為便于管理,現(xiàn)在Oracle技術支持部門要求必須使用工具opatch安裝管理個別工具,而盡量避免手動拷貝文件等操作。
最后是安全補丁安裝的判斷。雖然安全漏洞這個詞看上去讓人覺得非常嚴重,但是還要冷靜綜合分析這些漏洞在系統(tǒng)中的危害程度。事實上,不安裝安全補丁的危險性可能遠遠小于始終不渝地使用scott/tiger這樣人人都知道的用戶名和口令的“標準缺省”做法。
安裝PSR
使用oui工具安裝PSR時只需要用鼠標做幾個選擇就可以進入自動執(zhí)行的階段,操作過程本身非常簡單。但是如果要求必須一次安裝成功;要求必須在凌晨2點到4點這個有限的停機時間段完成操作;要求安裝過程不出差錯,以后出現(xiàn)問題時能夠完全排除此次操作失誤的可能性,那么就需要在啟動oui之前做一些準備工作。
1. 收集信息
有關PSR的信息中,一個最重要的文檔就是軟件補丁說明,這個文件相當于技術手冊中的安裝指南和發(fā)行說明。文件本身包含在下載的軟件補丁文件之中,文件名是patchnote.htm或README.html.需要注意的一個問題是在軟件補丁文件之中找到的這一Patch Set Notes可能不是最新版,可以根據(jù)文件內(nèi)的提示信息在metalink中檢索最新版。
另外兩個重要文件就是前面已經(jīng)提及的“功德簿”和“悔過簿”,相對于“功德簿”更應該仔細閱讀“悔過簿”中的每一項內(nèi)容。另外,在Patch Set Notes的已知問題(Known Issues)一節(jié)內(nèi)列出了安裝PSR后出現(xiàn)的一些問題。
除去這三個主要文件外,還應在metalink中檢索,尋找是否還有其他涉及這一PSR的技術文章,尋找其他用戶在安裝這一PSR時或安裝后遇到問題時所發(fā)的救助的帖子,前車之鑒更應重視。
2. 做出判斷
在認真閱讀收集到的文章之后,根據(jù)自己系統(tǒng)的實際情況,做出是立即安裝PSR,或是等待下一PSR的決定。如果是暫緩安裝,則要記錄原因,以便以后跟蹤Bug的修復進程。
關于oracle數(shù)據(jù)庫進行補丁的內(nèi)容就為大家講解到這里,希望對大家操作oracle數(shù)據(jù)庫有所幫助。