oracle手動升級有兩種方式,一種在安裝oracle軟件之后,安裝升級包,然后創(chuàng)建數(shù)據(jù)庫;另一種在oracle數(shù)據(jù)庫創(chuàng)建以后,進(jìn)行升級。
目前創(chuàng)新互聯(lián)建站已為超過千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、昭化網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
下面主要介紹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 ~]$ #手動升級數(shù)據(jù)庫
[oracle@feegle ~]$ sqlplus /nolog
SQL conn /as sysdba
SQL --以升級模式啟動數(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 --啟動數(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 ~]$ #啟動監(jiān)聽
[oracle@feegle ~]$ lsnrctl start
[oracle@feegle ~]$ #啟動EM
[oracle@feegle ~]$ emctl start dbconsole
[oracle@feegle ~]$ #啟動SQL*PLUS
[oracle@feegle ~]$ isqlplusctl start
給軟件打補(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)目錄,并在需要時進(jìn)行聯(lián)接操作。軟件公司一般在一段時間后會把針對某一版本的所有補(bǔ)丁進(jìn)行整理:合并融合,解決沖突,進(jìn)行整體測試,并使文件拷貝和聯(lián)接操作自動執(zhí)行,得到一個軟件補(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,例如在完成本文時,版本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)然會收錄到下一個PSR中。PSR是累積型的,即下一個PSR中會包括當(dāng)前PSR中所有補(bǔ)丁和新發(fā)現(xiàn)Bug的補(bǔ)丁。同時存在幾個PSR時,只需安裝最新版本一次就可以了。但是由于PSR的發(fā)行有一定間隔,如果這些Bug對用戶有比較大的影響,那么 Oracle公司也會向用戶公開和提供這些補(bǔ)丁,這些補(bǔ)丁被稱為個別補(bǔ)?。↖nterim Patch,one-off patch 或 Patch Set Exception)。而對于最終補(bǔ)丁發(fā)行版而言,由于不再有下一個PSR,所以當(dāng)發(fā)現(xiàn)影響系統(tǒng)的新Bug時,個別補(bǔ)丁成為惟一選擇。
此外,Oracle公司還定期發(fā)布安全補(bǔ)丁,稱之為CPU(Critical Patch Updates)。安全補(bǔ)丁用來修復(fù)軟件的易受攻擊性(vulnerability)或通常說的安全漏洞。這類問題本來不屬于軟件錯誤,在正常使用中不會出現(xiàn)任何問題。但是別有用心的人可以通過運(yùn)行非常精巧設(shè)計(jì)的代碼,繞過數(shù)據(jù)庫系統(tǒng)的安全管理機(jī)制,達(dá)到非授權(quán)存取的目的。
另外還存在一類補(bǔ)?。涸\斷用補(bǔ)?。╠iagnostic patch)。顧名思義,這類補(bǔ)丁不是用來解決問題的,而是用來尋找問題的原因的。這類補(bǔ)丁只在Oracle技術(shù)支持部門要求安裝時,才需要安裝。在得到需要的診斷信息后,應(yīng)立即卸載這一補(bǔ)丁。
利弊及時機(jī)選擇
負(fù)責(zé)管理支撐大型應(yīng)用系統(tǒng)的數(shù)據(jù)庫的DBA會容易理解安裝軟件補(bǔ)丁的代價。安裝PSR需要停止數(shù)據(jù)庫服務(wù),關(guān)閉數(shù)據(jù)庫,對于許多應(yīng)用系統(tǒng)安排這樣的停機(jī)時間本身就是一件比較困難的事情。事實(shí)上,更為嚴(yán)重的是由于安裝PSR可能“引入”新的Bug,反而影響應(yīng)用系統(tǒng)的正常運(yùn)行。軟件補(bǔ)丁本來是修正 Bug,怎么會帶來新的Bug?雖然有些讓人匪夷所思,但很不幸這是現(xiàn)實(shí)存在的。
對于每一個PSR,其中都包括了少則幾百多則上千個嚴(yán)重Bug的修正。即便是如此,在PSR發(fā)布后,很快就又會在安裝PSR后的數(shù)據(jù)庫中發(fā)現(xiàn)一些新問題。其中一部分Bug是以前就一直存在的只是以前沒有發(fā)現(xiàn),而現(xiàn)在偶爾被發(fā)現(xiàn),或者是由于PSR修正了某一錯誤從而將其“激活”或容易發(fā)現(xiàn)。但是確實(shí)有一些Bug是由這一PSR造成的,Oracle技術(shù)支持部門稱其為倒退(Regression)。對于每一PSR,在metalink中有兩個重要的與之有關(guān)的文檔,一個是“List of fixes added in XXXX”,是這一PSR修復(fù)的Bug的清單,是一本“修復(fù)列表”;另一個是“Known issues and alerts affecting XXXX”,是安裝PSR后發(fā)現(xiàn)的問題,可以稱其為“悔過列表”。由于大型軟件的復(fù)雜性,Bug幾乎是不可避免的。重要的是能夠及時提供信息,DBA可以結(jié)合自己系統(tǒng)的情況做出正確的判斷。讀者不必因?yàn)橹肋€存在著Bug,就對Oracle數(shù)據(jù)庫產(chǎn)品失去信心。PSR修復(fù)的上千個Bug中絕大多數(shù)是在一些很少見的環(huán)境中,或者是若干個組件的復(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)中并不使用,此時可以選擇安裝也可以選擇不安裝。
另一個需要考慮的因素是安裝補(bǔ)丁的時機(jī)。上述這些考慮的一個重要前提是系統(tǒng)已經(jīng)投入運(yùn)行,擔(dān)心“倒退”的Bug影響系統(tǒng)。如果系統(tǒng)還處在開發(fā)和測試階段,不需要有任何猶豫,安裝最新的PSR,并在此基礎(chǔ)上測試應(yīng)用系統(tǒng)是否工作正常。如果發(fā)現(xiàn)異常,要及時請Oracle技術(shù)支持部門確認(rèn)是否新Bug,如果是請其提供個別補(bǔ)丁。目的就是在一個盡可能完善穩(wěn)定的數(shù)據(jù)庫平臺上測試應(yīng)用系統(tǒng)。我們可以把這種安裝補(bǔ)丁的策略概括為“補(bǔ)丁補(bǔ)新不補(bǔ)舊”。
以上都是針對PSR的安裝,對于個別補(bǔ)丁,由于補(bǔ)丁修復(fù)的Bug單一,容易判斷是否需要安裝。需要注意的是,如果在當(dāng)前PSR之上安裝了若干個個別補(bǔ)丁,那么在下一個PSR發(fā)布后,在安裝下一個PSR之前,需要卸載所有個別補(bǔ)丁。為便于管理,現(xiàn)在Oracle技術(shù)支持部門要求必須使用工具 opatch安裝管理個別工具,而盡量避免手動拷貝文件等操作。
最后是安全補(bǔ)丁安裝的判斷。雖然安全漏洞這個詞看上去讓人覺得非常嚴(yán)重,但是還要冷靜綜合分析這些漏洞在系統(tǒng)中的危害程度。事實(shí)上,不安裝安全補(bǔ)丁的危險性可能遠(yuǎn)遠(yuǎn)小于始終不渝地使用scott/tiger這樣人人都知道的用戶名和口令的“標(biāo)準(zhǔn)缺省”做法。
安裝PSR
使用oui工具安裝PSR時只需要用鼠標(biāo)做幾個選擇就可以進(jìn)入自動執(zhí)行的階段,操作過程本身非常簡單。但是如果要求必須一次安裝成功;要求必須在凌晨2點(diǎn)到4點(diǎn)這個有限的停機(jī)時間段完成操作;要求安裝過程不出差錯,以后出現(xiàn)問題時能夠完全排除此次操作失誤的可能性,那么就需要在啟動oui之前做一些準(zhǔn)備工作。
1. 收集信息
有關(guān)PSR的信息中,一個最重要的文檔就是軟件補(bǔ)丁說明,這個文件相當(dāng)于技術(shù)手冊中的安裝指南和發(fā)行說明。文件本身包含在下載的軟件補(bǔ)丁文件之中,文件名是patchnote.htm或README.html。需要注意的一個問題是在軟件補(bǔ)丁文件之中找到的這一Patch Set Notes可能不是最新版,可以根據(jù)文件內(nèi)的提示信息在metalink中檢索最新版。
另外兩個重要文件就是前面已經(jīng)提及的“修復(fù)列表”和“悔過列表”,相對于“修復(fù)列表”更應(yīng)該仔細(xì)閱讀“悔過列表”中的每一項(xiàng)內(nèi)容。另外,在Patch Set Notes的已知問題(Known Issues)一節(jié)內(nèi)列出了安裝PSR后出現(xiàn)的一些問題。
除去這三個主要文件外,還應(yīng)在metalink中檢索,尋找是否還有其他涉及這一PSR的技術(shù)文章,尋找其他用戶在安裝這一PSR時或安裝后遇到問題時所發(fā)的救助的帖子,前車之鑒更應(yīng)重視。
2. 做出判斷
在認(rèn)真閱讀收集到的文章之后,根據(jù)自己系統(tǒng)的實(shí)際情況,做出是立即安裝PSR,或是等待下一PSR的決定。如果是暫緩安裝,則要記錄原因,以便以后跟蹤Bug的修復(fù)進(jìn)程。
3. 制訂實(shí)施計(jì)劃
在決定安裝PSR后,需要制訂一個實(shí)施計(jì)劃。在計(jì)劃中不僅要包括正常的操作步驟,更要考慮在出現(xiàn)意外時的應(yīng)急處理(如果安裝PSR失敗,則在正常應(yīng)用開始時間之前,要恢復(fù)系統(tǒng)到安裝之前的狀態(tài))。如果可能,在對正式系統(tǒng)開始實(shí)施之前,應(yīng)在測試系統(tǒng)中進(jìn)行演練和應(yīng)用處理的測試,保證在安裝PSR后不會影響應(yīng)用系統(tǒng)的運(yùn)行。
安裝PSR的計(jì)劃大致有以下幾個部分:停止數(shù)據(jù)庫服務(wù)關(guān)閉數(shù)據(jù)庫;備份DBMS軟件和數(shù)據(jù)庫以備恢復(fù)之用;安裝PSR軟件;更新數(shù)據(jù)庫數(shù)據(jù)字典升級PSR版本;正常啟動數(shù)據(jù)庫開始數(shù)據(jù)庫服務(wù)。
看似簡單的關(guān)閉數(shù)據(jù)庫的操作,在系統(tǒng)構(gòu)成復(fù)雜時也會變得不容易。另外,如果夜間作業(yè)時間不允許在完成數(shù)據(jù)庫完全備份之后再安裝PSR,則安裝PSR的日期應(yīng)該選擇在例行的數(shù)據(jù)庫完全備份的下一個晚上,只備份重做日志。
在安裝PSR之前備份DBMS軟件的目的是,由于安裝PSR會對許多程序和庫函數(shù)進(jìn)行更新,如果安裝PSR中途失?。m然可能性非常?。?,有可能造成DBMS軟件出現(xiàn)不一致。另外一種可能的情形是,在安裝PSR,更新數(shù)據(jù)字典后,測試應(yīng)用系統(tǒng)時,出現(xiàn)了某種異常,原因不明,最終決定放棄PSR。如果操作之前沒有備份,則此時只有重新安裝軟件一種選擇(PSR不同于完整軟件安裝,在oui中無法單獨(dú)卸載PSR軟件)。
對文件、目錄和文件系統(tǒng)的備份,最簡單的方式可以使用cp、tar、dump等命令完成。如果希望縮短文件拷貝時間,可以考慮分區(qū)備份的方法。分區(qū)備份常用的命令是dd。但是,分區(qū)拷貝比文件拷貝速度快的前提是良好的分區(qū)設(shè)計(jì):Oracle軟件單獨(dú)占一個大小適中(如4GB)的分區(qū),這樣扇區(qū)拷貝才會體現(xiàn)優(yōu)勢,這也就是為什么在安裝軟件時,Oracle建議單獨(dú)使用一個分區(qū)安裝軟件的原因之一。
在制定實(shí)施計(jì)劃時,應(yīng)認(rèn)真閱讀Patch Set Notes中有關(guān)操作前準(zhǔn)備工作一節(jié)。在這節(jié)內(nèi)會介紹對于一些特殊系統(tǒng)構(gòu)成,如果你的系統(tǒng)屬于文檔中提到的構(gòu)成,一定要首先閱讀文內(nèi)提示的相關(guān)技術(shù)文章,找到正確的安裝步驟。
使用oui, PSR軟件安裝完成后,一定不要忘記更新數(shù)據(jù)字典這一步驟。如果在這一ORACLE_HOME下生成了多個數(shù)據(jù)庫,則每個數(shù)據(jù)庫都必須更新數(shù)據(jù)字典。
. 實(shí)施操作
制訂一個詳細(xì)的計(jì)劃后,實(shí)施操作就可以“照本宣科”,是一個簡單的體力勞動。要認(rèn)識到“忙中出錯”的概率遠(yuǎn)比“急中生智”大得多,操作時盡量減少失誤的可能性。例如,需要執(zhí)行的復(fù)雜命令,盡可能從一個文件拷貝到終端執(zhí)行,而不要現(xiàn)場輸入。另外,在實(shí)施過程中,要記錄各個階段實(shí)際的執(zhí)行時間,以供以后制訂類似計(jì)劃時參考。
5. 檢查操作結(jié)果并記錄備案
執(zhí)行一個操作,操作是否成功,一定要進(jìn)行檢查,不能簡單認(rèn)為沒有出錯信息就是成功。要知道驗(yàn)證的方法。除去極個別極費(fèi)時間的驗(yàn)證(分區(qū)備份的內(nèi)容是否可以成功恢復(fù)系統(tǒng),必須恢復(fù)分區(qū),啟動數(shù)據(jù)庫,測試應(yīng)用系統(tǒng)后才能確認(rèn)),其余操作都應(yīng)進(jìn)行驗(yàn)證。所有屏幕輸出信息和日志文件都應(yīng)保留,作為安裝報告的附件提交給上級或客戶。
在屏幕輸出或日志文件中出現(xiàn)異常/錯誤信息時,應(yīng)即時分析,決定馬上采取的措施。出現(xiàn)嚴(yán)重錯誤時,可能需要重新執(zhí)行某一SQL程序,或者重新安裝PSR。所以在制訂實(shí)施計(jì)劃時應(yīng)在時間上留出異常情況處理的時間。
下面給出一個在Linux平臺上安裝10.1的PSR的實(shí)例,給從未安裝PSR的讀者有一個感性認(rèn)識。
操作系統(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)行比較,兩個版本沒有實(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引入的影響最大的一個Bug是執(zhí)行SELECT MAX()在某些特定條件下結(jié)果不正確。而這一Bug可以通過設(shè)置事件(event)關(guān)閉FIRST ROW優(yōu)化而避免。最后的結(jié)論是這一BUG不會對本系統(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即可開始文件拷貝。
要注意窗口中會出現(xiàn)本次安裝的日志文件的文件路徑和文件名。文件的位置是在Oracle的inventory所在目錄的子目錄logs中,文件名由前綴InstallActions和安裝日期時間組成,如: InstallActions2006-08-30-11-32-48AM.log。
正常結(jié)束后,退出oui。打開日志文件,檢索是否出現(xiàn)error 或“ORA-”的錯誤信息。本次安裝產(chǎn)生的日志文件內(nèi),沒有任何此類的信息,表明PSR軟件安裝成功。如果此時再次啟動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ù)據(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檢查是否有錯誤“ORA-”。(這一文件在啟動sqlplus時的當(dāng)前目錄中,當(dāng)然也可以在“SPOOL patch.log”語句中顯式指定文件路徑。)如果出現(xiàn)錯誤要分析原因,在解決問題后,需要再次執(zhí)行catpatch.sql程序。
更新數(shù)據(jù)字典時,由于對某些PL/SQL包刪除后又重新生成,造成相關(guān)PL/SQL包的狀態(tài)為異常(invalid)。在以后調(diào)用這些包時,檢測到其狀態(tài)為非法,會自動執(zhí)行編譯命令,使?fàn)顟B(tài)成為正常(valid)。雖然不會出錯,但會造成個別處理第一次執(zhí)行時變慢。顯然,與其留到應(yīng)用系統(tǒng)運(yùn)行時再一個個編譯,不如之前集中一次重編譯所有異常包。
SQL SHUTDOWN
SQL STARTUP
SQL @?/rdbms/admin/utlrp.sql
最后,根據(jù)Known Issues中的指示,完成與本系統(tǒng)有關(guān)的操作。例如,修改Pro*C的配置文件。這里執(zhí)行一個修改文件存取權(quán)限的“后操作”,以便非同組用戶和程序可以存取客戶端工具和庫函數(shù)。
$ cd $ORACLE_HOME/install
$ ./ changePerm.sh
個別補(bǔ)丁管理工具opatch
如前所述,在發(fā)布一個PSR后發(fā)現(xiàn)的新BUG,只能把其補(bǔ)丁收入到下一個PSR中。如果對數(shù)據(jù)庫有實(shí)質(zhì)性影響,則這一補(bǔ)丁以個別補(bǔ)丁的形式向用戶提供。個別補(bǔ)丁是與某一個特定的PSR關(guān)聯(lián),是安裝在這一PSR之上的。另外,如同其名字表明的,個別補(bǔ)丁只是單一Bug的補(bǔ)丁,不會包含其他個別補(bǔ)丁,即不是累積型的。
在9.2版之前,安裝個別補(bǔ)丁的操作完全是手工的。這種手工方式的缺點(diǎn)不僅在于加重DBA的負(fù)擔(dān),容易造成操作失誤,更嚴(yán)重的是無法對已安裝的個別補(bǔ)丁進(jìn)行管理。
為解決手工方式的缺陷,從9.2版開始,Oracle公司設(shè)計(jì)實(shí)現(xiàn)了個別補(bǔ)丁安裝管理工具opatch。opatch使用一個稱為 inventory的系統(tǒng)數(shù)據(jù)結(jié)構(gòu)(嚴(yán)格說是與oui共享inventory),集中管理所有已安裝的個別補(bǔ)??;個別補(bǔ)丁的安裝和卸載都使用opatch 命令完成,沖突檢測也由opatch在安裝時自動完成;提供列表命令可以很方便得到已安裝個別補(bǔ)丁的信息。
10g(10.1和10.2)版本中,opatch作為一個標(biāo)準(zhǔn)工具,在軟件安裝時自動安裝。(安裝在$ORACLE_HOME/OPatch 下。)而對于9.2版,需要從metalink下載opatch。無論數(shù)據(jù)庫是哪一個版本,系統(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來說一個好消息是,如果安裝9.2版軟件時保留了HTTP服務(wù)器,則在$ORACLE_HOME/Apache下會自動安裝perl。(10g會自動安裝配置perl 和opatch。)
opatch命令格式為:
opatch command [ command_options ] [ -h[elp] ]
命令有:apply(安裝個別補(bǔ)丁)、rollback(卸載個別補(bǔ)?。?、lsinventory(對inventory進(jìn)行列表)、query (顯示某一個別補(bǔ)丁的詳細(xì)信息)、version(顯示opatch版本信息)。在opatch目錄下,有用戶使用指南文件(Users_Guide.txt),其中有詳細(xì)的命令格式和使用示例,讀者可以參考。Opatch執(zhí)行操作時,除在屏幕輸出結(jié)果外,還生成日志文件。日志文件的路徑和文件名格式如下:
$ORACLE_HOME/.patch_storage/ patch_id / action - patch_id _ mm-dd-yyyy_hh-mi-ss .log
其中“patch_id”是Oracle技術(shù)支持部門為個別補(bǔ)丁分配的編號。
4. 個別補(bǔ)丁安裝實(shí)例
沿用安裝PSR實(shí)例中的環(huán)境。在安裝PSR10.1.0.5后,檢索metalink,發(fā)現(xiàn)若干在其之上的個別補(bǔ)丁。選擇其中之一安裝。
個別補(bǔ)丁Patch 4518443修復(fù)BUG4518443,這一BUG的主要問題是TNS LISTENER在注冊O(shè)NS(Oracle Notification Services)的同時如果創(chuàng)建子進(jìn)程,那么LISTENER會掛起(HANGUP)。
安裝時,首先,從metalink下載補(bǔ)丁的壓縮文件p4518443_10105_LINUX.zip。將此文件解壓縮至某一目錄中。解壓縮后,這一補(bǔ)丁的所有文件都在子目錄4518443下,目錄名就是個別補(bǔ)丁的補(bǔ)丁號,opatch依據(jù)目錄名獲得信息,所以一定不要重命名子目錄。
然后,在終端窗口中,執(zhí)行cd命令移動到4518443子目錄中,執(zhí)行以下命令:
$ $ORACLE_HOME/OPatch/opatch apply
對inventory列表,確認(rèn)安裝操作:
$ $ORACLE_HOME/OPatch/opatch lsinventory
執(zhí)行卸載命令時,也必須使4518443子目錄成為當(dāng)前目錄。其中,Rollback命令需要兩個參數(shù):-id給出個別補(bǔ)丁號;-ph 給出個別補(bǔ)丁解壓縮后的路徑。
$ $ORACLE_HOME/OPatch/opatch rollback -id 4518443 -ph /…/4518443
隨后再對inventory列表,則會看到這一個別補(bǔ)丁已經(jīng)被移去。
4. 使用opatch顯示已安裝的版本信息
不需要啟動數(shù)據(jù)庫,執(zhí)行加選項(xiàng)的對inventory的列表命令,可以得到已安裝的軟件的各個組件的詳細(xì)版本信息。
$ $ORACLE_HOME/OPatch/opatch lsinventory -detail
安全補(bǔ)丁CPU
一個CPU內(nèi)包含了對多個安全漏洞的修復(fù),并且也包括相應(yīng)必需的非安全漏洞的補(bǔ)丁。CPU是累積型的,只要安裝最新發(fā)布的CPU即可,其中包括之前發(fā)布的所有CPU的內(nèi)容。事實(shí)上,在CPU之前的安全漏洞修改除去個別例外也被包括在CPU中。Oracle公司只對處于標(biāo)準(zhǔn)技術(shù)支持和延長支持期間的產(chǎn)品提供CPU更新,對處于維持支持范圍的產(chǎn)品不提供新的CPU。(對于9.2以前的版本,只對處于ECS和EMS期間的版本提供CPU更新。)一般對當(dāng)前補(bǔ)丁發(fā)行版及前一個版本提供CPU,但也有只限于當(dāng)前補(bǔ)丁發(fā)行版的例外情形。也就是說,一般需要先安裝最新PSR后才可能安裝CPU。由于是累積型的定期發(fā)布,所以對于某一平臺的某一版本,如果兩次CPU發(fā)布期間沒有發(fā)現(xiàn)新的安全漏洞,則新發(fā)布的CPU與前一版本完全相同。
1、 環(huán)境介紹
我們選擇11gR2作為實(shí)驗(yàn)環(huán)境。
SQL select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
在安裝目錄$ORACLE_HOME下,是自帶一個OPatch工具包的。一般小版本的升級,都是通過OPatch來完成。
[oracle@bsplinux ~]$ cd $ORACLE_HOME
[oracle@bsplinux oracle]$ ls -l | grep OPatch
drwxr-xr-x 8 oracle oinstall 4096 Oct 23 20:00 OPatch
不過,同Oracle自帶的Uninstall一樣,11.2.0.1自帶的OPatch的版本是不能提供升級功能的。所以,我們通常需要首先升級OPatch,之后才能進(jìn)行打補(bǔ)丁。
2、OPatch升級
首先,我們需要確定當(dāng)前的OPatch版本。進(jìn)入OPatch目錄之后,可以通過版本首先確認(rèn)。
[oracle@bsplinux OPatch]$ ls -l
total 92
drwxr-xr-x 2 oracle oinstall 4096 May 22 16:16 docs
-rw-r--r-- 1 oracle oinstall 21576 May 6 2009 emdpatch.pl
drwxr-xr-x 2 oracle oinstall 4096 May 22 16:16 jlib
drwxr-xr-x 5 oracle oinstall 4096 May 22 16:16 ocm
-rwxr-xr-x 1 oracle oinstall 8709 May 6 2009 opatch
-rw-r--r-- 1 oracle oinstall 49 May 22 16:22 opatch.ini
-rw-r--r-- 1 oracle oinstall 2576 May 6 2009 opatch.pl
drwxr-xr-x 4 oracle oinstall 4096 May 22 16:16 opatchprereqs
[oracle@bsplinux OPatch]$ ./opatch version
Invoking OPatch 11.1.0.6.6
OPatch Version: 11.1.0.6.6
OPatch succeeded.
11.2.0.1自帶的OPatch版本為11.1.0.6.6,我們需要首先升級OPatch。第一步是進(jìn)行原有OPatch備份。
[oracle@bsplinux oracle]$ tar zcvf opatch_bk.tar OPatch
OPatch/
OPatch/opatchprereqs/
OPatch/opatchprereqs/prerequisite.properties
(篇幅原因,省略部分內(nèi)容)
OPatch/jlib/opatchprereq.jar
OPatch/opatch
OPatch/opatch.ini
[oracle@bsplinux oracle]$ ls -l | grep opatch
-rw-r--r-- 1 oracle oinstall 1187195 Oct 23 19:06 opatch_bk.tar
最新版本的OPatch可以從MOS上面下載到,補(bǔ)丁文件名稱為:p6880880_112000_LINUX.zip(For Linux 32)。
[oracle@bsplinux upload]$ ls -l | grep p688
-rw-r--r-- 1 root root 32510812 Oct 23 19:58 p6880880_112000_LINUX.zip
--解壓到ORACLE_HOME目錄上
[oracle@bsplinux upload]$ unzip p6880880_112000_LINUX.zip -d $ORACLE_HOME
Archive: p6880880_112000_LINUX.zip
creating: /u01/app/oracle/OPatch/oplan/
(篇幅原因,省略部分……)
inflating: /u01/app/oracle/OPatch/crs/s_crsconfig_defs
inflating: /u01/app/oracle/OPatch/crs/s_crsconfig_lib.pm
之后,驗(yàn)證OPatch安裝成功。
[oracle@bsplinux OPatch]$ ./opatch version
OPatch Version: 11.2.0.3.0
OPatch succeeded.
[oracle@bsplinux OPatch]$
3、補(bǔ)丁安裝
如果OPatch不是最新的版本,直接安裝PSU可能會有各種的問題。更新OPatch之后,我們就可以下載對應(yīng)的PSU進(jìn)行更新。
[oracle@bsplinux upload]$ ls -l | grep p12
-rw-r--r-- 1 root root 18510829 Oct 23 19:35 p12419378_112010_LINUX.zip
[oracle@bsplinux upload]$ unzip p12419378_112010_LINUX.zip -d $ORACLE_HOME
(省略)
[oracle@bsplinux oracle]$ cd 12419378/
[oracle@bsplinux 12419378]$ ls -l
total 60
drwxr-xr-x 3 oracle oinstall 4096 Jul 8 2011 custom
drwxr-xr-x 4 oracle oinstall 4096 Jul 8 2011 etc
drwxr-xr-x 12 oracle oinstall 4096 Jul 8 2011 files
-rwxr-xr-x 1 oracle oinstall 2871 Jul 8 2011 patchmd.xml
-rw-rw-r-- 1 oracle oinstall 40790 Jul 18 2011 README.html
-rw-r--r-- 1 oracle oinstall 21 Jul 8 2011 README.txt
將數(shù)據(jù)庫和監(jiān)聽程序關(guān)閉。
[oracle@bsplinux OPatch]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Tue Oct 23 19:26:11 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL conn / as sysdba
Connected.
SQL shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL quit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@bsplinux OPatch]$ lsnrctl stop
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 23-OCT-2012 19:26:55
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
The command completed successfully
網(wǎng)站標(biāo)題:oracle如何大補(bǔ)丁,oracle補(bǔ)丁升級
URL地址:http://jinyejixie.com/article46/dssdghg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、外貿(mào)建站、網(wǎng)站改版、商城網(wǎng)站、虛擬主機(jī)、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)