EXPDPUSERID='SYS/cuc2009@cucassysdba'schemas=sybjdirectory=DATA_PUMP_DIRdumpfile=dag.dmplogfile=dag.logversion=11.0.2.1IMPDPUSERID='SYS/sys@daggisassysdba'schemas=sybjdirectory=DATA_PUMP_DIRdumpfile=dag.dmplogfile=dag.logversion=11.0.2.1可以是試試我導(dǎo)出的是11g往10g導(dǎo)入成功了但是表空間和用戶名必須一致
我們提供的服務(wù)有:網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、文峰ssl等。為上千多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的文峰網(wǎng)站制作公司
1、停止原數(shù)據(jù)庫服務(wù)
2、停止原數(shù)據(jù)庫監(jiān)聽
3、停止 原數(shù)據(jù)庫其他服務(wù)(如企業(yè)管理器,如果是windows的機(jī)器,則關(guān)閉服務(wù)中所有與oracle有關(guān)的服務(wù))
4、11g的補(bǔ)丁可以雙擊直接安裝升級
1、下載
需要metalink的用戶名口令
10.2及之后的數(shù)據(jù)庫下載連接為:
http //updates oracle com/download/4898608.html
10.2之前的版本下載連接為:
http //updates oracle com/download/2617419.html
2、安裝可以參照metalink Note 189489.1
安裝其實(shí)很簡單,unix下做一下unzip,然后把opath加到你的$PATH即可
3、opatch作用
opatch是用于維護(hù)"個(gè)別"補(bǔ)丁的,有人稱其為interim path或是one-off patch
以解決TA ENQ AND US ENQ DEADLOCK DURING TRANSACTION RECOVERY IN RAC問題的interim patch 3777178為例,
安裝及rollback的命令如下:
install:
oracleunzip p3777178_9206_HP64.zip
oraclecd 3777178
oracleopatch apply
rollback:
oraclecd 3777178
oracleopatch rollback -id 3777178
查看:
如下命令可以看到已經(jīng)安裝了哪些interim patch
4、不斷的在opatch后面加-h可以看到這個(gè)命令更加詳細(xì)的選項(xiàng):
看一下lsinventory后面有哪些選項(xiàng):
[oracle@mysql2 ~]$ /u01/app/oracle/product/10.2.0/db_2/OPatch/opatch lsinventory -h
Invoking OPatch 10.2.0.3.0
Oracle interim Patch Installer version 10.2.0.3.0
Copyright (c) 2005, Oracle Corporation.? All rights reserved..
DESCRIPTION
List the inventory for a particular $ORACLE_HOME or display all
installations that can be found.
SYNTAX
opatch lsinventory [-all ] [-delay value ] [-detail ] [-all_nodes]
[-invPtrLoc Path to oraInst.loc ] [-jre LOC ]
[-oh ORACLE_HOME ] [-retry value ] [-patch] [-oh]
[-property_file path to property file]
OPTIONS
-all
Report the name and installation directory for each
$ORACLE_HOME found.
-delay
If -retry is specified, this option tells OPatch how
many seconds it should wait before attempting to lock
inventory again in case of a previous failure.
-detail(s)
Report installed products and other details. This
option cannot be used in conjunction with all option.
-invPtrLoc
Used to locate the oraInst.loc file. When the
installation used the invPtrLoc flag. This should be
the path to the oraInst.loc file
-jre
This option tells OPatch to use JRE (java) from the
specified location instead of the default location
under Oracle Home
-retry
This option tells OPatch how many times it should
retry in case of an inventory lock failure
-patch
Lists the patch IDs installed in the oracle home
-oh
The oracle home to work on. This takes precedence over
the environment variable ORACLE_HOME
-property_file
The user defined property file for OPatch to use. The
path to the property file should be absolute. This
property file takes precedence over the one that is
supplied with OPatch
-all_nodes
Reports the patches installed on the given Oracle Home
in all nodes of the RAC system. It also prints the oracle?
binary's size and checksum on all nodes. This option cannot?
be used in conjunction with -all, -detail, -patch. ??
PARAMETERS
This operation does not have any required parameters.
給軟件打補(bǔ)丁相當(dāng)于給人打預(yù)防針,對系統(tǒng)的穩(wěn)定運(yùn)行至關(guān)重要。本文詳細(xì)、系統(tǒng)地介紹了Oracle數(shù)據(jù)庫補(bǔ)丁的分類、安裝、管理等問題。
廠商提供給用戶的軟件補(bǔ)丁的形式多為編譯后的庫函數(shù),所以安裝軟件補(bǔ)丁實(shí)際上就是把這些庫函數(shù)拷貝到相應(yīng)目錄,并在需要時(shí)進(jìn)行聯(lián)接操作。軟件公司一般在一段時(shí)間后會(huì)把針對某一版本的所有補(bǔ)丁進(jìn)行整理:合并融合,解決沖突,進(jìn)行整體測試,并使文件拷貝和聯(lián)接操作自動(dòng)執(zhí)行,得到一個(gè)軟件補(bǔ)丁“包”。不同的公司使用不同的名稱,現(xiàn)在一般計(jì)算機(jī)用戶都熟悉的Windows Service Pack就是這樣的補(bǔ)丁包。Oracle公司給出的補(bǔ)丁包的名稱是Patch Set,安裝Patch Set后的版本稱Patch Set Release(PSR)。
Oracle公司對處于標(biāo)準(zhǔn)技術(shù)支持的產(chǎn)品不定期地提供PSR,例如在完成本文時(shí),版本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,其相應(yīng)補(bǔ)丁當(dāng)然會(huì)收錄到下一個(gè)PSR中。PSR是累積型的,即下一個(gè)PSR中會(huì)包括當(dāng)前PSR中所有補(bǔ)丁和新發(fā)現(xiàn)Bug的補(bǔ)丁。同時(shí)存在幾個(gè)PSR時(shí),只需安裝最新版本一次就可以了。但是由于PSR的發(fā)行有一定間隔,如果這些Bug對用戶有比較大的影響,那么 Oracle公司也會(huì)向用戶公開和提供這些補(bǔ)丁,這些補(bǔ)丁被稱為個(gè)別補(bǔ)?。↖nterim Patch,one-off patch 或 Patch Set Exception)。而對于最終補(bǔ)丁發(fā)行版而言,由于不再有下一個(gè)PSR,所以當(dāng)發(fā)現(xiàn)影響系統(tǒng)的新Bug時(shí),個(gè)別補(bǔ)丁成為惟一選擇。
此外,Oracle公司還定期發(fā)布安全補(bǔ)丁,稱之為CPU(Critical Patch Updates)。安全補(bǔ)丁用來修復(fù)軟件的易受攻擊性(vulnerability)或通常說的安全漏洞。這類問題本來不屬于軟件錯(cuò)誤,在正常使用中不會(huì)出現(xiàn)任何問題。但是別有用心的人可以通過運(yùn)行非常精巧設(shè)計(jì)的代碼,繞過數(shù)據(jù)庫系統(tǒng)的安全管理機(jī)制,達(dá)到非授權(quán)存取的目的。
另外還存在一類補(bǔ)丁:診斷用補(bǔ)?。╠iagnostic patch)。顧名思義,這類補(bǔ)丁不是用來解決問題的,而是用來尋找問題的原因的。這類補(bǔ)丁只在Oracle技術(shù)支持部門要求安裝時(shí),才需要安裝。在得到需要的診斷信息后,應(yīng)立即卸載這一補(bǔ)丁。
利弊及時(shí)機(jī)選擇
負(fù)責(zé)管理支撐大型應(yīng)用系統(tǒng)的數(shù)據(jù)庫的DBA會(huì)容易理解安裝軟件補(bǔ)丁的代價(jià)。安裝PSR需要停止數(shù)據(jù)庫服務(wù),關(guān)閉數(shù)據(jù)庫,對于許多應(yīng)用系統(tǒng)安排這樣的停機(jī)時(shí)間本身就是一件比較困難的事情。事實(shí)上,更為嚴(yán)重的是由于安裝PSR可能“引入”新的Bug,反而影響應(yīng)用系統(tǒng)的正常運(yùn)行。軟件補(bǔ)丁本來是修正 Bug,怎么會(huì)帶來新的Bug?雖然有些讓人匪夷所思,但很不幸這是現(xiàn)實(shí)存在的。
對于每一個(gè)PSR,其中都包括了少則幾百多則上千個(gè)嚴(yán)重Bug的修正。即便是如此,在PSR發(fā)布后,很快就又會(huì)在安裝PSR后的數(shù)據(jù)庫中發(fā)現(xiàn)一些新問題。其中一部分Bug是以前就一直存在的只是以前沒有發(fā)現(xiàn),而現(xiàn)在偶爾被發(fā)現(xiàn),或者是由于PSR修正了某一錯(cuò)誤從而將其“激活”或容易發(fā)現(xiàn)。但是確實(shí)有一些Bug是由這一PSR造成的,Oracle技術(shù)支持部門稱其為倒退(Regression)。對于每一PSR,在metalink中有兩個(gè)重要的與之有關(guān)的文檔,一個(gè)是“List of fixes added in XXXX”,是這一PSR修復(fù)的Bug的清單,是一本“修復(fù)列表”;另一個(gè)是“Known issues and alerts affecting XXXX”,是安裝PSR后發(fā)現(xiàn)的問題,可以稱其為“悔過列表”。由于大型軟件的復(fù)雜性,Bug幾乎是不可避免的。重要的是能夠及時(shí)提供信息,DBA可以結(jié)合自己系統(tǒng)的情況做出正確的判斷。讀者不必因?yàn)橹肋€存在著Bug,就對Oracle數(shù)據(jù)庫產(chǎn)品失去信心。PSR修復(fù)的上千個(gè)Bug中絕大多數(shù)是在一些很少見的環(huán)境中,或者是若干個(gè)組件的復(fù)雜組合使用的情形中發(fā)生的。
如果系統(tǒng)在運(yùn)行中出現(xiàn)過某種問題,由Oracle技術(shù)支持部門或第三方的專家確認(rèn)原因是PSR中的某一Bug,這樣就必須盡早安裝;如果系統(tǒng)一直運(yùn)行正常,并且在PSR已發(fā)現(xiàn)的問題中涉及的組件或功能(如Logical Standby, JVM,RAC等)在系統(tǒng)中并不使用,此時(shí)可以選擇安裝也可以選擇不安裝。
另一個(gè)需要考慮的因素是安裝補(bǔ)丁的時(shí)機(jī)。上述這些考慮的一個(gè)重要前提是系統(tǒng)已經(jīng)投入運(yùn)行,擔(dān)心“倒退”的Bug影響系統(tǒng)。如果系統(tǒng)還處在開發(fā)和測試階段,不需要有任何猶豫,安裝最新的PSR,并在此基礎(chǔ)上測試應(yīng)用系統(tǒng)是否工作正常。如果發(fā)現(xiàn)異常,要及時(shí)請Oracle技術(shù)支持部門確認(rèn)是否新Bug,如果是請其提供個(gè)別補(bǔ)丁。目的就是在一個(gè)盡可能完善穩(wěn)定的數(shù)據(jù)庫平臺(tái)上測試應(yīng)用系統(tǒng)。我們可以把這種安裝補(bǔ)丁的策略概括為“補(bǔ)丁補(bǔ)新不補(bǔ)舊”。
以上都是針對PSR的安裝,對于個(gè)別補(bǔ)丁,由于補(bǔ)丁修復(fù)的Bug單一,容易判斷是否需要安裝。需要注意的是,如果在當(dāng)前PSR之上安裝了若干個(gè)個(gè)別補(bǔ)丁,那么在下一個(gè)PSR發(fā)布后,在安裝下一個(gè)PSR之前,需要卸載所有個(gè)別補(bǔ)丁。為便于管理,現(xiàn)在Oracle技術(shù)支持部門要求必須使用工具 opatch安裝管理個(gè)別工具,而盡量避免手動(dòng)拷貝文件等操作。
最后是安全補(bǔ)丁安裝的判斷。雖然安全漏洞這個(gè)詞看上去讓人覺得非常嚴(yán)重,但是還要冷靜綜合分析這些漏洞在系統(tǒng)中的危害程度。事實(shí)上,不安裝安全補(bǔ)丁的危險(xiǎn)性可能遠(yuǎn)遠(yuǎn)小于始終不渝地使用scott/tiger這樣人人都知道的用戶名和口令的“標(biāo)準(zhǔn)缺省”做法。
安裝PSR
使用oui工具安裝PSR時(shí)只需要用鼠標(biāo)做幾個(gè)選擇就可以進(jìn)入自動(dòng)執(zhí)行的階段,操作過程本身非常簡單。但是如果要求必須一次安裝成功;要求必須在凌晨2點(diǎn)到4點(diǎn)這個(gè)有限的停機(jī)時(shí)間段完成操作;要求安裝過程不出差錯(cuò),以后出現(xiàn)問題時(shí)能夠完全排除此次操作失誤的可能性,那么就需要在啟動(dòng)oui之前做一些準(zhǔn)備工作。
1. 收集信息
有關(guān)PSR的信息中,一個(gè)最重要的文檔就是軟件補(bǔ)丁說明,這個(gè)文件相當(dāng)于技術(shù)手冊中的安裝指南和發(fā)行說明。文件本身包含在下載的軟件補(bǔ)丁文件之中,文件名是patchnote.htm或README.html。需要注意的一個(gè)問題是在軟件補(bǔ)丁文件之中找到的這一Patch Set Notes可能不是最新版,可以根據(jù)文件內(nèi)的提示信息在metalink中檢索最新版。
另外兩個(gè)重要文件就是前面已經(jīng)提及的“修復(fù)列表”和“悔過列表”,相對于“修復(fù)列表”更應(yīng)該仔細(xì)閱讀“悔過列表”中的每一項(xiàng)內(nèi)容。另外,在Patch Set Notes的已知問題(Known Issues)一節(jié)內(nèi)列出了安裝PSR后出現(xiàn)的一些問題。
除去這三個(gè)主要文件外,還應(yīng)在metalink中檢索,尋找是否還有其他涉及這一PSR的技術(shù)文章,尋找其他用戶在安裝這一PSR時(shí)或安裝后遇到問題時(shí)所發(fā)的救助的帖子,前車之鑒更應(yīng)重視。
2. 做出判斷
在認(rèn)真閱讀收集到的文章之后,根據(jù)自己系統(tǒng)的實(shí)際情況,做出是立即安裝PSR,或是等待下一PSR的決定。如果是暫緩安裝,則要記錄原因,以便以后跟蹤Bug的修復(fù)進(jìn)程。
3. 制訂實(shí)施計(jì)劃
在決定安裝PSR后,需要制訂一個(gè)實(shí)施計(jì)劃。在計(jì)劃中不僅要包括正常的操作步驟,更要考慮在出現(xiàn)意外時(shí)的應(yīng)急處理(如果安裝PSR失敗,則在正常應(yīng)用開始時(shí)間之前,要恢復(fù)系統(tǒng)到安裝之前的狀態(tài))。如果可能,在對正式系統(tǒng)開始實(shí)施之前,應(yīng)在測試系統(tǒng)中進(jìn)行演練和應(yīng)用處理的測試,保證在安裝PSR后不會(huì)影響應(yīng)用系統(tǒng)的運(yùn)行。
安裝PSR的計(jì)劃大致有以下幾個(gè)部分:停止數(shù)據(jù)庫服務(wù)關(guān)閉數(shù)據(jù)庫;備份DBMS軟件和數(shù)據(jù)庫以備恢復(fù)之用;安裝PSR軟件;更新數(shù)據(jù)庫數(shù)據(jù)字典升級PSR版本;正常啟動(dòng)數(shù)據(jù)庫開始數(shù)據(jù)庫服務(wù)。
看似簡單的關(guān)閉數(shù)據(jù)庫的操作,在系統(tǒng)構(gòu)成復(fù)雜時(shí)也會(huì)變得不容易。另外,如果夜間作業(yè)時(shí)間不允許在完成數(shù)據(jù)庫完全備份之后再安裝PSR,則安裝PSR的日期應(yīng)該選擇在例行的數(shù)據(jù)庫完全備份的下一個(gè)晚上,只備份重做日志。
在安裝PSR之前備份DBMS軟件的目的是,由于安裝PSR會(huì)對許多程序和庫函數(shù)進(jìn)行更新,如果安裝PSR中途失?。m然可能性非常?。?,有可能造成DBMS軟件出現(xiàn)不一致。另外一種可能的情形是,在安裝PSR,更新數(shù)據(jù)字典后,測試應(yīng)用系統(tǒng)時(shí),出現(xiàn)了某種異常,原因不明,最終決定放棄PSR。如果操作之前沒有備份,則此時(shí)只有重新安裝軟件一種選擇(PSR不同于完整軟件安裝,在oui中無法單獨(dú)卸載PSR軟件)。
對文件、目錄和文件系統(tǒng)的備份,最簡單的方式可以使用cp、tar、dump等命令完成。如果希望縮短文件拷貝時(shí)間,可以考慮分區(qū)備份的方法。分區(qū)備份常用的命令是dd。但是,分區(qū)拷貝比文件拷貝速度快的前提是良好的分區(qū)設(shè)計(jì):Oracle軟件單獨(dú)占一個(gè)大小適中(如4GB)的分區(qū),這樣扇區(qū)拷貝才會(huì)體現(xiàn)優(yōu)勢,這也就是為什么在安裝軟件時(shí),Oracle建議單獨(dú)使用一個(gè)分區(qū)安裝軟件的原因之一。
在制定實(shí)施計(jì)劃時(shí),應(yīng)認(rèn)真閱讀Patch Set Notes中有關(guān)操作前準(zhǔn)備工作一節(jié)。在這節(jié)內(nèi)會(huì)介紹對于一些特殊系統(tǒng)構(gòu)成,如果你的系統(tǒng)屬于文檔中提到的構(gòu)成,一定要首先閱讀文內(nèi)提示的相關(guān)技術(shù)文章,找到正確的安裝步驟。
使用oui, PSR軟件安裝完成后,一定不要忘記更新數(shù)據(jù)字典這一步驟。如果在這一ORACLE_HOME下生成了多個(gè)數(shù)據(jù)庫,則每個(gè)數(shù)據(jù)庫都必須更新數(shù)據(jù)字典。
. 實(shí)施操作
制訂一個(gè)詳細(xì)的計(jì)劃后,實(shí)施操作就可以“照本宣科”,是一個(gè)簡單的體力勞動(dòng)。要認(rèn)識(shí)到“忙中出錯(cuò)”的概率遠(yuǎn)比“急中生智”大得多,操作時(shí)盡量減少失誤的可能性。例如,需要執(zhí)行的復(fù)雜命令,盡可能從一個(gè)文件拷貝到終端執(zhí)行,而不要現(xiàn)場輸入。另外,在實(shí)施過程中,要記錄各個(gè)階段實(shí)際的執(zhí)行時(shí)間,以供以后制訂類似計(jì)劃時(shí)參考。
5. 檢查操作結(jié)果并記錄備案
執(zhí)行一個(gè)操作,操作是否成功,一定要進(jìn)行檢查,不能簡單認(rèn)為沒有出錯(cuò)信息就是成功。要知道驗(yàn)證的方法。除去極個(gè)別極費(fèi)時(shí)間的驗(yàn)證(分區(qū)備份的內(nèi)容是否可以成功恢復(fù)系統(tǒng),必須恢復(fù)分區(qū),啟動(dòng)數(shù)據(jù)庫,測試應(yīng)用系統(tǒng)后才能確認(rèn)),其余操作都應(yīng)進(jìn)行驗(yàn)證。所有屏幕輸出信息和日志文件都應(yīng)保留,作為安裝報(bào)告的附件提交給上級或客戶。
在屏幕輸出或日志文件中出現(xiàn)異常/錯(cuò)誤信息時(shí),應(yīng)即時(shí)分析,決定馬上采取的措施。出現(xiàn)嚴(yán)重錯(cuò)誤時(shí),可能需要重新執(zhí)行某一SQL程序,或者重新安裝PSR。所以在制訂實(shí)施計(jì)劃時(shí)應(yīng)在時(shí)間上留出異常情況處理的時(shí)間。
下面給出一個(gè)在Linux平臺(tái)上安裝10.1的PSR的實(shí)例,給從未安裝PSR的讀者有一個(gè)感性認(rèn)識(shí)。
操作系統(tǒng)是RHEL AS4.0 Update3,Oracle的當(dāng)前版本是10.1.2。在metalink中檢索,找到10.1版的最新PSR10.1.0.5。下載壓縮文件。在壓縮文件中找到Patch Set Notes,該文檔的完成日期是2006年1月。而按照文檔內(nèi)的提示在metalink中檢索得到的此文檔的最新版本完成日期是2006年4月。使用文件比較工具進(jìn)行比較,兩個(gè)版本沒有實(shí)質(zhì)性差別,只有語句措詞的修改,但是養(yǎng)成總是檢索最新文檔的習(xí)慣有益無害。
根據(jù)Patch Set Notes中的說明,有一些特殊系統(tǒng)構(gòu)成需要額外的步驟,本例中由于全部沒有涉及到,所以可以按標(biāo)準(zhǔn)步驟執(zhí)行。
另外,檢查“Known issues and alerts affecting 10.1.0.5”文檔后,發(fā)現(xiàn)10.1.0.5引入的影響最大的一個(gè)Bug是執(zhí)行SELECT MAX()在某些特定條件下結(jié)果不正確。而這一Bug可以通過設(shè)置事件(event)關(guān)閉FIRST ROW優(yōu)化而避免。最后的結(jié)論是這一BUG不會(huì)對本系統(tǒng)有影響,可以安裝PSR10.1.0.5。
1. 檢查數(shù)據(jù)庫表空間和初始化參數(shù)是否需要調(diào)整。
System表空間要求有一定未使用空間:初始化參數(shù)SHARED_POOL_SIZE 和 JAVA_POOL_SIZE不能低于最小值150MB。
2. 關(guān)閉數(shù)據(jù)庫,停止listener和agent等進(jìn)程。
3. 解壓縮下載文件至某一目錄,執(zhí)行oui。
在壓縮文件中附帶的oui的版本要比已經(jīng)安裝的版本高,應(yīng)總是使用新版本的oui。在oui窗口中,要求選擇本次安裝的軟件的位置,正確的位置是解壓縮目錄下的子目錄Disk1/stage/, 選中products.xml即可開始文件拷貝。
要注意窗口中會(huì)出現(xiàn)本次安裝的日志文件的文件路徑和文件名。文件的位置是在Oracle的inventory所在目錄的子目錄logs中,文件名由前綴InstallActions和安裝日期時(shí)間組成,如: InstallActions2006-08-30-11-32-48AM.log。
正常結(jié)束后,退出oui。打開日志文件,檢索是否出現(xiàn)error 或“ORA-”的錯(cuò)誤信息。本次安裝產(chǎn)生的日志文件內(nèi),沒有任何此類的信息,表明PSR軟件安裝成功。如果此時(shí)再次啟動(dòng)oui,點(diǎn)擊“已安裝軟件”,則可以看到在原有的10.1.0.2軟件之下,新出現(xiàn)了10.1.0.5一項(xiàng),這也證實(shí)PSR軟件安裝成功。
4.更新數(shù)據(jù)庫數(shù)據(jù)字典
更新數(shù)據(jù)字典時(shí),必須以特殊的升級方式打開數(shù)據(jù)庫。
$ sqlplus /nolog
SQL CONNECT / AS SYSDBA
SQL STARTUP UPGRADE
SQL SPOOL patch.log
SQL @?/rdbms/admin/catpatch.sql
執(zhí)行結(jié)束后,關(guān)閉重定向:
SQL SPOOL OFF
打開文件patch.log檢查是否有錯(cuò)誤“ORA-”。(這一文件在啟動(dòng)sqlplus時(shí)的當(dāng)前目錄中,當(dāng)然也可以在“SPOOL patch.log”語句中顯式指定文件路徑。)如果出現(xiàn)錯(cuò)誤要分析原因,在解決問題后,需要再次執(zhí)行catpatch.sql程序。
更新數(shù)據(jù)字典時(shí),由于對某些PL/SQL包刪除后又重新生成,造成相關(guān)PL/SQL包的狀態(tài)為異常(invalid)。在以后調(diào)用這些包時(shí),檢測到其狀態(tài)為非法,會(huì)自動(dòng)執(zhí)行編譯命令,使?fàn)顟B(tài)成為正常(valid)。雖然不會(huì)出錯(cuò),但會(huì)造成個(gè)別處理第一次執(zhí)行時(shí)變慢。顯然,與其留到應(yīng)用系統(tǒng)運(yùn)行時(shí)再一個(gè)個(gè)編譯,不如之前集中一次重編譯所有異常包。
SQL SHUTDOWN
SQL STARTUP
SQL @?/rdbms/admin/utlrp.sql
最后,根據(jù)Known Issues中的指示,完成與本系統(tǒng)有關(guān)的操作。例如,修改Pro*C的配置文件。這里執(zhí)行一個(gè)修改文件存取權(quán)限的“后操作”,以便非同組用戶和程序可以存取客戶端工具和庫函數(shù)。
$ cd $ORACLE_HOME/install
$ ./ changePerm.sh
個(gè)別補(bǔ)丁管理工具opatch
如前所述,在發(fā)布一個(gè)PSR后發(fā)現(xiàn)的新BUG,只能把其補(bǔ)丁收入到下一個(gè)PSR中。如果對數(shù)據(jù)庫有實(shí)質(zhì)性影響,則這一補(bǔ)丁以個(gè)別補(bǔ)丁的形式向用戶提供。個(gè)別補(bǔ)丁是與某一個(gè)特定的PSR關(guān)聯(lián),是安裝在這一PSR之上的。另外,如同其名字表明的,個(gè)別補(bǔ)丁只是單一Bug的補(bǔ)丁,不會(huì)包含其他個(gè)別補(bǔ)丁,即不是累積型的。
在9.2版之前,安裝個(gè)別補(bǔ)丁的操作完全是手工的。這種手工方式的缺點(diǎn)不僅在于加重DBA的負(fù)擔(dān),容易造成操作失誤,更嚴(yán)重的是無法對已安裝的個(gè)別補(bǔ)丁進(jìn)行管理。
為解決手工方式的缺陷,從9.2版開始,Oracle公司設(shè)計(jì)實(shí)現(xiàn)了個(gè)別補(bǔ)丁安裝管理工具opatch。opatch使用一個(gè)稱為 inventory的系統(tǒng)數(shù)據(jù)結(jié)構(gòu)(嚴(yán)格說是與oui共享inventory),集中管理所有已安裝的個(gè)別補(bǔ)丁;個(gè)別補(bǔ)丁的安裝和卸載都使用opatch 命令完成,沖突檢測也由opatch在安裝時(shí)自動(dòng)完成;提供列表命令可以很方便得到已安裝個(gè)別補(bǔ)丁的信息。
10g(10.1和10.2)版本中,opatch作為一個(gè)標(biāo)準(zhǔn)工具,在軟件安裝時(shí)自動(dòng)安裝。(安裝在$ORACLE_HOME/OPatch 下。)而對于9.2版,需要從metalink下載opatch。無論數(shù)據(jù)庫是哪一個(gè)版本,系統(tǒng)中是否已經(jīng)安裝opatch,在使用之前,應(yīng)從 metalink下載最新版本的opatch。很遺憾,由于系統(tǒng)實(shí)現(xiàn)的問題,10.2使用的opatch與之前版本(10.1和9.2)使用的 opatch不兼容,不能混用,這一點(diǎn)必須注意。
opatch是使用perl編寫的腳本程序(其中也使用JAVA API)。編程使用的perl版本是5.6版,雖然在5.6之前的版本中也可運(yùn)行,但應(yīng)盡可能安裝5.6或以上的版本的perl。對于DBA來說一個(gè)好消息是,如果安裝9.2版軟件時(shí)保留了HTTP服務(wù)器,則在$ORACLE_HOME/Apache下會(huì)自動(dòng)安裝perl。(10g會(huì)自動(dòng)安裝配置perl 和opatch。)
opatch命令格式為:
opatch command [ command_options ] [ -h[elp] ]
命令有:apply(安裝個(gè)別補(bǔ)丁)、rollback(卸載個(gè)別補(bǔ)?。?、lsinventory(對inventory進(jìn)行列表)、query (顯示某一個(gè)別補(bǔ)丁的詳細(xì)信息)、version(顯示opatch版本信息)。在opatch目錄下,有用戶使用指南文件(Users_Guide.txt),其中有詳細(xì)的命令格式和使用示例,讀者可以參考。Opatch執(zhí)行操作時(shí),除在屏幕輸出結(jié)果外,還生成日志文件。日志文件的路徑和文件名格式如下:
$ORACLE_HOME/.patch_storage/ patch_id / action - patch_id _ mm-dd-yyyy_hh-mi-ss .log
其中“patch_id”是Oracle技術(shù)支持部門為個(gè)別補(bǔ)丁分配的編號(hào)。
4. 個(gè)別補(bǔ)丁安裝實(shí)例
沿用安裝PSR實(shí)例中的環(huán)境。在安裝PSR10.1.0.5后,檢索metalink,發(fā)現(xiàn)若干在其之上的個(gè)別補(bǔ)丁。選擇其中之一安裝。
個(gè)別補(bǔ)丁Patch 4518443修復(fù)BUG4518443,這一BUG的主要問題是TNS LISTENER在注冊O(shè)NS(Oracle Notification Services)的同時(shí)如果創(chuàng)建子進(jìn)程,那么LISTENER會(huì)掛起(HANGUP)。
安裝時(shí),首先,從metalink下載補(bǔ)丁的壓縮文件p4518443_10105_LINUX.zip。將此文件解壓縮至某一目錄中。解壓縮后,這一補(bǔ)丁的所有文件都在子目錄4518443下,目錄名就是個(gè)別補(bǔ)丁的補(bǔ)丁號(hào),opatch依據(jù)目錄名獲得信息,所以一定不要重命名子目錄。
然后,在終端窗口中,執(zhí)行cd命令移動(dòng)到4518443子目錄中,執(zhí)行以下命令:
$ $ORACLE_HOME/OPatch/opatch apply
對inventory列表,確認(rèn)安裝操作:
$ $ORACLE_HOME/OPatch/opatch lsinventory
執(zhí)行卸載命令時(shí),也必須使4518443子目錄成為當(dāng)前目錄。其中,Rollback命令需要兩個(gè)參數(shù):-id給出個(gè)別補(bǔ)丁號(hào);-ph 給出個(gè)別補(bǔ)丁解壓縮后的路徑。
$ $ORACLE_HOME/OPatch/opatch rollback -id 4518443 -ph /…/4518443
隨后再對inventory列表,則會(huì)看到這一個(gè)別補(bǔ)丁已經(jīng)被移去。
4. 使用opatch顯示已安裝的版本信息
不需要啟動(dòng)數(shù)據(jù)庫,執(zhí)行加選項(xiàng)的對inventory的列表命令,可以得到已安裝的軟件的各個(gè)組件的詳細(xì)版本信息。
$ $ORACLE_HOME/OPatch/opatch lsinventory -detail
安全補(bǔ)丁CPU
一個(gè)CPU內(nèi)包含了對多個(gè)安全漏洞的修復(fù),并且也包括相應(yīng)必需的非安全漏洞的補(bǔ)丁。CPU是累積型的,只要安裝最新發(fā)布的CPU即可,其中包括之前發(fā)布的所有CPU的內(nèi)容。事實(shí)上,在CPU之前的安全漏洞修改除去個(gè)別例外也被包括在CPU中。Oracle公司只對處于標(biāo)準(zhǔn)技術(shù)支持和延長支持期間的產(chǎn)品提供CPU更新,對處于維持支持范圍的產(chǎn)品不提供新的CPU。(對于9.2以前的版本,只對處于ECS和EMS期間的版本提供CPU更新。)一般對當(dāng)前補(bǔ)丁發(fā)行版及前一個(gè)版本提供CPU,但也有只限于當(dāng)前補(bǔ)丁發(fā)行版的例外情形。也就是說,一般需要先安裝最新PSR后才可能安裝CPU。由于是累積型的定期發(fā)布,所以對于某一平臺(tái)的某一版本,如果兩次CPU發(fā)布期間沒有發(fā)現(xiàn)新的安全漏洞,則新發(fā)布的CPU與前一版本完全相同。
更換一個(gè)目錄試一下
把patch 安裝文件放在/tmp 文件下,在嘗試一下安裝
oracle手動(dòng)升級有兩種方式,一種在安裝oracle軟件之后,安裝升級包,然后創(chuàng)建數(shù)據(jù)庫;另一種在oracle數(shù)據(jù)庫創(chuàng)建以后,進(jìn)行升級。
下面主要介紹oracle數(shù)據(jù)庫創(chuàng)建后進(jìn)行的數(shù)據(jù)庫升級(10.2.0.1-10.2.0.4),代碼如下:
SQL --查看當(dāng)前數(shù)據(jù)庫版本
SQL select * from v$version;
SQL --給用戶scott解鎖
SQL alter user scott account unlock;
SQL --查看表空間
SQL select * from dba_tablespaces;
SQL --查看數(shù)據(jù)文件存放位置
SQL select * from dba_data_files;
SQL --創(chuàng)建測試表空間
SQL create tablespace ts_upgrade datafile '/u02/oradata/data/orcl/ts_upgrade01.dbf' size 5m autoextend on maxsize 30g;
SQL --創(chuàng)建用戶
SQL create user u_upgrade identified by "123456" default tablespace ts_upgrade temporary tablespace temp;
SQL --為用戶賦權(quán)
SQL grant connect,resource to u_upgrade;
SQL --創(chuàng)建測試表
SQL create table u_upgrade.dept as select * from scott.dept;
SQL select * from u_upgrade.dept;
[oracle@feegle ~]$ #停止em
[oracle@feegle ~]$ emctl stop dbconsole
[oracle@feegle ~]$ #停止sql*plus
[oracle@feegle ~]$ isqlplusctl stop
[oracle@feegle ~]$ #停止監(jiān)聽
[oracle@feegle ~]$ lsnrctl stop
[oracle@feegle ~]$ #安裝升級包(p6810189_10204_Linux-x86-64.zip)
[oracle@feegle ~]$ #手動(dòng)升級數(shù)據(jù)庫
[oracle@feegle ~]$ sqlplus /nolog
SQL conn /as sysdba
SQL --以升級模式啟動(dòng)數(shù)據(jù)庫
SQL startup upgrade;
SQL --重建數(shù)據(jù)字典(建議關(guān)閉數(shù)據(jù)庫歸檔)
SQL spool upgrade.log
SQL @$ORACLE_HOME/rdbms/admin/catupgrd.sql
#####重建數(shù)據(jù)字典部分截圖#####
Oracle Database 10.2 Upgrade Status Utility 06-15-2012 18:27:56
.
Component Status Version HH:MM:SS
Oracle Database Server VALID 10.2.0.4.0 00:12:04
JServer JAVA Virtual Machine VALID 10.2.0.4.0 00:04:58
Oracle XDK VALID 10.2.0.4.0 00:00:32
Oracle Database Java Packages VALID 10.2.0.4.0 00:00:28
Oracle Text VALID 10.2.0.4.0 00:00:25
Oracle XML Database VALID 10.2.0.4.0 00:02:25
Oracle Workspace Manager VALID 10.2.0.4.3 00:00:43
Oracle Data Mining VALID 10.2.0.4.0 00:00:21
OLAP Analytic Workspace VALID 10.2.0.4.0 00:00:23
OLAP Catalog VALID 10.2.0.4.0 00:01:02
Oracle OLAP API VALID 10.2.0.4.0 00:00:53
Oracle interMedia VALID 10.2.0.4.0 00:03:52
Spatial VALID 10.2.0.4.0 00:01:37
Oracle Expression Filter VALID 10.2.0.4.0 00:00:12
Oracle Enterprise Manager VALID 10.2.0.4.0 00:01:18
Oracle Rule Manager VALID 10.2.0.4.0 00:00:10
.
Total Upgrade Time: 00:31:30
DOC#######################################################################
DOC#######################################################################
DOC
DOC The above PL/SQL lists the SERVER components in the upgraded
DOC database, along with their current version and status.
DOC
DOC Please review the status and version columns and look for
DOC any errors in the spool log file. If there are errors in the spool
DOC file, or any components are not VALID or not the current version,
DOC consult the Oracle Database Upgrade Guide for troubleshooting
DOC recommendations.
DOC
DOC Next shutdown immediate, restart for normal operation, and then
DOC run utlrp.sql to recompile any invalid application objects.
DOC
DOC#######################################################################
DOC#######################################################################
DOC#
SQL
#####重建數(shù)據(jù)字典部分截圖#####
SQL spool off
SQL --關(guān)閉數(shù)據(jù)庫
SQL shutdown immediate;
SQL --啟動(dòng)數(shù)據(jù)庫
SQL startup;
SQL --編譯無效對象
SQL @$ORACLE_HOME/rdbms/admin/utlrp.sql
#####編譯無效對象部分截圖#####
DOC 1. Query showing jobs created by UTL_RECOMP
DOC SELECT job_name FROM dba_scheduler_jobs
DOC WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC
DOC 2. Query showing UTL_RECOMP jobs that are running
DOC SELECT job_name FROM dba_scheduler_running_jobs
DOC WHERE job_name like 'UTL_RECOMP_SLAVE_%';
DOC#
TIMESTAMP
--------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_END 2012-06-15 18:45:01
DOC The following query reports the number of objects that have compiled
DOC with errors (objects that compile with errors have status set to 3 in
DOC obj$). If the number is higher than expected, please examine the error
DOC messages reported with each object (using SHOW ERRORS) to see if they
DOC point to system misconfiguration or resource constraints that must be
DOC fixed before attempting to recompile these objects.
DOC#
OBJECTS WITH ERRORS
-------------------
DOC The following query reports the number of errors caught during
DOC recompilation. If this number is non-zero, please query the error
DOC messages in the table UTL_RECOMP_ERRORS to see if any of these errors
DOC are due to misconfiguration or resource constraints that must be
DOC fixed before objects can compile successfully.
DOC#
ERRORS DURING RECOMPILATION
---------------------------
SQL
#####編譯無效對象部分截圖#####
SQL 驗(yàn)證升級
SQL --查看組件狀態(tài)
SQL --status=VALID
SQL select comp_name, version, status from sys.dba_registry;
SQL --查看表空間狀態(tài)
SQL select tablespace_name,status from dba_tablespaces;
SQL --查看用戶
SQL select username from dba_users;
SQL --查看用戶對象
SQL select object_name from dba_objects where owner='SCOTT';
SQL select object_name from dba_objects where owner='U_UPGRADE';
SQL select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for Linux: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
[oracle@feegle ~]$ #啟動(dòng)監(jiān)聽
[oracle@feegle ~]$ lsnrctl start
[oracle@feegle ~]$ #啟動(dòng)EM
[oracle@feegle ~]$ emctl start dbconsole
[oracle@feegle ~]$ #啟動(dòng)SQL*PLUS
[oracle@feegle ~]$ isqlplusctl start