Quantcast
Channel: 容器云计算,Devops,DBA,网络安全。
Viewing all articles
Browse latest Browse all 780

Oracle 11.2.0.4.0打PSU补丁升级至11.2.0.4.19

$
0
0

Oracle 11.2.0.4.0打PSU补丁升级至11.2.0.4.19

一、简单介绍:

Oracle补丁一般分为2类:CPUPSU

Ø  CPUCritical Patch Update,紧急补丁更新。每季度发布一次,用来修复安全方面的累积型补丁,即最新的CPU补丁已经包含以往的CPU补丁,只需安装最新的CPU补丁即可。CPU已更名为SPUSecurity Patch Update)。

Ø  PSUPatch Set Update,补丁集更新。Oracle选取在每个季度用户下载数量最多、且得到验证具有较低风险的补丁放入到每个季度的PSU中。在每个PSU中不但包含Bug的修复,还包含了最新的CPUPSU通常随CPU一起发布。PSU通常是增量的,大部分PSU可以直接安装,但有些PSU必须要求安装上一个版本的PSU之后才能继续安装。


二、演示环境:

1、IP192.168.1.220

2、操作系统:CentOS 6.10 x86_64

3、Oracle软件安装包:p13390677_112040_Linux-x86-64_1of7.zipp13390677_112040_Linux-x86-64_2of7.zip

4、Oracle版本:11.2.0.4.0

5、OPatch软件安装包:p6880880_112000_Linux-x86-64.zip(大小为108M

6、OPatch版本:11.2.0.3.20

7、Patch补丁包:p28729262_112040_Linux-x86-64.zip

8、Patch IDPatch 28729262Oracle Database Patch Set Update 11.2.0.4.190115

 

三、PSU补丁:

1、查看当前OPatch版本:$ $ORACLE_HOME/OPatch/opatch version


备注:根据补丁包中的README.html帮助文档,Patch 28729262要求的OPatch最低版本为11.2.0.3.5

2、升级OPatch版本:

# unzip -q p6880880_112000_Linux-x86-64.zip

# chown -R oracle.oinstall OPatch

# su - oracle

$ mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch_bak

$ mv OPatch $ORACLE_HOME/

$ $ORACLE_HOME/OPatch/opatch version


3、查看系统中已打过的补丁:

$ $ORACLE_HOME/OPatch/opatch lspatches


$ $ORACLE_HOME/OPatch/opatch lsinv


SQL> col ACTION format a6

SQL> col VERSION format a8

SQL> col BUNDLE_SERIES format a13

SQL> col COMMENTS format a19

SQL> select ACTION,VERSION,BUNDLE_SERIES,COMMENTS from dba_registry_history;


4、关闭数据库实例和监听,结束所有Oracle相关进程:

SQL> shutdown immediate

SQL> !lsnrctl stop


5、使用expdp数据泵备份全库数据

6、使用tar命令备份整个数据库目录

7、解压补丁包,并设置权限:

# unzip -q p28729262_112040_Linux-x86-64.zip

备注:解压后得到目录28729262和文件PatchSearch.xml

# chown -R oracle.oinstall 28729262

# su - oracle

$ cd 28729262

$ ls


备注:打补丁前务必仔细阅读README.html帮助文档

8、检查PSU补丁是否有冲突:

$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./


备注:必须要在28729262目录中执行上述命令

9、手动生成OPatch所需的OCMOracle Configuration Manager)文件ocm.rsp

$ $ORACLE_HOME/OPatch/ocm/bin/emocmrsp


$ ll -lh | grep ocm.rsp


10、打补丁:$ $ORACLE_HOME/OPatch/opatch apply -silent -ocmrf ocm.rsp




备注:上述提示信息可忽略


备注:上述提示信息可忽略

11、升级数据字典:

$ sqlplus /nolog

SQL> connect / as sysdba

SQL> !lsnrctl start

SQL> startup

SQL> @$ORACLE_HOME/rdbms/admin/catbundle.sql psu apply


SQL> shutdown immediate

SQL> startup

12、重新编译无效对象:

SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql


备注:可查看日志确认执行是否成功,此处SIDTESTDB

$ less /oracle/cfgtoollogs/catbundle/catbundle_PSU_TESTDB_APPLY_2019Jan27_20_02_44.log

$ less /oracle/cfgtoollogs/catbundle/catbundle_PSU_TESTDB_GENERATE_2019Jan27_20_02_43.log

13、OJVMOracle JavaVM Component Database PSU)补丁:

SQL > @$ORACLE_HOME/rdbms/admin/dbmsjdev.sql

SQL > exec dbms_java_dev.disable


14、查看系统中已打过的补丁:

$ $ORACLE_HOME/OPatch/opatch lspatches


$ $ORACLE_HOME/OPatch/opatch lsinv




SQL> col ACTION format a6

SQL> col VERSION format a8

SQL> col BUNDLE_SERIES format a13

SQL> col COMMENTS format a19

SQL> select ACTION,VERSION,BUNDLE_SERIES,COMMENTS from dba_registry_history;



四、删除PSU补丁:

1、执行ROLLBACK.sql

$ sqlplus /nolog

SQL> connect / as sysdba

SQL> startup

SQL> @$ORACLE_HOME/rdbms/admin/catbundle_PSU_TESTDB_ROLLBACK.sql


SQL> quit

备注:此处SIDTESTDB

2、执行utlrp.sql,并关闭数据库实例和监听,结束所有Oracle相关进程:

$ sqlplus /nolog

SQL> connect / as sysdba

SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql


SQL> shutdown immediate

SQL> !lsnrctl stop


3、补丁回退:

$ $ORACLE_HOME/OPatch/opatch rollback -id 28729262



备注:上述提示信息可忽略

4、使用tar命令解压升级前备份的数据库目录

5、使用impdp数据泵导入升级前备份的全库数据

6、启动数据库实例和监听:

SQL> startup

SQL> !lsnrctl start

7、查看系统中已打过的补丁:

$ $ORACLE_HOME/OPatch/opatch lspatches


$ $ORACLE_HOME/OPatch/opatch lsinv


SQL> col ACTION format a8

SQL> col VERSION format a8

SQL> col BUNDLE_SERIES format a13

SQL> col COMMENTS format a19

SQL> select ACTION,VERSION,BUNDLE_SERIES,COMMENTS from dba_registry_history;







前 言

4 月中旬, Oracle 官方发布了季度补丁程序包,我们生产环境的众多数据库能打补丁的都打上了补丁,不重要的数据库也不能打补丁则关停了一段时间,上个月也可真是风风火火的一个月,感觉天天都在打补丁,事后也写了篇 Oracle 11GR2 RAC 最新补丁指导,感兴趣的可以点此查看。这两日有部分小伙伴说对于单节点的数据库该怎么操作,碰巧今晚又有两台单节点的数据库需要打补丁,那么难得有时间就写一下吧,方便以后学习。

补丁准备

Linux 平台下 20194 月发布的补丁包
p6880880_112000_Linux-x86-64.zip
p29255947_112040_Linux-x86-64.zip

Oracle 官方发布的 Linux 11.2.0.4 的补丁,如上所示,可去官网下载,这里选择补丁号和平台即可,若没有 Oracle MOS 账号,我这里已经下载好了,只需要在此公众号【JiekeXu之路】后台回复【RAC补丁】即可,此补丁和 RAC 使用的是同一个补丁。也可到如下地址去下载:

https://support.oracle.com/epmos/faces/PatchSearchResults?_afrLoop=27957295908138&_afrWindowMode=0&_adf.ctrl-state=11h190dceq_4

下载完补丁后,最主要的是看一看里面的 README.html, 这里面有方法步骤英文不错的同学可直接看文档不用看下文了。

正 文

废话不多说,直接按下面步骤操作即可。

0.备份

如果目录比较大,满足条件,可以做个全备,这个很有必要,因为升级中出现的问题不可控,有备份就好说了,实在没条件的话, cp 整个 ORACLE_HOME 即可。

1.升级环境检查

$ORACLE_BASE 目录至少存在5G的升级空间,然后检查数据库版本,不能跨大版本。

su - oracle
opatch lsinventory
 注意:如果opatch 命令不可用,需要配置环境变量或者进入到 $ORACLE_HOME/OPatch 下
exportPATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH

2.上传补丁包至 /u01/app/-----------这里这个目录为oracle权限

OPatch 补丁包:p6880880_112000_Linux-x86-64.zip

数据库 PSU 补丁包:p29255947_112040_Linux-x86-64.zip

3.oracle用户解压缩

unzip p21523375_112040_AIX64-5L.zip (必须用unzip解压!!!!!)

unzip p6880880_112000_AIX64-5L.zip (解压完了生成OPatch文件夹)

注意;这里写的是 AIX 下的补丁包,正常情况下是下图的补丁包。

4. oracle用户停止监听, 停止数据库

注意,如果有两个实例,需要设置环境变量,分别停库:停另外一个实例

ps -ef |grep smon

export ORACLE_SID=test2

如果有连接,需要杀掉连接,使用如下命令:

ps -ef | grep LOCAL=NO | grep -v grep |awk'{print $2}' | xargs kill -9
停止监听
lsnrctl stop
停止数据库
sqlplus / as sysdba
shutdown immediate

5.升级opatch

[oracle@JiekeXu dbhome_1]$cd $ORACLE_HOME
[oracle@JiekeXu dbhome_1]$mv OPatch OPatch_bak190705
[oracle@JiekeXu dbhome_1]$ mv/u01/app/OPatch/ ./

检查版本

[oracle@JiekeXu dbhome_1]$ opatch version
-bash: opatch: command not found
[oracle@JiekeXu dbhome_1]$ cd OPatch
[oracle@JiekeXu OPatch]$
[oracle@JiekeXu OPatch]$ ./opatch version
OPatch Version: 11.2.0.3.21
 
OPatch succeeded.
[oracle@JiekeXu OPatch]$

6.升级补丁包p29255947_112040_Linux-x86-64.zip

cd /u01/app/29255947/29141056
opatch apply
如果没法使用此命令,设置下环境变量在执行
exportPATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
opatch apply

首先输入 y, 不需要输入邮箱直接回车,接着输入 Y 然后输入 y 如下图所示。

----------------warring 可以忽略,不报failed 就可以了

7.检查数据库版本

[oracle@JiekeXu bin]$ opatch lsinventory |grep Sub-patch
Sub-patch 28729262; "Database Patch Set Update : 11.2.0.4.190115(28729262)"
Sub-patch 28204707; "Database Patch Set Update : 11.2.0.4.181016(28204707)"
Sub-patch 27734982; "Database Patch Set Update : 11.2.0.4.180717(27734982)"
Sub-patch 27338049; "Database Patch Set Update : 11.2.0.4.180417(27338049)"
Sub-patch 26925576; "Database Patch Set Update : 11.2.0.4.180116(26925576)"
Sub-patch 26392168; "Database Patch Set Update : 11.2.0.4.171017(26392168)"
Sub-patch 26609445; "Database Patch Set Update : 11.2.0.4.170814(26609445)"
Sub-patch 25869727; "Database Patch Set Update : 11.2.0.4.170718(25869727)"
Sub-patch 24732075; "Database Patch Set Update : 11.2.0.4.170418(24732075)"
Sub-patch 24006111; "Database Patch Set Update : 11.2.0.4.161018(24006111)"
Sub-patch 23054359; "Database Patch Set Update : 11.2.0.4.160719(23054359)"
Sub-patch 22502456; "Database Patch Set Update : 11.2.0.4.160419(22502456)"
Sub-patch 21948347; "Database Patch Set Update : 11.2.0.4.160119(21948347)"
Sub-patch 21352635; "Database Patch Set Update : 11.2.0.4.8 (21352635)"
Sub-patch 20760982; "Database Patch Set Update : 11.2.0.4.7 (20760982)"
Sub-patch 20299013; "Database Patch Set Update : 11.2.0.4.6 (20299013)"
Sub-patch 19769489; "Database Patch Set Update : 11.2.0.4.5 (19769489)"
Sub-patch 19121551; "Database Patch Set Update : 11.2.0.4.4 (19121551)"
Sub-patch 18522509; "Database Patch Set Update : 11.2.0.4.3 (18522509)"
Sub-patch 18031668; "Database Patch Set Update : 11.2.0.4.2 (18031668)"
Sub-patch 17478514; "Database Patch Set Update : 11.2.0.4.1 (17478514)"

8.数据库启动,执行升级脚本(如存在多个实例,每个实例都需要执行)

具体意义可看 README.html,这里就不解释了,也懒得说了。

$cd $ORACLE_HOME/rdbms/admin
$sqlplus / as sysdba
SQL >startup;
SQL >@catbundle.sql psu apply
SQL >@utlrp.sql
SQL > @dbmsjdev.sql
SQL > exec dbms_java_dev.disable
$ rman catalog username/password@alias
RMAN> UPGRADE CATALOG;

执行这几个脚本,可去看 README.html,这里多次提起,说明他还是很重要的哦!

9.验证

SYS@PROD>col ACTION_TIME for a35
SYS@PROD>col COMMENTS for a45
SYS@PROD>select ACTION_TIME,COMMENTSfrom  registry$history;
ACTION_TIME                    COMMENTS
------------------------------------------------------------
24-AUG-13 12.03.45.119862 PM   Patchset 11.2.0.2.0
19-JAN-16 12.10.26.734097 AM   Patchset 11.2.0.2.0
26-JAN-19 10.45.57.188831 AM   PSU 11.2.0.4.180116 ------升级前数据库版本
26-JAN-19 11.52.32.664077 AM   PSU 11.2.0.4.19041611.2.0.4.190416 ---升级后的数据库版本

10.启动监听

lsnrctl start

11.oracle 数据库注册到监听

SQL> alter  system register;

12.验证监听状态

lsnrctl status
好了,按照这个步骤执行是没有问题的,基本上踩得坑已经说明了,切记目录、版本要满足要求,要是需要回退的话可以去看官方文档或者阅读 README.html。

Viewing all articles
Browse latest Browse all 780

Trending Articles


Vimeo 10.7.1 by Vimeo.com, Inc.


UPDATE SC IDOL: TWO BECOME ONE


KASAMBAHAY BILL IN THE HOUSE


Girasoles para colorear


Presence Quotes – Positive Quotes


EASY COME, EASY GO


Love with Heart Breaking Quotes


Re:Mutton Pies (lleechef)


Ka longiing longsem kaba skhem bad kaba khlain ka pynlong kein ia ka...


Vimeo 10.7.0 by Vimeo.com, Inc.


FORECLOSURE OF REAL ESTATE MORTGAGE


FORTUITOUS EVENT


Pokemon para colorear


Sapos para colorear


Smile Quotes


Letting Go Quotes


Love Song lyrics that marks your Heart


RE: Mutton Pies (frankie241)


Hato lada ym dei namar ka jingpyrshah jong U JJM Nichols Roy (Bah Joy) ngin...


Long Distance Relationship Tagalog Love Quotes