oracle補丁安裝


1 術語
==================================================================
PSR: 基礎版本,如11.2.0.4
PSU: 基礎版本的升級包,包插安全補丁與BUG修復
SPU(CPU):僅安全補丁
Bundle Patches:windows上的PSU。

2 下載
==================================================================
Download Reference for Oracle Database/GI PSU, SPU(CPU), Bundle Patches, Patchsets and Base Releases (文檔 ID 2118136.2)
opatch下載: https://updates.oracle.com/download/6880880.html

3 安裝
==================================================================
閱讀Readme文檔
每個CPU/PSU都有一個Readme文檔,關於該CPU/PSU的所有信息都在Readme文檔里,一定要仔細閱讀。
有兩個部分要特別注意:
1)OPatch的版本,你可以通過opatch version命令查看Oracle Home當前的OPatch版本,如果低於Readme規定的最低版本,一定要先升級OPatch才能打補丁。
2)打Patch步驟:基本上所有的CPU/PSU都大同小異,具體步驟將在下面的例子中展示。
安裝CPU/PSU補丁
1)事先檢查:查看數據庫打補丁前信息,保留現場
在打補丁前最好把數據庫的一些基本信息保留下來,


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
--查看實例名
sys@ORCL>select instance_name,status from v$instance;
INSTANCE_NAME    STATUS
---------------- ------------
orcl             OPEN
--查看數據庫版本
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
--查看數據庫大小
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.
--查看補丁情況
sys@ORCL>select ACTION_TIME, ACTION, COMMENTS from sys.DBA_REGISTRY_HISTORY;
no rows selected
--查看無效對象
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)備份數據庫
這里對全庫進行備份,以防打補丁出現意外,可以從備份集中恢復數據。
先關閉監聽器,關閉數據庫實例,將其啟到mount狀態,然后用rman進行冷備。
3)備份Oracle軟件
把Oracle軟件打包備份
4)安裝Opatch

--首先,查看當前的OPatch版本
[oracle@data ~]$ opatch version
Invoking OPatch 11.1.0.6.6
OPatch Version: 11.1.0.6.6
OPatch succeeded.
--如果當前的Opatch版本不夠,下載最新的Opatch,覆蓋原來的opatch即可
[oracle@data psu_jul_2011]$ unzip p6880880_112000_Linux-x86-64.zip
--unzip之后,在當前文件夾下出現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)安裝補丁(Oracle軟件部分)
首先,通過opatch lsinventory 查看之前打過的補丁信息。
然后解壓縮補丁文件:

[oracle@data psu_jul_2011]$ unzip p12419378_112010_Linux-x86-64.zip
[oracle@data psu_jul_2011]$ cd 12419378

最后在補丁的主目錄下執行opatch apply,等待5~10分鍾即可(注意:一定要先完全關閉數據庫和監聽器)

[oracle@data 12419378]$ pwd
/home/oracle/psu_jul_2011/12419378
[oracle@data 12419378]$ opatch apply

如果最后有warnings一般都沒什么問題,只要不是error就好。
6)安裝補丁(數據庫部分)
這步比較簡單,就是跑catbundle腳本,但時間比較長,10分鍾左右(視機器性能而定)

cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> STARTUP
SQL> @catbundle.sql psu apply
SQL> QUIT

7)重新編譯CPU相關視圖 (如果是PSU可略過次步驟)
該步驟在一個數據庫上永遠只需要執行一次,是為了完成CPU補丁時的后續工作,如果在安裝以前的PSU或者CPU時執行過這個步驟那么就可以無需再次執行,另外,即使不執行該步驟,數據庫也是正常運行的,只不過意味本次CPU補丁沒有正常結束安裝。

SQL> SELECT * FROM registry$history where ID = '6452863';

上面這條語句用於判斷是否已經執行過,如果有行數返回,說明已經執行過,可跳過該步驟;
如果沒有行數返回,則可根據以下步驟重新編譯CPU/PSU相關視圖:

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)步的事先檢查對照
先編譯無效對象:

@?/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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM