一篇關於oracle psu的文章
1. 什麼是PSU/CPU?
CPU: Critical Patch Update
Oracle對於其產品每個季度發行一次的安全補丁包,通常是為了修復產品中的安全隱患。
PSU: Patch Set Updates
Oracle對於其產品每個季度發行一次的補丁包,包含了bug的修復。Oracle選取被使用者下載數量多的,並且被驗證過具有較低風險的補丁放入到每個季度的PSU中。在每個PSU中不但包含Bug的修復而且還包含了最新的CPU。
2. 如何查詢最新的PSU?
每個資料庫版本都有自己的PSU,PSU版本號體現在資料庫版本的最後一位,比如最新的10.2.0.5的PSU是10.2.0.5.3,而11.2.0.2的最新PSU則是11.2.0.2.2。
站點中Oracle Recommended Patches — Oracle Database [ID 756671.1] 文件中查到各個產品版本最新的PSU。
如果你記不住這個文件號,那麼在MOS中以“PSU”為關鍵字搜尋,通常這個文件會顯示在搜尋結果的最前面。
注意:必須購買了Oracle基本服務獲取了CSI號以後才有許可權登陸MOS站點。
3. 如何正確安裝PSU?
每個PSU安裝包中都包含一個README.html文件,其中描述瞭如何安裝該PSU,有些PSU是可以直接安裝的,而有些PSU則必須要求安裝了上一 個版本的PSU之後才能繼續安裝。比如對於10.2.0.4版本的資料庫來說,PSU 10.2.0.4.4可以直接安裝在最原始的10.2.0.4.0版本中,而最新的PSU 10.2.0.4.8則必須要求先安裝10.2.0.4.4。這些資訊在README.html中都可以找到,所以請仔細閱讀該文件。
通常安裝PSU是比較簡單的,步驟如下:
1) 安裝PSU需要使用到opatch,在README.html中有描述該PSU需要的最低版本opatch,如果當前opatch版本過低,則需要先下載 Patch 6880880,該Patch中包含最新的opatch,只需要解壓覆蓋原先的$ORACLE_HOME/OPatch目錄即可。
檢視當前的opatch版本,可以使用opatch version命令。
$ opatch version
Invoking OPatch 10.2.0.5.2
OPatch Version: 10.2.0.5.2
OPatch succeeded.
2)安裝PSU,請仔細閱讀README.html,確認安裝命令,通常是簡單的opatch apply。
3)更新資料庫,將修改過的SQL檔案應用到資料庫中,很多DBA在執行完上述安裝命令以後就不再進行這一步,那麼實際上PSU是沒有完整安裝的。
cd $ORACLE_HOME/rdbms/admin
sqlplus / as sysdba
SQL> STARTUP
SQL> @catbundle.sql psu apply
SQL> QUIT
注意:如果PSU是overlay PSU,比如10.2.0.4.8,則需要執行@catbundle.sql opsu apply,同樣這些在README.html中都有詳細描述。
4)重新編譯CPU相關檢視。該步驟在一個資料庫上永遠只需要執行一次,是為了完成在2008年1月份第一次釋出CPU補丁時的後續工作,如果在安 裝以前的PSU或者CPU時執行過這個步驟那麼就可以無需再次執行,另外,即使不執行該步驟,資料庫也是正常執行的,只不過意味著2008年1月份的 CPU補丁沒有正常結束安裝。
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
注意:該步驟由於需要重新編譯大量檢視,因此要啟動資料庫到upgrade狀態才可以完成。也就是將引起停機時間。
4. 如何確認當前資料庫已經安裝了什麼PSU/CPU?
無論是從V$VERSION或者DBA_REGISTRY或者PRODUCT_COMPONENT_VERSION檢視中,都無法查詢到PSU的資訊,這些檢視中始終顯示的是最原始的版本,比如10.2.0.4.0。
最常用的方法是使用opatch命令。在打完最新的PSU 10.2.0.4.8的10.2.0.4資料庫中會有以下顯示。
$ opatch lsinventory -bugs_fixed | grep -i 'DATABASE PSU'
9654991 11724977 Wed May 25 16:37:17 CST 2011 DATABASE PSU 10.2.0.4.5 (REQUIRES PRE-REQUISITE
9952234 11724977 Wed May 25 16:37:17 CST 2011 DATABASE PSU 10.2.0.4.6 (REQUIRES PRE-REQUISITE
10248636 11724977 Wed May 25 16:37:17 CST 2011 DATABASE PSU 10.2.0.4.7 (REQUIRES PRE-REQUISITE
11724977 11724977 Wed May 25 16:37:17 CST 2011 DATABASE PSU 10.2.0.4.8 (REQUIRES PRE-REQUISITE
8576156 9352164 Wed May 25 15:10:48 CST 2011 DATABASE PSU 10.2.0.4.1 (INCLUDES CPUJUL2009)
8833280 9352164 Wed May 25 15:10:48 CST 2011 DATABASE PSU 10.2.0.4.2 (INCLUDES CPUOCT2009)
9119284 9352164 Wed May 25 15:10:48 CST 2011 DATABASE PSU 10.2.0.4.3 (INCLUDES CPUJAN2010)
9352164 9352164 Wed May 25 15:10:48 CST 2011 DATABASE PSU 10.2.0.4.4 (INCLUDES CPUAPR2010)
另外的方法是檢視registry$history表。
SQL> select action,comments from registry$history;
ACTION COMMENTS
------------------------------- --------------------
APPLY PSU 10.2.0.4.4
APPLY PSU 10.2.0.4.8
CPU view recompilation
注意:該表的內容是在上述安裝PSU步驟的第三步中執行catbundle.sql才會插入的,因此如果該步驟忘記執行,則此表中無記錄。因此我們在作資料庫健康檢查的時候不但要用opatch檢查當前資料庫最新的PSU補丁,也要檢查registry$history表,以確認其它DBA是否正確地完成了PSU的安裝。
如果多個PSU的安裝都忘記了執行上述第三步,可以透過以下方法依次補作。
$ ls -l $ORACLE_HOME/psu
total 0
drwxrwxrwx 2 oracle dba 96 Oct 16 2010 10.2.0.4.4
drwxrwxrwx 2 oracle dba 96 Oct 16 2010 10.2.0.4.5
$sqlplus / as sysdba
SQL> @?/psu/10.2.0.4.4/catpsu.sql
SQL> @?/psu/10.2.0.4.5/catopsu.sql
更多關於CPU的資訊,可以參看:Maclean的 。
5. 參考文件。
Oracle Recommended Patches — Oracle Database [ID 756671.1]
Patch Set Updates for Oracle Products [ID 854428.1]
Introduction To Oracle Database catbundle.sql [ID 605795.1]
How to confirm that a Critical Patch Update (CPU) has been installed in Linux / UNIX [ID 821263.1]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8484829/viewspace-2118640/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一篇關於Redis的好文章Redis
- 關於nagios的一篇很不錯的文章iOS
- 轉一篇關於JAVA 和 .NET的文章的比較Java
- 關於一篇文章引發的匿名函式的思考函式
- 這是一篇關於程式設計師學習的文章程式設計師
- 關於Oracle Database PSU/SPU/Bundle Patch的補丁號的變化OracleDatabase
- Oracle DB BP PSU,SPU關係Oracle
- 不錯的關於Oracle 全文索引的文章(zt)Oracle索引
- 在網上看到的一篇文章關於js和php編碼的JSPHP
- 關於Tungsten Fabic版本問題,這一篇文章說清了
- 在 CSDN 上面看到的一篇關於 Laravel 關聯表模型和多對多關係的文章Laravel模型
- 關於 Oracle 資料庫 PSU/SPU/Bundle Patch的補丁號變化Oracle資料庫
- 寫得非常好的一篇關於Oracle的SCNOracle
- 關於RxJava最友好的文章RxJava
- 關於字串的好文章字串
- ORACLE基於單機PSU應用方案Oracle
- 面試題-關於Java執行緒池一篇文章就夠了面試題Java執行緒
- 一篇和Redis有關的鎖和事務的文章Redis
- 我的第一篇文章:關於中國的計算機網路若干言 (轉)計算機網路
- 【PSU】Oracle打PSU及解除安裝PSU(單例項)Oracle單例
- 寫的很好的關於GoldenGate的文章Go
- 關於Code Review的文章讀後感View
- 關於RxJava最友好的文章(進階)RxJava
- 關於一些Vue的文章。(7)Vue
- 關於學習Mongodb的幾篇文章MongoDB
- 關於DataTable的兩篇基礎文章
- 有關於 QQ api 的文章網站API網站
- 【PSU】Oracle11g_psu_include_gridOracle
- Oracle PSU 簡介Oracle
- Oracle psu查詢Oracle
- 可能是最淺顯易懂的一篇文章,關於Python引用、賦值、複製Python賦值
- 一篇文章理解 golang 中切片與陣列的關係Golang陣列
- 一篇不錯的介紹Julia和matlab關係的文章Matlab
- 關於我對於寫部落格寫文章的理解
- 關於MySQL資料庫效能優化方法,看這一篇文章就夠了!MySql資料庫優化
- 關於RxJava最友好的文章——背壓(Backpressure)RxJava
- 再來一篇不錯的文章,討論Interface與Abstract的關係
- 一篇文章引發的思考