Oracle11.2.0.4打补丁实践
本文介绍如何给Oracle数据库打补丁,数据库版本为Oracle11.2.0.4,单实例,操作系统为redhat6.5。
下载升级包
下载升级包
因为没有MOS帐号,从网上下载了升级包
p30670774_112040_Linux-x86-64.zip:数据库补丁
p6880880_112000_Linux-x86-64.zip:opatch升级包
百度云链接:https://pan.baidu.com/s/1ZvTQr-gI889mylgzUXkdPw
提取码:plhp
微云链接:https://share.weiyun.com/k8CbxL3Kopatch是安装补丁的程序,数据库软件安装完成后,就自带了opatch,但是版本太旧了,所以这里下载最新的opatch,p6880880_112000_Linux-x86-64.zip包就是用来升级opatch用的。
升级opatch
opatch的升级只要将新版本的包解压,覆盖系统原始的文件即可。
查看原始opatch信息
查看原始版本
1
2
3
4
5[oracle@node1 ~]$ cd $ORACLE_HOME/OPatch
[oracle@node1 OPatch]$ ./opatch version # 查看原始版本
OPatch Version: 11.2.0.3.4
OPatch succeeded.查看补丁情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22[oracle@node1 OPatch]$ ./opatch lsinventory # 查看补丁情况
Oracle 中间补丁程序安装程序版本 11.2.0.3.4
版权所有 (c) 2012, Oracle Corporation。保留所有权利。
Oracle Home : /home/oracle/app/oracle/product/11.2.0/dbhome_1
Central Inventory : /home/oracle/app/oraInventory
from : /home/oracle/app/oracle/product/11.2.0/dbhome_1/oraInst.loc
OPatch version : 11.2.0.3.4
OUI version : 11.2.0.4.0
Log file location : /home/oracle/app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch2020-07-02_16-23-35下午_1.log
Lsinventory Output file location : /home/oracle/app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/lsinv/lsinventory2020-07-02_16-23-35下午.txt
----------------------------------------------------------------------------
已安装的顶级产品 (1):
Oracle Database 11g 11.2.0.4.0
此 Oracle 主目录中已安装 1 个产品。
此 Oracle 主目录中未安装任何中间补丁程序。
----------------------------------------------------------------------------
OPatch succeeded.备份原opatch
1
2[oracle@node1 OPatch]$ cd $ORACLE_HOME
[oracle@node1 dbhome_1]$ mv OPatch OPatch.bak解压新下载的opatch包
将下载的opatch包上传到oracle的家目录,上传完后,解压到
$ORACLE_HOME
下1
2[oracle@node1 dbhome_1]$ cd ~
[oracle@node1 ~]$ unzip p6880880_112000_Linux-x86-64.zip -d $ORACLE_HOME检查opatch是否升级成功
1
2
3
4
5[oracle@node1 ~]$ cd $ORACLE_HOME/OPatch
[oracle@node1 OPatch]$ ./opatch version # 查看版本信息
OPatch Version: 11.2.0.3.21
OPatch succeeded.现在版本为11.2.0.3.21,说明升级成功
数据库打补丁
关闭监听、数据库
1
2
3
4[oracle@node1 OPatch]$ lsnrctl stop # 关闭监听
[oracle@node1 ~]$ sqlplus / as sysdba
shutdown immediate
quit解压补丁包
将下载的补丁包上传到oracle家目录,并解压
1
2[oracle@node1 ~]$ cd ~
[oracle@node1 ~]$ unzip p30670774_112040_Linux-x86-64.zip校验冲突
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20[oracle@node1 ~]$ cd 30670774/
[oracle@node1 30670774]$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
Oracle 临时补丁程序安装程序版本 11.2.0.3.21
版权所有 (c) 2020, Oracle Corporation。保留所有权利。
PREREQ session
Oracle 主目录 :/home/oracle/app/oracle/product/11.2.0/dbhome_1
主产品清单:/home/oracle/app/oraInventory
来自 :/home/oracle/app/oracle/product/11.2.0/dbhome_1/oraInst.loc
OPatch 版本 :11.2.0.3.21
OUI 版本 :11.2.0.4.0
日志文件位置:/home/oracle/app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch2020-07-02_16-54-06下午_1.log
Invoking prereq "checkconflictagainstohwithdetail"
Prereq "checkConflictAgainstOHWithDetail" passed.
OPatch succeeded.由于这个测试库之前并没有打补丁,所以这里就没有补丁冲突的问题,如果这里显示有冲突,再去网MOS上查找相关解决方案。
执行打补丁
1
[oracle@node1 30670774]$ $ORACLE_HOME/OPatch/opatch apply
这里要输入3次y和一次回车,打补丁的过程耗是比较久的,耐心等待
检查打补丁情况
1
[oracle@node1 30670774]$ $ORACLE_HOME/OPatch/opatch lsinventory # 检查打补丁情况
这里会列出系统已打的补丁情况
启动数据库,并运行sql文件
1
2
3
4
5[oracle@node1 30670774]$ cd $ORACLE_HOME/rdbms/admin
[oracle@node1 30670774]$ sqlplus / as sysdba
startup
@catbundle.sql psu apply
quit启动监听
1
[oracle@node1 admin]$ lsnrctl start
至此数据库打补丁已经全部完成
回退数据库补丁
数据库在做变更时,需要考虑回退方案,接下来介绍如何回退数据库补丁
关闭监听、数据库
1
2
3
4[oracle@node1 ~]$ lsnrctl stop # 关闭监听
[oracle@node1 ~]$ sqlplus / as sysdba
shutdown immediate
quit回退补丁
1
[oracle@node1 ~]$ $ORACLE_HOME/OPatch/opatch rollback -id 30670774
这里要回复一次y,回退过程比较耗时,需耐心等待
启动数据库,并运行sql文件
1
2
3
4
5[oracle@node1 ~]$ cd $ORACLE_HOME/rdbms/admin
[oracle@node1 admin]$ sqlplus / as sysdba
startup
@catbundle_PSU_ORCL_ROLLBACK.sql # 这里的ORCL为实例名称
quit检查回退情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33[oracle@node1 admin]$ $ORACLE_HOME/OPatch/opatch lsinventory # 检查打补丁情况
Oracle 临时补丁程序安装程序版本 11.2.0.3.21
版权所有 (c) 2020, Oracle Corporation。保留所有权利。
Oracle 主目录 :/home/oracle/app/oracle/product/11.2.0/dbhome_1
主产品清单:/home/oracle/app/oraInventory
来自 :/home/oracle/app/oracle/product/11.2.0/dbhome_1/oraInst.loc
OPatch 版本 :11.2.0.3.21
OUI 版本 :11.2.0.4.0
日志文件位置:/home/oracle/app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch2020-07-02_18-24-48下午_1.log
Lsinventory Output file location : /home/oracle/app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/lsinv/lsinventory2020-07-02_18-24-48下午.txt
--------------------------------------------------------------------------------
Local Machine Information::
Hostname: localhost
ARU platform id: 226
ARU platform description:: Linux x86-64
已安装的顶级产品 (1):
Oracle Database 11g 11.2.0.4.0
此 Oracle 主目录中已安装 1 个产品。
此 Oracle 主目录中未安装任何临时补丁程序。
--------------------------------------------------------------------------------
OPatch succeeded.可以看到,补丁已经被卸载了
启动监听
1
[oracle@node1 admin]$ lsnrctl start
这样补丁回退就结束了
总结
本文介绍了单实例数据库打补丁的步骤,仅做参考,实际应以补丁包中的readme为准。
参考
- Oracle - 数据库打补丁最佳实践
- readme.html