文章目录
前言
大部分用户oracle数据库还停留在10g、11g或者12c的版本上,出现的一些bug也需要通过oracle官方的补丁进行升级,升级过程需要有停止数据库等操作,对于超大量级且重要的数据库不太建议进行打补丁操作,详细评估需要有专业DBA人员进行评估。
下面就简单写一个打补丁的操作案例,以供参考!
提示:以下是本篇文章正文内容,下面案例可供参考
简要介绍:
关键补丁更新(CPU)现在指的是每个季度安全补丁的整体发布,而不是每个季度的数据库安全补丁的累计发布。将CPU看作是一个整体的季度发布,而不是一个单独的补丁。
补丁集更新(PSU)是包含安全补丁和优先级补丁的相同累积补丁。PSUs的关键在于它们是次要的版本升级(例如,11.2.0.1.1到11.2.0.1.2)。一旦应用了PSU,在数据库升级到新的基础版本之前,在未来的季度中只能应用PSU。
安全补丁更新(SPU)术语在2012年10月的关键补丁更新中被引入,作为季度安全补丁的术语。SPU补丁与以前的CPU补丁相同,只是换了个名字。对于数据库,一旦应用了psu, spu就不能应用,直到数据库升级到新的基本版本。
补丁包下载需要登录MOS下载:opatch升级包、数据库补丁
一.OPatch 更新:
1、检查目前补丁包版本($ORACLE_HOME下):
[oracle@tdcxl ~]$ cd /data/oracle/app/product/11.2.0/db_1/Opatch
[oracle@tdcxl OPatch]$ ./opatch version
OPatch Version: 11.2.0.3.4
OPatch succeeded.
2、创建目录备份当前Opatch工具:
$ORACLE_HOME下创建目录
[oracle@tdcxl db_1]$ pwd
/data/oracle/app/product/11.2.0/db_1
[oracle@tdcxl db_1]$ mkdir Opatch_bak
[oracle@tdcxl db_1]$ mv OPatch/ Opatch_bak/
3、传输压缩包并解压Opatch工具至$ORACLE_HOME下:
[oracle@tdcxl db_1]$ unzip /usr/local/src/patchfile/p6880880_112000_Linux-x86-64.zip
解压篇幅省略…
[oracle@tdcxl db_1]$ cd OPatch/
[oracle@tdcxl OPatch]$ ./opatch version
OPatch Version: 11.2.0.3.20
OPatch succeeded.
二、应用PSU补丁:
1、Oraclehome下创建目录解压PSU补丁:
(oraInventory同级目录下)
[root@tdcxl data]# mkdir patch
[root@tdcxl data]# chown -R oracle:oinstall /data/patch/
[oracle@tdcxl data]$ cd patch/
[oracle@tdcxl patch]$ unzip /usr/local/src/patchfile/p28729262_112040_Linux-x86-64.zip
解压篇幅省略…
[oracle@tdcxl patch]$ ls -lh
总用量 108K
drwxr-xr-x 23 oracle oinstall 4.0K 12月 20 2018 28729262
-rw-rw-r-- 1 oracle oinstall 102K 1月 17 2019 PatchSearch.xml
[oracle@tdcxl patch]$ cd 28729262/
[oracle@tdcxl 28729262]$ ls
17478514 18522509 19769489 20760982 21948347 23054359 24732075 26392168 26925576 27734982 28729262 README.html
18031668 19121551 20299013 21352635 22502456 24006111 25869727 26609445 27338049 28204707 patchmd.xml README.txt
[oracle@tdcxl 28729262]$ pwd
/data/patch/28729262
2、执行oracle 中间补丁安装程序:
[oracle@tdcxl ~]$ /data/oracle/app/product/11.2.0/db_1/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
3、停止监听以及数据库:
[oracle@tdcxl ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Tue Oct 15 15:10:47 2019
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> !lsnrctl stop
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 15-OCT-2019 15:11:14
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
The command completed successfully
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
4、应用补丁:
[oracle@tdcxl ~]$ cd /data/patch/28729262
[oracle@tdcxl 28729262]$ /data/oracle/app/product/11.2.0/db_1/OPatch/opatch apply
三、数据库应用补丁:
1、升级数据库数据字典、编译无效对象 :
数据库启动,并加载修改SQL Files到数据库
[oracle@tdcxl 28729262]$ cd /data/oracle/app/product/11.2.0/db_1/rdbms/admin/
[oracle@tdcxl admin]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.4.0 Production on Tue Oct 15 15:36:36 2019
Copyright (c) 1982, 2013, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected to an idle instance.
SQL> @catbundle.sql psu apply
省略…
SQL> @?/rdbms/admin/utlrp.sql
省略…
2、查看 PSU 更新信息
SQL> set line 150
col ACTION_TIME for a30
col ACTION for a8
col NAMESPACE for a8
col VERSION for a10
col BUNDLE_SERIES for a5
col COMMENTS for a20
SQL> select * from dba_registry_history;
ACTION_TIME ACTION NAMESPAC VERSION ID BUNDL COMMENTS
------------------------------ -------- -------- ---------- ---------- ----- --------------------
24-AUG-13 12.03.45.119862 PM APPLY SERVER 11.2.0.4 0 PSU Patchset 11.2.0.2.0
14-OCT-19 04.53.21.469466 PM APPLY SERVER 11.2.0.4 0 PSU Patchset 11.2.0.2.0
15-OCT-19 03.39.16.871249 PM APPLY SERVER 11.2.0.4 190115 PSU PSU 11.2.0.4.190115
3 rows selected.
--查看无效对象
SQL> select count(*) from dba_objects where status<>'VALID';
COUNT(*)
----------
0
1 row selected.
-- 查看监听是否正常
[oracle@tdcxl ~]$ lsnrctl status
3、opatch 检查:
$ORACLE_HOME/OPatch/opatch lspatches;
$ORACLE_HOME/OPatch/opatch lsinventory;
测试补丁兼容性:
1、升级前检查是否有冲突
[oracle@localhost db_1]$ cd /tmp/psu/27734982/
[oracle@localhost 27734982]$ opatch prereq CheckConflictAgainstOHWithDetail -ph ./
1.1测试兼容性, 如果之前没有打过,这步也可以忽略。
[oracle@11g opatch]$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /home/oracle/opatch/21352635 -oh $ORACLE_HOME
Oracle Interim Patch Installer version 11.2.0.3.10
Copyright (c) 2015, Oracle Corporation. All rights reserved.
PREREQ session
Oracle Home : /home/oracle/app/oracle/product/11.2.0.4/dbhome_1
Central Inventory : /home/oracle/oraInventory
from : /home/oracle/app/oracle/product/11.2.0.4/dbhome_1/oraInst.loc
OPatch version : 11.2.0.3.10
OUI version : 11.2.0.4.0
Log file location : /home/oracle/app/oracle/product/11.2.0.4/dbhome_1/cfgtoollogs/opatch/opatch2015-02-16_13-09-28PM_1.log
Invoking prereq "checkconflictagainstohwithdetail"
Prereq "checkConflictAgainstOHWithDetail" passed.
OPatch succeeded.