【PSU】Oracle打PSU及卸载PSU(单实例)
一、规划
数据库版本: Oracle 11.2.0.4 单实例
操作系统: Redhat 6.5 64-bit
PSU: p28204707_112040_Linux-x86-64.zip
OPatch: p6880880_112000_Linux-x86-64.zip
二、思路清晰1.打PSUstep1: 打PSU前环境检查
step2: 打PSU前全库备份
step3: 上传PSU包
step4: 阅读README.html
step5: 如果有必要,更新Opatch
step6: 软件打PSU
step7: database打PSU
step8: 打PSU后检查
2.卸载PSUstep1: 卸载软件PSU
step2: 卸载database PSU
step3: 卸载PSU后检查
三、注意事项1.阅读Readme文档每个CPU/PSU都有一个Readme文档,关于该CPU/PSU的信息都在Readme文档中,再打CPU/PSU之前一定要仔细阅读。
2.Opatch打PSU需要用到Opatch工具。Opatch的版本必须符合补丁包readme文档中版本要求,否则需要升级Opatch版本。
查看opatch版本
$ cd $ORACLE_HOME/OPatch
$ ./opatch version
四、打PSU前准备工作1.检查instance状态SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
orcl OPEN
2.检查数据库版本SQL> select * from v$version;
BANNER
-----------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
3.查看PSU情况SQL> set linesize 200
SQL> col comments for a30
SQL> select ACTION_TIME, ACTION, COMMENTS from sys.DBA_REGISTRY_HISTORY;
ACTION_TIME ACTION COMMENTS
---------------------------------------------------------------
24-AUG-13 12.03.45.119862 PM APPLY Patchset 11.2.0.2.0
30-JUL-18 10.04.26.133727 AM APPLY Patchset 11.2.0.2.0
4.查看无效对象SQL> select count(*) from dba_objects where status<>'VALID';
SQL>select object_name,object_type,owner,status from dba_objects where status<>'VALID';
5.确定定当前存在的one-off补丁是否和PSU冲突$ unzip p28204707_112040_Linux-x86-64.zip
$ cd 28204707
$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
6.数据库备份建议在打补丁之前对数据库进行RMAN全库备份,避免打补丁出现意外,可以从备份中进行恢复。
五、打补丁1.上传补丁包,解压$ unzip p28204707_112040_Linux-x86-64.zip
2.查看当前OPatch版本$ cd /u01/app/oracle/product/11.2.0/db_1/OPatch/
$ ./opatch version
OPatch Version: 11.2.0.3.4
3.更新Opatch如果发现Opatch版本低,下载最新的Opatch,覆盖原来的Opatch
$ ls
p6880880_112000_Linux-x86-64.zip
$ mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch_bak20200804
$ cp -r OPatch $ORACLE_HOME/
$ cd /u01/app/oracle/product/11.2.0/db_1/OPatch
$ ./opatch version
OPatch Version: 11.2.0.3.18
4.打PSU1)关闭Instance和listener
SQL> shutdown immediate;
SQL> exit
$ lsnrctl stop
2)查看当前PSU版本
$ $ORACLE_HOME/OPatch/opatch lsinv
3)安装PSU(软件PSU)
$ pwd
/home/oracle/28204707
$ $ORACLE_HOME/OPatch/opatch apply
最后可能会有warnings,可以忽略。如果是error就不能忽略。
4)安装PSU(database PSU)
$cd $ORACLE_HOME/rdbms/admin
$ sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> STARTUP
SQL> @catbundle.sql psu apply
SQL> QUIT
5)如果在之前的PSU中有OJVM PSU,那么我们在执行完catbundle.sql后可以看到一些无效的JAVA类,在这种情况下,运行以下命令
$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> @utlrp.sql
6)检查补丁日志看看有没有报错
$cd /u01/app/oracle/cfgtoollogs/catbundle
catbundle_PSU_<database SID>_APPLY_<TIMESTAMP>.log
catbundle_PSU_<database SID>_GENERATE_<TIMESTAMP>.log
7)检查
$ cd /u01/app/oracle/product/11.2.0/db_1/OPatch
$ ./opatch lsinv
Patch 28204707: applied on Tue Aug 04 13:15:43 EDT 2020
Unique Patch ID: 22491169
Patch description: "Database Patch Set Update : 11.2.0.4.181016 (28204707)"
Created on 19 Sep 2018, 03:24:06 hrs PST8PDT
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';
六、卸载PSU1.卸载软件PSU1)检查文件是否存在
$ORACLE_HOME/rdbms/admin/catbundle_PSU_<SID>_ROLLBACK.sql
2)关闭instance和监听
SQL> shutdown immediate;
SQL> exit
$ lsnrctl stop
3)执行卸载命令
$ cd $ORACLE_HOME/OPatch
$ ./opatch rollback -id 28204707
最后可能会有warnings,可以忽略。如果是error就不能忽略。
2.卸载database PSU$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> STARTUP
SQL> @catbundle_PSU_<SID>_ROLLBACK.sql
SQL> QUIT
3.编译无效对象如果在之前的PSU中有OJVM PSU,那么我们在执行完catbundle.sql后可以看到一些无效的JAVA类,在这种情况下,运行以下命令
$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> @utlrp.sql
4.检查日志$ cd /u01/app/oracle/cfgtoollogs/catbundle
catbundle_PSU_<database SID>_ROLLBACK_<TIMESTAMP>.log
---- end ----
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。