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 session

Oracle Home       : /u01/app/11.2.0/grid
Central Inventory : /u01/app/oraInventory
   from           : /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.log

Invoking 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 session

Oracle Home       : /u01/app/oracle/product/11.2/db_1
Central Inventory : /u01/app/oraInventory
   from           : /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.log

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/876255.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

效率神器来了:AI工具手把手教你快速提升工作效能

随着科技的进步,AI工具已经成为提升工作效率的关键手段。本文将介绍一些实用的AI工具和方法,帮助你自动化繁琐的重复性任务、优化数据管理、促进团队协作与沟通,并提升决策质量。 背景:OOP AI-免费问答学习交流-GPT 自动化重复性任…

【Linux】【Vim】Vim 基础

Vim/Gvim 基础 文本编辑基础编辑操作符命令和位移改变文本重复改动Visual 模式移动文本(复制、粘贴)文本对象替换模式 光标移动以 word 为单位移动行首和行尾行内指定单字符移动到匹配的括号光标移动到指定行滚屏简单查找 /string标记 分屏vimdiff 文本编辑 基础编辑 Normal 模…

【网络安全的神秘世界】渗透测试基础

🌝博客主页:泥菩萨 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 渗透测试基础 基于功能去进行漏洞挖掘 1、编辑器漏洞 1.1 编辑器漏洞介绍 一般企业搭建网站可能采用了通用模板&#xff…

app抓包 chrome://inspect/#devices

一、前言: 1.首先不支持flutter框架,可支持ionic、taro 2.初次需要翻墙 3.app为debug包,非release 二、具体步骤 1.谷歌浏览器地址:chrome://inspect/#devices qq浏览器地址:qqbrowser://inspect/#devi…

Lombok:Java开发者的代码简化神器【后端 17】

Lombok:Java开发者的代码简化神器 在Java开发中,我们经常需要编写大量的样板代码,如getter、setter、equals、hashCode、toString等方法。这些代码虽然基础且必要,但往往占据了大量开发时间,且容易在属性变更时引发错误…

华为OD机试 - 计算误码率(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

怎么将几个pdf合成为一个?把几个PDF合并成为一个的8种方法

怎么将几个pdf合成为一个?将多个PDF文件合并成一个整体可以显著提高信息整合的效率,并简化文件的管理与传递。例如,将不同章节的电子书合成一本完整的书籍,或者将多个部门的报告整合成一个统一的文档,可以使处理流程变…

CCS811二氧化碳传感器详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 3.工作原理介绍 三、程序设计 main.c文件 ccs811.h文件 ccs811.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 CCS811模块是一种气体传感器,可以测量环境中TVOC(总挥发性有机物质)浓度和eCO2…

6.接口测试加密接口(Jmeter/工具/函数助手对话框、Beanshell脚本)

一、接口测试加密接口,签名接口 1.加密算法: 可以解密的: 对称式加密(私钥加密):AES,DES,Base64 https://www.bejson.com 非对称加密(双…

Fisco Bcos 2.11.0通过网络和本地二进制文件搭建单机节点联盟链网络(搭建你的第一个区块链网络)

Fisco Bcos 2.11.0通过网络和本地二进制文件搭建单机节点联盟链网络(搭建你的第一个区块链网络) 文章目录 Fisco Bcos 2.11.0通过网络和本地二进制文件搭建单机节点联盟链网络(搭建你的第一个区块链网络)前言一、Ubuntu依赖安装二、创建操作目录, 下载build_chain.sh脚本2.1 先…

Linux-Swap分区使用与扩容

一、背景 在Linux系统中,swap空间(通常称为swap分区)是一个用于补充内存资源的重要组件。当系统的物理RAM不足时,Linux会将一部分不经常使用的内存页面移动到硬盘上的swap空间中,这个过程被称为分页(paging…

【JavaEE初阶】多线程(4)

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 线程安全的 第四个原因 代码举例: 分析原因 解决方法 方法1 方法2 wait(等待)和notify(通知) wait和sleep区别 线程安全的 第四个原因 内存可见性,引起的线程安全问…

CloudXR 套件扩展 XR 工作流

NVIDIA为开发者提供了一个先进的平台,开发者可以在该平台上使用全新NVIDIA CloudXR 套件来创建可扩展、品牌化的定制扩展现实(XR)产品。 NVIDIA CloudXR 套件基于全新架构而打造,是扩展XR生态的重要工具。它为开发者、专业人士和…

彻底理解浅拷贝和深拷贝

目录 浅拷贝实现 深拷贝实现自己手写 浅拷贝 浅拷贝是指创建一个新对象,这个对象具有原对象属性的精确副本 基本数据类型(如字符串、数字等),在浅拷贝过程中它们是通过值传递的,而不是引用传递,修改值并不…

Git项目管理工具

分布式版本控制系统

数据集 wider person 户外密集行人检测 >> DataBall

数据集 wider person 用于野外密集行人检测的多样化数据集 行人检测 目标检测 户外密集行人检测的多样化数据集 WiderPerson: A Diverse Dataset for Dense Pedestrian Detection in the Wild article{zhang2019widerperson, Author {Zhang, Shifeng and Xie, Yiliang and Wa…

常用环境部署(二十)——docker部署OpenProject

一、安装Docker及Docker-compose https://blog.csdn.net/wd520521/article/details/112609796 二、docker拉取OpenProject镜像 1、拉取镜像 docker pull openproject/openproject:14 注意: 拉取镜像的时候会有超时的现象出现,大家重新拉取几次就行…

链式二叉树的基本操作(C语言版)

目录 1.二叉树的定义 2.创建二叉树 3.递归遍历二叉树 1)前序遍历 2)中序遍历 3)后序遍历 4.层序遍历 5.计算节点个数 6.计算叶子节点个数 7.计算第K层节点个数 8.计算树的最大深度 9.查找值为x的节点 10.二叉树的销毁 从二叉树…

分贝转换 1 mVpp = 9.03dBmV

分贝转换 1 mVpp 9.03dBmV 函数发生器调节如下参数在频谱仪器上能看到9.03dBmv的电压值函数发生器产生 30mVpp 频谱仪会显示多少dBmV 函数发生器调节如下参数 输出频率:10 MHz 波形类型:正弦波 阻抗:50 Ω 幅度:1 mVpp …

【计算机网络 - 基础问题】每日 3 题(六)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…