当前位置: 首页 > news >正文

Oracle 11gR2打PSU补丁详细教程

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,不至于要重建集群。采用滚动升级,确保就算出现问题,也有节点可以用。

相关文章:

Oracle 11gR2打PSU补丁详细教程

1 说明 Oracle的PSU(Patch Set Update)补丁是Oracle公司为了其数据库产品定期发布的更新包,通常每季度发布一次。PSU包含了该季度内收集的一系列安全更新(CPU:Critical Patch Update)以及一些重要的错误修…...

2.4 卷积1

2.4 卷积1 2.4 卷积 在了解了系统及其脉冲响应之后,人们可能会想知道是否有一种方法可以通过任何给定的输入信号(不仅仅是单位脉冲)确定系统的输出信号。卷积就是这个问题的答案,前提是系统是线性且时不变的(LTI&…...

OA项目值用户登入首页展示

1.什么是OA 办公自动化(Office Automation,简称OA)是将现代化办公和计算机技术结合起来的一种新型的办公方式。办公自动化没有统一的定义,凡是在传统的办公室中采用各种新技术、新机器、新设备从事办公业务,都属于办公自动化的领域。通过实现办公自动化,或者说实现数字化…...

如何关闭前端Chrome的debugger反调试

1、禁用浏览器断点 2. 把控制台独立一个窗口...

硬件工程师笔试面试——晶振

目录 13、晶振 13.1 基础 晶振原理图 晶振实物图 13.1.1 概念 13.1.2 工作原理 13.1.3 应用领域 13.1.4 产品类型 13.2 相关问题 13.2.1 晶振的工作原理是什么,它如何保证频率的稳定性? 13.2.2 在工业控制领域,晶振是如何确保精确度的? 13.2.3 晶振的Q值是如何…...

如何用安卓玩Java版Minecraft,安卓手机安装我的世界Java版游戏的教程

安卓手机使用FCL启动器安装我的世界Java版游戏的教程。如何用安卓玩Java版Minecraft 视频教程:https://www.bilibili.com/video/BV1CctYebEzR/ 前言 目前,安卓设备上可以用来运行Java版Minecraft的启动器主要有以下几款: PojavLauncher&a…...

linux上用yolov8训练自己的数据集(pycharm远程连接服务器)

pycharm如何远程连接服务器,看之前的文章 首先去GitHub上下载项目地址,然后下载预训练模型放到项目主目录下 然后下载数据集,我这有个推荐的数据集下载网站,可以直接下载yolov8格式的数据集(还支持其他格式的数据集&a…...

Git rebase 的使用(结合图与案例)

目录 Git rebase 的使用Git rebase 概念Git rebase 原理rebase和merge的选择 Git rebase 的使用 在 Git 中整合来自不同分支的修改主要有两种方法:merge 以及 rebase Git rebase 概念 **rebase概念:**用来重新应用提交(commits&#xff09…...

一文讲懂Mac中的环境变量

你是否曾经因为环境变量配置不当而浪费了宝贵的开发时间?你是否好奇为什么有时候在终端输入命令会提示"command not found",而有时候又能正常运行?如果你是一名Mac用户,并且希望真正掌握环境变量的奥秘,那么这篇文章将为你揭开Mac中环境变量的神秘面纱,帮助你成为一…...

将硬盘的GPT 转化为MBR格式

遇到的问题 在重新安装系统时,磁盘遇到无法空间分配给系统。 解决方式 使用Windows10镜像 U盘安装,选择磁盘时,转换磁盘格式为MBR。然后退出安装程序。 Shift F10# 输入 diskpart# 查看磁盘信息 list disk# 选择需要转换的磁盘&#xff0…...

C++基于select和epoll的TCP服务器

select版本 服务器 #include <arpa/inet.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <string> #include <pthread.h> #include <sys/select…...

SpringBoot 读取配置文件的4种方式

文章目录 1. Value 注解读取单个属性2. 使用 ConfigurationProperties 注解3. 通过 Environment 对象读取属性4. 使用 PropertySource 注解加载额外的配置文件 在 Spring Boot 中&#xff0c;application.yml 文件用于配置应用程序的属性&#xff0c;Spring Boot 默认会从 src/…...

【车载开发系列】ParaSoft单元测试环境配置(三)

【车载开发系列】ParaSoft单元测试环境配置(三) 【车载开发系列】ParaSoft单元测试环境配置(三) 【车载开发系列】ParaSoft单元测试环境配置(三)一. 去插桩设置Step1:静态解析代码Step2:编辑Parasoft文件Step3:确认去插桩二. 新增测试用例Step1:生成测试用例Step2:执…...

如何让Threejs的canvas背景透明?

在Three.js中&#xff0c;要让Canvas的背景透明&#xff0c;只显示场景中的模型或物体&#xff0c;有两个关键点&#xff1a; 一、对渲染器&#xff08;Renderer&#xff09;进行alpha为true配置&#xff1b; 二、通过CSS设置&#xff0c;使canvas设定为透明背景模式。 以下是代…...

Text-to-SQL技术升级 - 阿里云OpenSearch-SQL在BIRD榜单夺冠方法

Text-to-SQL技术升级 - 阿里云OpenSearch-SQL在BIRD榜单夺冠方法 Text-to-SQL 任务旨在将自然语言查询转换为结构化查询语言(SQL),从而使非专业用户能够便捷地访问和操作数据库。近期,阿里云的 OpenSearch 引擎凭借其一致性对齐技术,在当前极具影响力的 Text-to-SQL 任务…...

[性能]高速收发的TCP/MQTT通信

Nagle算法‌是一种TCP/IP协议中的优化算法&#xff0c;旨在减少小数据包的数量&#xff0c;从而减少网络拥塞的可能性。该算法规定&#xff0c;在一个TCP连接上最多只能有一个未被确认的小分组。当数据被发送后&#xff0c;如果收到确认&#xff08;ACK&#xff09;之前&#x…...

OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3568移植案例(下)

往期知识点记录&#xff1a; OpenHarmony&#xff08;鸿蒙南向开发&#xff09;——轻量系统STM32F407芯片移植案例 OpenHarmony&#xff08;鸿蒙南向开发&#xff09;——Combo解决方案之W800芯片移植案例 OpenHarmony&#xff08;鸿蒙南向开发&#xff09;——小型系统STM32M…...

网络安全学习(五)Burpsuite实战

bp功能确实强大&#xff0c;记录一个bp手机验证码的实例。 当然&#xff0c;首先要打开bp&#xff0c;设置好浏览器的代理。 浏览器访问实例网址www.xxx.com&#xff08;隐藏真实网址&#xff09;。 真实网址有个注册功能&#xff0c;需要手机验证码。 好的&#xff0c;我们…...

ego-planner开源代码之simulator.xml介绍分析

ego-planner开源代码之simulator.xml介绍&分析 1. 源由2. simulator配置2.1 配置入参2.2 mockamap_node 地图生成节点2.3 quadrotor_simulator_so3 四旋翼仿真节点2.4 Nodelet机制 四旋翼控制节点2.5 odom_visualization 里程计数据2.6 pcl_render_node 本地感知 3. 总结 1…...

论文阅读笔记 --- 图模互补:知识图谱与大模型融合综述 --- 按参考文献整理

Large Language Models’ Understanding of Math: Source Criticism and Extrapolation Submitted on 12 Nov 2023大模型在处理结构化推理方面&#xff08;如解决数学问题[99]&#xff09;表现不佳 Tree of Thoughts: Deliberate Problem Solving with Large Language Models S…...

Cpp类和对象(上)(3)

文章目录 前言一、面向过程与面向对象初步认识二、类的引入三、类的定义四、类的访问限定符及类的封装类的访问限定符类的封装 五、类的作用域(类域)六、类的实例化七、类对象模型如何计算类对象的大小类对象的存储方式猜测 八、this指针this指针的引出this指针的特性 九、C语言…...

【微信小程序】连续拍照功能实现

前言&#xff1a; 最近在使用uniapp开发微信小程序&#xff0c;遇到这样一个需求&#xff0c;用户想要连续拍照&#xff0c;拍完之后可以删除照片&#xff0c;保留自己想要的照片&#xff0c;然后上传到服务器上。由于原生的方法只能一个个拍照上传&#xff0c;所以只能自己通过…...

JavaSE:11、内部类

学习 资源1 学习资源 2 1、成员内部类 import com.test.*;public class Main {public static void main(String [] argv){Person personnew Person();//Person构造函数Person.Woman womanperson.new Woman();//woman构造函数} }package com.test;public class Person {publ…...

VTD激光雷达(7)——07_OptiX_Variables_Advanced

文章目录 前言一、总结 前言 一、 1 和上图蓝绿的区别在于 总结...

运维工程师面试整理-自动化运维

自动化运维是现代运维工作中不可或缺的一部分,它可以大幅提升效率,减少人为错误,并使得大规模环境管理变得可行。在面试中,面试官通常会通过自动化运维相关的问题来评估你在自动化工具使用、脚本编写、CI/CD 实践以及系统监控等方面的能力。以下是关于自动化运维的详细内容…...

【JAVA基础】实现Tomcat基本功能

文章目录 TCP/IP协议Socket编程ServletTomcat 在搜索了两三天之后&#xff0c;也是大概弄懂了Tomcat是个什么东西&#xff0c;我们在说Tomcat之前&#xff0c;先来了解一下下面这三个东西&#xff1a; TCP/IP协议 TCP/IP 是互联网通信的基础协议。TCP&#xff08;传输控制协议…...

风力发电叶片缺陷检测数据集

风力发电叶片缺陷检测数据集】nc: 4 names: [Burn Mark, Coating_defects, Crack, EROSION ] 名称&#xff1a;【烧伤痕迹, 涂层缺陷, 裂缝&#xff0c;侵蚀】共1095张&#xff0c;8:1:1比例划分&#xff0c;&#xff08;train;876张&#xff0c;val&#xff1a;109张&#xff…...

数据类型自动转换的解决方案

数据类型自动转换的解决方案 java8、jdk8背景 为方便测试框架数据处理以及方便查看一些数据&#xff0c;弄了一个工具类&#xff0c;部分要点简要说明。 主要涉及到字符串与其他类型的相互转换&#xff0c;无其他类型之间的相互转换。 轻量测试框架实现与使用的总篇可见此文…...

大厂校招:唯品会Java面试题及参考答案

SortedSet 的原理 SortedSet 是一个有序的集合接口,它继承自 Set 接口。在 Java 中,常见的实现类有 TreeSet。 TreeSet 实现了 SortedSet 接口,它使用红黑树来维护集合中元素的有序性。红黑树是一种自平衡的二叉搜索树,具有以下特点: 每个节点要么是红色,要么是黑色。根节…...

Qt常用控件——QLCDNumber

文章目录 QLCDNumber核心属性倒计时小程序倒计时小程序相关问题 QLCDNumber核心属性 QLCDNumber是专门用来显示数字的控件&#xff0c;类似于这样&#xff1a; 属性说明intValue获取的数字值(int).value获取的数字值(double)和intValue是联动的例如value设为1.5&#xff0c;in…...