文章目录

  • 前言
  • 简要介绍:
  • 一.OPatch 更新:
    • 1、检查目前补丁包版本($ORACLE_HOME下):
    • 2、创建目录备份当前Opatch工具:
    • 3、传输压缩包并解压Opatch工具至$ORACLE_HOME下:
  • 二、应用PSU补丁:
    • 1、Oraclehome下创建目录解压PSU补丁:
    • 2、执行oracle 中间补丁安装程序:
    • 3、停止监听以及数据库:
    • 4、应用补丁:
  • 三、数据库应用补丁:
    • 1、升级数据库数据字典、编译无效对象 :
    • 2、查看 PSU 更新信息
    • 3、opatch 检查:
      • 1、升级前检查是否有冲突
      • 1.1测试兼容性, 如果之前没有打过,这步也可以忽略。


前言

大部分用户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 1220 2018 28729262
-rw-rw-r--  1 oracle oinstall 102K 117 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.

更多推荐

小白入门(九):Oracle数据库打补丁操作过程