1.Oracle数据库的补丁类型及作用 1.1 补丁术语介绍
Interim patch/One-off patch:是我们常说的小补丁,为了修复某(几)个Bug而发布的补丁。这种补丁一般在测试库上测试无误后再安装到生产库上。
Merged patch: 合并补丁。当几个小补丁之间有冲突,不能同时安装的时候,需要提供这种Merged Patch。补丁冲突主要是由于2个或多个补丁修改同一文件,但是修改的内容不同而产生的。
Bundle patch:补丁集,修复多个Bug。 在Windows平台上的Oracle没有小补丁,只有这种Bundle Patch。 这种补丁集会周期性的发布(至少每季一次)。这种补丁集是累积型的(cumulative),也就是每个Bundle patch 会包含之前的所有的Bundle Patch。
Critical Patch Update(CPU):每季度发布一次,用来修复安全方面的一些补丁,是累积型的。目前已经更名位Secuirty Patch Update(SPU).
Patch Set Update(PSU):每季度发布一次,修复比较严重的一些问题,包括每季的CPU,是累积型的。
Patch Set:是再大版本上发布的补丁集,修复较多的Bug。可能会包含一些增强功能。这种补丁集经过了严格的集成测试,也是累积型的,所以推荐安装最新的Patch Set.
Diagnostic patch:诊断补丁。有的时候诊断一个问题的时候,为了获得更多的诊断信息,Oracle的开发部门会提供一个Diagnostic Patch,这种补丁不是为了修复问题,而是诊断问题。
Composite patch:一种新型的补丁包,不同于其他的累积型补丁包,如果第一次安装Composition Patches,那么就会安装Composite patches所包含的全部补丁,后续安装的Composite Patches 只会安装对比前一次Composite Patches 有所变化的部分和新增加的补丁。
Opatch:安装管理补丁而涉及的工具,通过这个工具,DBA可以方便安装、卸载补丁,也可以检测冲突等。
1.2 如何查看软件版本及版本说明
SQL> col product for a50 SQL> col version for a15 SQL> col status for a30 SQL> SELECT * FROM PRODUCT_COMPONENT_VERSION
说明:软件版本命名和书写方式是“11.2.0.4.0”,分别代表:
主数据库发布号-数据库维护发布号-应用服务器发布号-组件相关发布号-平台相关发布号
当我们使用oracle补丁包升级后,第4位和第5位数字就会发生改变,其中第4位是补丁集号(patch set),第五位是补丁集更新(PSU)
2.Oracle数据库opatch补丁操作流程
2.0 准备工作 1) 确认数据库版本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
2) 查看补丁安装信息
SQL> set lin 150 SQL> col action_time for a30 SQL> col action for a10 SQL> col namespace for a10 SQL> col version for a15 SQL> col id for 99 SQL> col bundle_series for a15 SQL> col comments for a20 SQL> select * from dba_registry_history
3) 查询数据库失效对象个数
SQL> select sum(OBJECT_NAME) n1 from dba_objects where status='INVALID'; N1 -------
如果存在失效对象则先编译一遍,再重新执行查询语句,及当前失效对象为N2;
Sql >@$ORACLE_HOME/rdbms/admin/utlrp.sql SQL> select sum(OBJECT_NAME) n2 from dba_objects where status='INVALID';
4) 补丁类型
Oracle数据库补丁一般分为两种CPU和PSU补丁。
5) 查询补丁信息并下载 mos如何查找到目前最新的PSU?mos中有个文档专门更新 psu 的内容,其文档 id 位 756671.1,oracle recommended patches — oracle database。
#搜索关键词 756671.1
#查看Oracle11.2.0.4的PSU补丁信息
#选择对应的系统(下面应该选择linux x86-64,否则可能会出现我下面提到的错误)
#下载
#选择下载文件
6)查看OPatch信息并下载OPatch 工具包
方法1:
mos参考文章:OPatch - Where Can I Find the Latest Version of OPatch(6880880)? [Video] (Doc ID 224346.
#通过点击文中对应的安装包就可以跳转到下载地址
方法2;
下载地址:https://updates.oracle.com/download/6880880.html
#选择对应的数据库版本以及操作系统平台,点击download
提示:根据自己的操作系统选择版本,Linux 是32位的,而通常我们选择linux x86-64.
在补丁升级前做好数据库的备份工作,使用rman或者导出数据文件方式进行数据库的全备。条件允许的情况下操作系统最好也进行一次备份。
2.1 Oracle 11.2.0.4 安装PSU
2.1.1 查询Opach信息并下载
#查询当前Opatch版本信息
[oracle@server ~]$ cd $ORACLE_HOME/OPatch [oracle@server OPatch]$ ./opatch version OPatch Version: 11.2.0.3.4 OPatch succeeded.
其他参看信息查看准备工作第6点
2.1.2 查询PSU 补丁信息并下载
参考准备工作第5点
2.1.3 上传OPatch和PSU补丁安装包
#自行上传
2.1.4 如若需要,升级Opatch
1)检查版本信息
[oracle@server ~]$ cd $ORACLE_HOME/OPatch [oracle@server OPatch]$ ./opatch version OPatch Version: 11.2.0.3.4 OPatch succeeded.
2)备份Opatch,并解压最新的Opatch包
[oracle@server OPatch]$ cd .. [oracle@server dbhome_1]$ mv OPatch OPatch_2022_bak [oracle@server dbhome_1]$ unzip /home/soft/p6880880_190000_LINUX.zip -d ./
3)验证Opatch是否升级到
提示:如果没有报错,下面步骤可跳过。仅作知识拓展。
[oracle@server dbhome_1]$ cd OPatch [oracle@server OPatch]$ ./opatch version ./opatch: line 839: [: too many arguments ./opatch: line 839: [: too many arguments Java (1.7) could not be located. OPatch cannot proceed! OPatch returns with error code = 1
#报错解决:将Opatch 的jre删除,将$ORACLE_HOME 下的jdk/jre拷贝到Opatch目录下
[oracle@server dbhome_1]$ cd $ORACLE_HOME/OPatch [oracle@server OPatch]$ rm -rf jre [oracle@server OPatch]$ cp -r $ORACLE_HOME/jdk/jre $ORACLE_HOME/OPatch/
2.1.5 解压PSU补丁并用OPatch查看是否起冲突
[oracle@server dbhome_1]$ cd /soft/ [oracle@server soft]$ unzip p31668908_112040_LINUX.zip [oracle@server 31668908]$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./ Oracle Interim Patch Installer version 11.2.0.3.38 Copyright (c) 2022, Oracle Corporation. All rights reserved. PREREQ session Oracle Home : /u01/app/oracle/product/11.2.0/dbhome_1 Central Inventory : /u01/app/oraInventory from : /u01/app/oracle/product/11.2.0/dbhome_1/oraInst.loc OPatch version : 11.2.0.3.38 OUI version : 11.2.0.4.0 Log file location : /u01/app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch2022-11-16_15-14-53PM_1.log Invoking prereq "checkconflictagainstohwithdetail" Prereq "checkConflictAgainstOHWithDetail" passed. OPatch succeeded.
2.1.6 关闭监听和数据库
#关闭监听[oracle@server 31668908]$ lsnrctl stop LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 16-NOV-2022 15:15:49 Copyright (c) 1991, 2013, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) The command completed successfully
# 关闭数据库
[oracle@server 31668908]$ sqlplus sys/password as sysdba SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options
2.1.7 安装psmisc
如果没有事先安装psmisc,补丁升级会出现以下错误,提示没有fuser命令。有则跳过。
Verifying environment and performing prerequisite checks... Prerequisite check "CheckSystemCommandAvailable" failed. The details are: Missing command :fuser UtilSession failed:
#没psmisc,先安装psmisc
#提示:没仓库建立仓库,没挂载在先挂载
[root@server soft]# mount /dev/cdrom /mnt [root@server mnt]# vim /etc/yum.repos.d/public-yum-el5.repo [oel5] name = Enterprise Linux 5.6 DVD baseurl=file:///mnt/ gpgcheck=0 enabled=1 [root@server mnt]# yum install psmisc
2.1.8 开始安装补丁
[oracle@server soft]$ cd 31668908/ [oracle@server 31668908]$ $ORACLE_HOME/OPatch/opatch apply Oracle Interim Patch Installer version 11.2.0.3.38 ... Do you want to proceed? [y|n] y ... Is the local system ready for patching? [y|n] y ... Do you want to proceed? [y|n] y ... Patch 31668908 successfully applied. OPatch Session completed with warnings.
2.1.9 验证安装了哪些补丁
[oracle@server ~]$ $ORACLE_HOME/OPatch/opatch lsinventory -patch Oracle Interim Patch Installer version 11.2.0.3.38 ... Local Machine Information:: Hostname: server ARU platform id: 226 ARU platform description:: Linux x86-64 Interim patches (1) : Patch 31668908 : applied on Wed Nov 16 15:56:03 CST 2022 Unique Patch ID: 23800881 Patch description: "OJVM PATCH SET UPDATE 11.2.0.4.201020" Created on 8 Sep 2020, 03:18:03 hrs PST8PDT Bugs fixed: 23727132, 19554117, 19006757, 14774730, 18933818, 18458318, 18166577 19231857, 19153980, 19058059, 19007266, 17285560, 17201047, 17056813 19223010, 19852360, 19909862, 19895326, 19374518, 20408829, 21047766 21566944, 19176885, 17804361, 17528315, 21811517, 22253904, 19187988 21911849, 22118835, 22670385, 23265914, 22675136, 24448240, 25067795 24534298, 25076732, 25494379, 26023002, 19699946, 26637592, 27000663 25649873, 27461842, 27952577, 27642235, 28502128, 28915933, 29254615 29774367, 29992392, 29448234, 30160639, 30534664, 30855121, 31306274 30772207, 31476032, 30561292, 28394726, 26716835, 24817447, 23082876 31668867 ... OPatch succeeded.
标签:数据库,补丁,OPatch,11.2,server,oracle,SQL,Oracle
From: https://www.cnblogs.com/jzyellow/p/16898263.html