Oracle 11gR2打PSU补丁详细教程

news/2024/9/18 7:47:16/ 标签: oracle, 数据库

1 说明

Oracle的PSU(Patch Set Update)补丁是Oracle公司为了其数据库产品定期发布的更新包,通常每季度发布一次。PSU包含了该季度内收集的一系列安全更新(CPU:Critical Patch Update)以及一些重要的错误修复。PSU旨在提供一个简单的方法来应用一系列已经被验证过的、重要的更新,从而减少单独安装多个补丁所带来的复杂性和潜在风险。

此次打的补丁集是201020,步骤大致如下:

  1. 备份 ORACLE_HOME
  2. 更新OPatch
  3. 冲突检查
  4. 应用GI PSU
  5. 应用DB PSU
  6. 应用OJVM PSU
  7. SQL文件加载

2 准备阶段

2.1 收集环境信息

参数参数值
数据库版本11.2.0.4.0 - 64bit
GI home/u01/app/11.2.0/grid
DB home/u01/app/oracle/product/11.2/db_1
One-off Patch
PSU

2.2 PSU补丁下载

从MOS上下载所需的PSU补丁文件。

一、登录MOS网站 My Oracle Support

二、查找文档 Oracle Support Document 2118136.2

三、选择下载类型

image.png

四、版本号

image.png

五、下载最新的PSU补丁

可以看到,11gR2最新的补丁于2020年10月发布的,可以将数据库升级到11.2.0.4.201020版本,后续已经没有更新。

image.png

2.3 备份数据库

打PSU补丁之前最好备份一下GI home和DB home。防止打补丁失败,没有备份的话,就需要重建集群了。

一、备份DB home

$ cd /u01/app/oracle/product/11.2
$ tar -pcvf oracle_home_bkup.tar db_1

恢复操作(参考 Note 565017.1):

$ cd /u01/app/oracle/product/11.2
$ mv db_1 db_1_bkup
$ tar -pxvf oracle_home_bkup.tar

二、备份GI home

$ cd /u01/app/11.2.0
$ tar -pcvf gi_home_bkup.tar grid

恢复参考db home。

2.4 熟悉升级步骤

打补丁前,应该先看一遍补丁包里的README.html文件,熟悉操作过程和步骤。

image.png

3 更新OPatch

OPatch工具是一个补丁的应用程序,主要用于安装、移除或回滚补丁包。

3.1 下载

当前PSU补丁要求OPatch版本在11.2.0.3.23或更高才能被应用。当前版本不满足要求:

image.png

在MOS中下载最新版本的OPatch工具:Patch 6880880

image.png

3.2 GI更新OPatch

在集群的每个节点上,滚动进行以下操作,完成GI更新OPatch。

一、移除$ORACLE_HOME/OPatch

root用户执行,也相当于做了备份。

[root@r11gn1 patchs]# cd /u01/app/11.2.0/grid/
[root@r11gn1 grid]# mv OPatch OPatch.240911.bak
[root@r11gn1 grid]# ll | grep OPatch
drwxr-xr-x  8 grid oinstall  4096 Apr  3 00:33 OPatch.240911.bak

二、解压缩并赋权

[root@r11gn1 patchs]# unzip -q p6880880_112000_Linux-x86-64.zip -d /u01/app/11.2.0/grid/
[root@r11gn1 patchs]# cd /u01/app/11.2.0/grid
[root@r11gn1 grid]# chown -R grid:oinstall OPatch

三、版本检查

image.png

3.3 DB更新OPatch

与刚刚的操作类似,在集群的每个节点上,滚动进行以下操作,完成DB更新OPatch。

一、移除$ORACLE_HOME/OPatch

root用户执行,也相当于做了备份。

[root@r11gn1 grid]# su - oracle
[oracle@r11gn1 ~]$ cd $ORACLE_HOME
[oracle@r11gn1 db_1]$ mv OPatch OPatch.240911.bak

二、解压缩并赋权

[root@r11gn1 patchs]# unzip -q p6880880_112000_Linux-x86-64.zip -d /u01/app/oracle/product/11.2/db_1/
[root@r11gn1 patchs]# cd /u01/app/oracle/product/11.2/db_1/
[root@r11gn1 db_1]# chown -R oracle:oinstall OPatch

三、版本检查

image.png

4 检查Inventory信息

在开始补丁应用程序之前,检查GI和DB的Inventory信息的一致性。

一、GI检查Inventory信息

[root@r11gn1 db_1]# su - grid
[grid@r11gn1 ~]$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME

二、DB检查Inventory信息

[root@r11gn1 db_1]# su - oracle
[oracle@r11gn1 ~]$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME

如果成功,会列出安装在主目录下的Oracle组件。可以将输出结果保存下来,做应用补丁之前的状态的留存。

5 应用补丁

以下操作,每个节点不要并行执行,采用轮询的方式执行。

5.1 解压缩补丁包

官方建议,解压缩的目录必须为空,不能为/tmp,具有oinstall组的读权限。使用grid用户unzip解压:

[grid@r11gn1 ~]$ cd /u01/app/patchs
[grid@r11gn1 patchs]$ ls
lost+found  p31718723_112040_Linux-x86-64(GI).zip  p6880880_112000_Linux-x86-64.zip
[grid@r11gn1 patchs]$ unzip -q p31718723_112040_Linux-x86-64\(GI\).zip

image.png

5.2 停止EM Agent进程

在打补丁前和回滚补丁前停止EM Agent进程。oracle用户执行:

$ $ORACLE_HOME/bin/emctl stop dbconsolename.

5.3 一次性补丁冲突检测

检查要安装的补丁和已经安装的一次性补丁是否存在冲突。

[grid@r11gn2 patchs]$ /u01/app/11.2.0/grid/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/app/patchs/31718723/Oracle Interim Patch Installer version 11.2.0.3.47
Copyright (c) 2024, Oracle Corporation.  All rights reserved.PREREQ sessionOracle Home       : /u01/app/11.2.0/grid
Central Inventory : /u01/app/oraInventoryfrom           : /u01/app/11.2.0/grid/oraInst.loc
OPatch version    : 11.2.0.3.47
OUI version       : 11.2.0.4.0
Log file location : /u01/app/11.2.0/grid/cfgtoollogs/opatch/opatch2024-09-11_01-59-15AM_1.logInvoking prereq "checkconflictagainstohwithdetail"Prereq "checkConflictAgainstOHWithDetail" passed.OPatch succeeded.

5.4 打GI补丁

在其中一个节点,用root用户执行下列命令,使用GI home的OPatch:

[root@r11gn1 ~]# /u01/app/11.2.0/grid/OPatch/opatch auto /u01/app/patchs/31718723 -oh /u01/app/11.2.0/grid

image.png

5.5 检查GI补丁应用情况

节点1的GI补丁已经打上。其他节点重复5.1 - 5.5操作。

image.png

5.6 打DB补丁

root用户轮询执行此命令,使用DB home的OPatch:

[root@r11gn1 ~]# /u01/app/oracle/product/11.2/db_1/OPatch/opatch auto /u01/app/patchs/31718723 -oh /u01/app/oracle/product/11.2/db_1

image.png

5.7 检查DB补丁应用情况

成功应用,其他节点滚动执行5.6和5.7操作打DB补丁

image.png

6 打OJVM PSU

6.1 说明

在2014年10月之前,OJVM包含在PSU里面,用于防止9.2.0.8以后任何数据库版本中的Oracle JavaVM漏洞。在2014年10月后,独立出去,需要各自打补丁,依赖于同版本的DB PSU。如果只装了PSU,漏洞扫描就会出现警告。

6.2 下载

下载响应版本的OJVM PSU。

image.png

6.3 上传解压并赋权

[root@r11gn2 patchs]# unzip -q p31668908_112040_Linux-x86-64\(OJVM\).zip
[root@r11gn2 patchs]# chown -R oracle:oinstall 31668908

6.4 冲突检查

[oracle@r11gn2 ~]$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph /u01/app/patchs/31668908
Oracle Interim Patch Installer version 11.2.0.3.47
Copyright (c) 2024, Oracle Corporation.  All rights reserved.PREREQ sessionOracle Home       : /u01/app/oracle/product/11.2/db_1
Central Inventory : /u01/app/oraInventoryfrom           : /u01/app/oracle/product/11.2/db_1/oraInst.loc
OPatch version    : 11.2.0.3.47
OUI version       : 11.2.0.4.0
Log file location : /u01/app/oracle/product/11.2/db_1/cfgtoollogs/opatch/opatch2024-09-11_09-16-38AM_1.logInvoking prereq "checkconflictagainstohwithdetail"Prereq "checkConflictAgainstOHWithDetail" passed.OPatch succeeded.

6.5 应用OJVM补丁

2017以后的OJVM PSU包含以下情况,可以滚动升级:

image.png

6.5.1 停库和服务

关闭当前节点的实例和服务,rong用户执行停当前节点crs:

[root@r11gn1 patchs]# /u01/app/11.2.0/grid/bin/crsctl stop crs

6.5.2 应用

oracle用户执行,输入2次“y”:

[root@r11gn1 ~]# su - oracle
[oracle@r11gn1 ~]$ $ORACLE_HOME/OPatch/opatch apply /u01/app/patchs/31668908

image.png

6.5.3 检查补丁

[oracle@r11gn1 ~]$ $ORACLE_HOME/OPatch/opatch lspatches | grep 31668908
31668908;OJVM PATCH SET UPDATE 11.2.0.4.201020

6.5.4 启动集群

[root@r11gn1 ~]# /u01/app/11.2.0/grid/bin/crsctl start crs

检查服务状态:

image.png

其他节点重复以上操作。

7 SQL文件加载

一、以下步骤将修改后的SQL文件加载到数据库中。在Oracle RAC环境中,仅在一个节点上执行这些步骤就行

cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> @catbundle.sql psu apply
SQL> QUIT

二、关闭所有实例后(如果其他实例未关闭,则STARTUP UPGRADE不成功),在其中一个节点用oracle用户执行

$ srvctl stop instance -d rac
$ cd $ORACLE_HOME/sqlpatch/31668908
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> STARTUP
SQL> alter system set cluster_database=false scope=spfile;
SQL> SHUTDOWN
SQL> STARTUP UPGRADE
SQL> @postinstall.sql
SQL> alter system set cluster_database=true scope=spfile;
SQL> SHUTDOWN
SQL> STARTUP

三、在安装补丁的SQL部分之后,一些包可能会变为INVALID。这将在访问时重新编译,或者您可以运行utlrp。sql将它们恢复到VALID状态。oracle用户执行

$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> @utlrp.sql

将其他实例启动,至此所有补丁已经应用完成。

8 检查补丁版本

所有节点都检查,确保一致。

OPatch查看:

image.png

视图查看

SQL> 
col ACTION_TIME for a40
col comments for a40
select ACTION_TIME,version,COMMENTS from registry$history;

image.png

9 总结

打PSU过程是比较多的,比较容易出现错误,需要比较细心。必须要做好相应的备份(ORACLE_HOME),打补丁失败后,可以恢复ORACLE_HOME,不至于要重建集群。采用滚动升级,确保就算出现问题,也有节点可以用。


http://www.ppmy.cn/news/1526245.html

相关文章

6芯7芯可旋转电连接器航空插头

概述 可旋转电航空插头是一种能够在旋转或相对运动的部件间稳定传输电气信号或电源的装置,广泛应用于航空航天、自动化设备、医疗设备等多个领域。它的核心在于精密的接触系统,由旋转端和固定端两部分组成,通过金属触点或导电环实现电气连接。…

Unity 粒子系统参数说明

一、Particle System 1. Duration(持续时间) 粒子系统运行一次所需的时间。它决定粒子系统持续播放的时间长度。 2. Looping(循环播放) 如果启用,粒子系统将在播放完一次后自动重新开始播放,直到你停止它…

SpringBoot框架Web开发

1. 控制器开发 (1) JSON的支持 Spring Boot默认支持JSON格式的数据交换,主要通过以下方式实现: 依赖:spring-boot-starter-web 依赖包已经包括了 Jackson,用于将Java对象序列化为JSON,以及将JSON反序列化为Java对象…

Protubuf入门

⼀、初识 ProtoBuf 1. 序列化概念 序列化和反序列化 序列化:把对象转换为字节序列的过程 称为对象的序列化。 反序列化:把字节序列恢复为对象的过程 称为对象的反序列化。 什么情况下需要序列化 存储数据:当你想把的内存中的对象状态…

Java零基础-replace(CharSequence target, CharSequence replacement)详解

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互…

2024年某大厂HW蓝队面试题分享

🤟 基于入门网络安全/黑客打造的资源包无偿分享中: 👉黑客&网络安全入门&进阶学习资源包 应急响应流程 1)首先判断服务器资产、影响范围以及严重程度,确认有没有必要将服务器下线隔离,然后根据服务…

【佳学基因检测】在织梦网站中, 创建或修改目录:/var/www/html/cp 失败! DedeTag Engine Create File False

【佳学基因检测】在织梦网站中, 创建或修改目录:/var/www/html/cp 失败! DedeTag Engine Create File False 在使用 DedeCMS(一个常用的内容管理系统)时,如果遇到“创建或修改目录:/var/www/html/cp 失败&…

工程师 - HUE(Humans in User Experience)介绍

HUE:Humans in User Experience(用户体验中的人类)是用户体验(UX)设计领域的一种概念或方法,强调在设计过程中考虑人的因素的重要性。它侧重于了解用户的需求、行为和情感,从而创造出更有效、更…

flask框架

Flask 1 flask简介 我们之所以在浏览器中输入localhost:8080然后就可以把webapps下面的项目文件以浏览器的方式打开,功臣在与tomcat。python语言写的项目,转换为web,Flask框架 轻量级web应用框架。 环境准备: pip install fl…

基于鸿蒙API10的RTSP播放器(七:亮度调节功能测试)

目标: 当我的手指在设备左方进行上下移动的时候,可以进行屏幕亮度的调节,在调节的同时,有实时的调节进度条显示 步骤: 界面逻辑:使用Stack() 组件,完成音量图标和进度条的组合显示&#xff0c…

鹏哥C语言自定义笔记重点(67-)

67. 68. 69. 70. 71.结构体内容 72.理解结构体的字节数 73. #pragma once //头文件中使用,功能是:防止头文件被多次引用 74.结构体传参 结论:结构体传参时,要传结构体地址。 75.位段 76.static是只能在该文件中看到,其他地方看不到 77.…

通俗理解矩阵的秩

通俗理解矩阵的秩 flyfish 一、通俗的理解 想象有一张表格(矩阵),表格里有很多数字。矩阵的秩告诉我们这个表格里的数据有多么“特别”或者“复杂”。 1. 行和列的概念: 矩阵是由行(横排的数字)和列&a…

vue + Lodop 制作可视化设计页面 实现打印设计功能(四)

历史: vue2 Lodop 制作可视化设计页面 实现打印设计功能(一) vue Lodop 制作可视化设计页面 实现打印设计功能(二) vue Lodop 制作可视化设计页面 实现打印设计功能(三) 前言&#xff1a…

uniapp vue3 梯形选项卡组件

实现的效果图&#xff1a; 切换选项卡显示不同的内容&#xff0c;把这个选项卡做成了一个组件&#xff0c;需要的自取。 // 组件名为 trapezoidalTab <template> <view class"pd24"><view class"nav"><!-- 左侧 --><view cla…

web基础之文件上传

1.下载安装 下载地址 链接&#xff1a;百度网盘-链接不存在 提取码&#xff1a;jhks 安装 直接把他放在phpstudy的WWW目录中。&#xff08;phpstudy的下载安装&#xff0c;可以自行百度一下&#xff09; 打开 访问地址&#xff1a;127.0.0.1/upload-labs 问题 这里可能…

MCU与SOC的区别

自动驾驶中 MCU 与 SoC 的区别 在自动驾驶系统中&#xff0c;**MCU&#xff08;微控制单元&#xff0c;Microcontroller Unit&#xff09;和SoC&#xff08;系统级芯片&#xff0c;System on Chip&#xff09;**都是关键的电子元件&#xff0c;但它们在性能、功能和应用领域等…

MATLAB在嵌入式系统设计中的最佳实践

嵌入式系统设计是一个复杂的过程&#xff0c;涉及硬件和软件的紧密集成。MATLAB提供了一套全面的解决方案&#xff0c;从算法开发到代码生成&#xff0c;再到硬件验证&#xff0c;极大地简化了这一过程。本文将探讨使用MATLAB进行嵌入式系统设计的最佳实践&#xff0c;包括模型…

10分钟在钉钉上增加一个AI机器人

您只需 10 分钟&#xff0c;无需任何编码&#xff0c;即可为您的组织在钉钉平台上创建一个有大模型能力加成的 AI 机器人。这个机器人可以全天候&#xff08;7x24&#xff09;响应用户咨询&#xff0c;还能解答私域问题&#xff0c;成为您业务的专属机器人&#xff0c;提升用户…

时序数据库 TDengine 的入门体验和操作记录

时序数据库 TDengine 的学习和使用经验 什么是 TDengine &#xff1f;什么是时序数据 &#xff1f;使用RPM安装包部署默认的网络端口 TDengine 使用TDengine 命令行&#xff08;CLI&#xff09;taosBenchmark服务器内存需求删库跑路测试 使用体验文档纠错 什么是 TDengine &…

k8s service如何实现流量转发

1 基本概念 Service&#xff1a;在Kubernetes&#xff08;K8s&#xff09;中&#xff0c;Service用于将流量转发到后端的Pod中。Service提供了一种稳定的网络入口&#xff0c;尽管后端的Pod可能会动态改变 kube-proxy: kube-proxy是Kubernetes集群中的核心组件之一&#xff0…