[Oracle] CPU/PSU補(bǔ)丁安裝詳細(xì)教程
什么是CPU/PSU
Oracle CPU的全稱是Critical Patch Update, Oracle對(duì)于其產(chǎn)品每個(gè)季度發(fā)行一次安全補(bǔ)丁包,通常是為了修復(fù)產(chǎn)品中的安全隱患。
Oracle PSU的全稱是Patch Set Update,Oracle對(duì)于其產(chǎn)品每個(gè)季度發(fā)行一次的補(bǔ)丁包,包含了bug的修復(fù)。Oracle選取被用戶下載數(shù)量多,且被驗(yàn)證過具有較低風(fēng)險(xiǎn)的補(bǔ)丁放入到每個(gè)季度的PSU中。在每個(gè)PSU中不但包含Bug的修復(fù)而且還包含了最新的CPU。PSU通常隨CPU一起發(fā)布。
CPU是累積的(Cumulative),即最新的CPU補(bǔ)丁已經(jīng)包含以往的CPU補(bǔ)丁,所以只要安裝最新的CPU補(bǔ)丁即可。
PSU通常也是增量的,大部分PSU可以直接安裝,但有些PSU則必須要求安裝了上一 個(gè)版本的PSU之后才能繼續(xù)安裝,要仔細(xì)看各個(gè)PSU的Readme文檔。
如何下載CPU/PSU
注意:要下載CPU/PSU,必須要有Oracle Support賬號(hào)才行!
到Oracle CPU主頁 ,可以看到每個(gè)季度發(fā)布的CPU補(bǔ)丁列表(如下圖所示),根據(jù)你的需要選擇相應(yīng)的CPU補(bǔ)丁即可,這里選擇July2011年的補(bǔ)丁。
每個(gè)補(bǔ)丁只針對(duì)特定的數(shù)據(jù)庫版本,你要找到對(duì)應(yīng)的數(shù)據(jù)庫版本(如下圖所示),這里的數(shù)據(jù)庫版本為11.2.0.1,如果找不到,說明該補(bǔ)丁不支持該版本數(shù)據(jù)庫。

右邊點(diǎn)擊Database鏈接,就是該補(bǔ)丁的一個(gè)詳細(xì)說明文檔,找到3.1.3 Oracle Database,并點(diǎn)擊相應(yīng)的數(shù)據(jù)庫版本(如下圖所示)



閱讀Readme文檔
每個(gè)CPU/PSU都有一個(gè)Readme文檔,關(guān)于該CPU/PSU的所有信息都在Readme文檔里,一定要仔細(xì)閱讀。
有兩個(gè)部分要特別注意:
1)OPatch的版本,你可以通過opatch version命令查看Oracle Home當(dāng)前的OPatch版本,如果低于Readme規(guī)定的最低版本,一定要先升級(jí)OPatch才能打補(bǔ)丁。
2)打Patch步驟:基本上所有的CPU/PSU都大同小異,具體步驟將在下面的例子中展示。
安裝CPU/PSU補(bǔ)丁
1)事先檢查:查看數(shù)據(jù)庫打補(bǔ)丁前信息,保留現(xiàn)場(chǎng)
在打補(bǔ)丁前最好把數(shù)據(jù)庫的一些基本信息保留下來,以備不時(shí)之需。
set line 150
set pagesize 99
col action_time for a30
col action for a30
col comments for a90
col object_name for a30
col object_type for a30
col comp_name for a50
col comp_id for a20
--查看實(shí)例名
sys@ORCL>select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
orcl OPEN
--查看數(shù)據(jù)庫版本
sys@ORCL>select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
--查看數(shù)據(jù)庫大小
sys@ORCL>select sum(bytes)/1024/1024||'M' from dba_segments;
SUM(BYTES)/1024/1024||'M'
-----------------------------------------
68058.375M
--查看組件信息
sys@ORCL>select COMP_ID,COMP_NAME,VERSION,STATUS from DBA_REGISTRY;
COMP_ID COMP_NAME VERSION STATUS
-------------------- -------------------------------------------------- ------------------------------ ----------------------
OWB OWB 11.2.0.1.0 VALID
APEX Oracle Application Express 3.2.1.00.10 VALID
EM Oracle Enterprise Manager 11.2.0.1.0 VALID
AMD OLAP Catalog 11.2.0.1.0 VALID
SDO Spatial 11.2.0.1.0 VALID
ORDIM Oracle Multimedia 11.2.0.1.0 VALID
XDB Oracle XML Database 11.2.0.1.0 VALID
CONTEXT Oracle Text 11.2.0.1.0 VALID
EXF Oracle Expression Filter 11.2.0.1.0 VALID
RUL Oracle Rules Manager 11.2.0.1.0 VALID
OWM Oracle Workspace Manager 11.2.0.1.0 VALID
CATALOG Oracle Database Catalog Views 11.2.0.1.0 VALID
CATPROC Oracle Database Packages and Types 11.2.0.1.0 VALID
JAVAVM JServer JAVA Virtual Machine 11.2.0.1.0 VALID
XML Oracle XDK 11.2.0.1.0 VALID
CATJAVA Oracle Database Java Packages 11.2.0.1.0 VALID
APS OLAP Analytic Workspace 11.2.0.1.0 VALID
XOQ Oracle OLAP API 11.2.0.1.0 VALID
18 rows selected.
--查看補(bǔ)丁情況
sys@ORCL>select ACTION_TIME, ACTION, COMMENTS from sys.DBA_REGISTRY_HISTORY;
no rows selected
--查看無效對(duì)象
sys@ORCL>select count(*) from dba_objects where status<>'VALID';
COUNT(*)
----------
123
sys@ORCL> select object_name,object_type,owner,status from dba_objects where status<>'VALID';
sys@ORCL>spool off
2)備份數(shù)據(jù)庫
這里對(duì)全庫進(jìn)行備份,以防打補(bǔ)丁出現(xiàn)意外,可以從備份集中恢復(fù)數(shù)據(jù)。
先關(guān)閉監(jiān)聽器,關(guān)閉數(shù)據(jù)庫實(shí)例,將其啟到mount狀態(tài),然后用rman進(jìn)行冷備。
3)備份Oracle軟件
把Oracle軟件打包備份
4)安裝Opatch
--首先,查看當(dāng)前的OPatch版本
[oracle@data ~]$ opatch version
Invoking OPatch 11.1.0.6.6
OPatch Version: 11.1.0.6.6
OPatch succeeded.
--如果當(dāng)前的Opatch版本不夠,下載最新的Opatch,覆蓋原來的opatch即可
[oracle@data psu_jul_2011]$ unzip p6880880_112000_Linux-x86-64.zip
--unzip之后,在當(dāng)前文件夾下出現(xiàn)OPatch文件夾
[oracle@data psu_jul_2011]$ mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch_20130705
[oracle@data psu_jul_2011]$ cp -r ./OPatch $ORACLE_HOME
[oracle@data psu_jul_2011]$ opatch version
OPatch Version: 11.2.0.3.4
OPatch succeeded.
5)安裝補(bǔ)丁(Oracle軟件部分)
首先,通過opatch lsinventory 查看之前打過的補(bǔ)丁信息。
然后解壓縮補(bǔ)丁文件:
[oracle@data psu_jul_2011]$ unzip p12419378_112010_Linux-x86-64.zip
[oracle@data psu_jul_2011]$ cd 12419378
最后在補(bǔ)丁的主目錄下執(zhí)行opatch apply,等待5~10分鐘即可(注意:一定要先完全關(guān)閉數(shù)據(jù)庫和監(jiān)聽器)
[oracle@data 12419378]$ pwd
/home/oracle/psu_jul_2011/12419378
[oracle@data 12419378]$ opatch apply
如果最后有warnings一般都沒什么問題,只要不是error就好。
6)安裝補(bǔ)?。〝?shù)據(jù)庫部分)
這步比較簡(jiǎn)單,就是跑catbundle腳本,但時(shí)間比較長(zhǎng),10分鐘左右(視機(jī)器性能而定)
cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> STARTUP
SQL> @catbundle.sql psu apply
SQL> QUIT
7)重新編譯CPU相關(guān)視圖 (如果是PSU可略過次步驟)
該步驟在一個(gè)數(shù)據(jù)庫上永遠(yuǎn)只需要執(zhí)行一次,是為了完成在2008年1月份第一次發(fā)布CPU補(bǔ)丁時(shí)的后續(xù)工作,如果在安裝以前的PSU或者CPU時(shí)執(zhí)行過這個(gè)步驟那么就可以無需再次執(zhí)行,另外,即使不執(zhí)行該步驟,數(shù)據(jù)庫也是正常運(yùn)行的,只不過意味著2008年1月份的 CPU補(bǔ)丁沒有正常結(jié)束安裝。
SQL> SELECT * FROM registry$history where ID = '6452863';
上面這條語句用于判斷是否已經(jīng)執(zhí)行過,如果有行數(shù)返回,說明已經(jīng)執(zhí)行過,可跳過該步驟;
如果沒有行數(shù)返回,則可根據(jù)以下步驟重新編譯CPU/PSU相關(guān)視圖:
cd $ORACLE_HOME/cpu/view_recompile
sqlplus / as sysdba
SQL> @recompile_precheck_jan2008cpu.sql
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP UPGRADE
SQL> @view_recompile_jan2008cpu.sql
SQL> SHUTDOWN;
SQL> STARTUP;
SQL> QUIT
8)事后檢查
該步驟可以和第1)步的事先檢查對(duì)照
先編譯無效對(duì)象:
@?/rdbms/admin/utlrp.sql
set line 150
set pagesize 99
col action_time for a30
col action for a30
col comments for a90
col object_name for a30
col object_type for a30
col comp_name for a50
col comp_id for a20
SQL> spool post_check.log
SQL> select instance_name,status from v$instance;
SQL> select COMP_ID,COMP_NAME,VERSION,STATUS from DBA_REGISTRY;
SQL> select ACTION_TIME, ACTION, COMMENTS from DBA_REGISTRY_HISTORY;
SQL> select owner,object_name,object_type,status from dba_objects where status<>'VALID';
SQL> select count(*) from dba_objects where status<>'VALID';
SQL> spool off
相關(guān)文章
Oracle使用RMAN備份數(shù)據(jù)庫的流程步驟
使用 RMAN(Recovery Manager)備份 Oracle 數(shù)據(jù)庫是確保數(shù)據(jù)安全和可恢復(fù)性的關(guān)鍵步驟,下面是詳細(xì)的指導(dǎo)和代碼示例,展示如何使用 RMAN 進(jìn)行數(shù)據(jù)庫備份,感興趣的小伙伴跟著小編一起來看看吧2024-09-09
Oracle 數(shù)據(jù)顯示 橫表轉(zhuǎn)縱表
橫表轉(zhuǎn)縱表亦可用與decode意義相似的case語句實(shí)現(xiàn),原理同該語句,這里不再過多描述。2009-07-07
oracle10g 數(shù)據(jù)備份與導(dǎo)入
oracle10g 數(shù)據(jù)備份與導(dǎo)入 實(shí)現(xiàn)方法2009-06-06
深入淺析mybatis oracle BLOB類型字段保存與讀取
本文給大家淺析mybatis oracle blob類型字段的保存與讀取,blob字段是指二進(jìn)制大對(duì)象,用來存儲(chǔ)大量文本數(shù)據(jù)。感興趣的朋友一起學(xué)習(xí)吧2015-10-10
在Oracle數(shù)據(jù)庫表中加載多個(gè)數(shù)據(jù)文件的方法詳解
這篇文章主要給大家介紹了在Oracle數(shù)據(jù)庫表中加載多個(gè)數(shù)據(jù)文件的方法,本文中,我將展示 SQL 加載器 + Unix 腳本實(shí)用程序的強(qiáng)大功能,其中 SQL 加載器可以使用自動(dòng) shell 腳本加載多個(gè)數(shù)據(jù)文件,需要的朋友可以參考下2024-01-01
Oracle數(shù)據(jù)庫表空間滿了的問題處理方法
在Oracle數(shù)據(jù)庫管理中,表空間是一個(gè)重要的概念,用于存儲(chǔ)數(shù)據(jù)庫對(duì)象和數(shù)據(jù),當(dāng)表空間滿了時(shí),可能會(huì)導(dǎo)致數(shù)據(jù)庫的運(yùn)行受到影響,本文將介紹如何診斷和處理 Oracle 數(shù)據(jù)庫中表空間滿的問題,并給出相應(yīng)的 SQL 命令,需要的朋友可以參考下2024-03-03
Oracle通過LogMiner實(shí)現(xiàn)數(shù)據(jù)同步遷移
這篇文章主要介紹了Oracle通過LogMiner實(shí)現(xiàn)數(shù)據(jù)同步遷移的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07

