oracle 19c RAC补丁升级
1.停止集群件备份家目录
----两节点分别操作
cd /u01/app/19.3.0/grid/bin/
crsctl stop crstar -zcvf /u01/app.tar.gz /u01/app/u01/app/19.0.0/grid/bin/crsctl start crs
2.两节点 GI、DB OPatch 替换(都得执行)
----# 表示 root 用户,$ 表示 Oracle 用户提示符,(ASM1)$ 表示 grid 用户
# cd /u01/app/19.3.0/grid
# mv OPatch OPatch.bak20
# chown -R grid:oinstall /soft
# unzip p6880880_19c_19.20_Linux-x86-64.zip
# cp -r OPatch /u01/app/19.3.0/grid/
# chown grid:oinstall -R /u01/app/19.3.0/grid/OPatch
su - grid
cd /u01/app/19.3.0/grid/OPatch
./opatch version
$ opatch version
[grid@p19c01:/u01/app/19.3.0/grid/OPatch]$ ./opatch version
OPatch Version: 12.2.0.1.39OPatch succeeded.DB:
$ cd $ORACLE_HOME
$ mv OPatch/ OPatch_bak20
su root
chown -R oracle:oinstall /soft
cp -r /soft/OPatch ./
cd OPatch
./opatch version [oracle@p19c01:/u01/app/oracle/product/19.3.0/db/OPatch]$ ./opatch version
OPatch Version: 12.2.0.1.39OPatch succeeded.
[oracle@p19c01:/u01/app/oracle/product/19.3.0/db/OPatch]$
grid:

oracle:

3 收集补丁信息
所有库都要做:
grid:
su - root
chown grid:oinstall -R /soft
su - grid
$ORACLE_HOME/OPatch/opatch lsinventory > /soft/grid_patch.txt$ORACLE_HOME/OPatch/opatch lsinv -detail -oh $ORACLE_HOME >> /soft/grid_patch.txt$ORACLE_HOME/OPatch/opatch lspatches >> /soft/grid_patch.txt
oracle:
su - root
chown oracle:oinstall -R /soft
chown oracle:oinstall -R /OPatch
su - oracle$ORACLE_HOME/OPatch/opatch lsinventory > /soft/oracle_patch.txt
$ORACLE_HOME/OPatch/opatch lsinv -detail -oh $ORACLE_HOME >> /soft/oracle_patch.txt
$ORACLE_HOME/OPatch/opatch lspatches >> /soft/oracle_patch.txt

4 补丁冲突验证

cd /soft
[root@rac2 soft]# unzip 19c_19.20_Linux-x86-64.zip
[root@rac2 soft]# chmod -R 777 35319490我们可以下载readme文件查看Grid:
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/35319490/35320081
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/35319490/35320149
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/35319490/35332537
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/35319490/35553096
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/35319490/33575402Oracle:
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/35319490/35320081
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/35319490/35320149


grid:
所有的补丁都得打
oracle:
5 补丁空间验证

Grid用户查看
[root@rac1 ~]$ vi /soft/patch_list_gihome.txt
[root@rac1 ~]# cat /soft/patch_list_gihome.txt
下面的内容是写到/soft/patch_list_gihome.txt
/soft/35319490/35320081
/soft/35319490/35320149
/soft/35319490/35332537
/soft/35319490/35553096
/soft/35319490/33575402chown grid:oinstall -R /soft/patch_list_gihome.txt
su - grid
[grid@rac1 ~]$ $ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /soft/patch_list_gihome.txtOracle用户查看
su - root
vi /soft/patch_list_dbhome.txt
[oracle@rac1 oatch_rac]$ cat /soft/patch_list_dbhome.txt
/soft/35319490/35320081
/soft/35319490/35320149
chown oracle:oinstall -R /soft/patch_list_dbhome.txt
su - oracle
[oracle@rac1 ~]$ $ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /soft/patch_list_dbhome.txt

6 补丁预演
root:
/u01/app/oracle/product/19.3.0/db/OPatch/opatchauto apply /soft/35319490 -oh /u01/app/oracle/product/19.3.0/db -analyze/u01/app/19.3.0/grid/OPatch/opatchauto apply /soft/35319490 -oh /u01/app/19.3.0/grid -analyze


7.组件及无效对象检查
su - oracle
sqlplus / as sysdba
spool /soft/database_invalid.sql
set lines 200 pages 2000;
show parameter name;
col comp_id for a20;
col version for a20;
col status for a30;
select comp_id,version,status from dba_registry;
select owner,object_type,object_name from dba_objects where status<>'VALID';
spool off;

8 补丁更打
滚动升级,打完一个节点的再打另一个节点,此操作主库须与业务确认
我的升级采用了两种方法,一种是grid和oracle分开打补丁,一种是一起打补丁
节点一采用的是分开打补丁,节点二采用的是一起打补丁
8.1 GI补丁更打
问题/dev/shm磁盘空间不足ORA-00845: MEMORY_TARGET not supported on this system
Cause: The MEMORY_TARGET parameter was not supported on this operating system or /dev/shm was not sized correctly on Linux.
Action: Refer to documentation for a list of supported operating systems. Or, size /dev/shm to be at least the SGA_MAX_SIZE on each Oracle instance running on the system.解决方法
扩容/shmvim /etc/fstabtmpfs /dev/shm tmpfs defaults,size=3G 0 0umount /dev/shm/mount /dev/shm/df -h

首先检测集群的状态,保证集群是正常工作的
su - oracle
srvctl status database -d p19c0
如果没启动,记得启动一下实例
srvctl start instance -d p19c0 -i p19c01
srvctl start instance -d p19c0 -i p19c02
可以在grid中查看
su - grid
cd /u01/app/19.3.0/grid/bin
crsctl status res -t
接着我们按照readme的要求将OPatch的路径加入到.bash_profile中
su - root
vi .bash_profile
export PATH=$PATH:$HOME/bin:/u01/app/19.3.0/grid/bin
export PATH=$PATH:/u01/app/19.3.0/grid/OPatch
source .bash_profile
补丁冲突检查ps -ef | grep sqlplus //如果有sqlplus连进去都需要杀掉,两个节点都检查
su - root
export PERL5LIB=/u01/app/19.3.0/grid/perl/lib
cd /
opatchauto apply /soft/35319490 -analyze给grid用户打补丁ps -ef | grep sqlplus
export PERL5LIB=/u01/app/19.3.0/grid/perl/lib
opatchauto apply /soft/35319490ps -ef | grep sqlplus
export PERL5LIB=/u01/app/19.3.0/grid/perl/lib
/u01/app/19.3.0/grid/OPatch/opatchauto apply /soft/35319490 -oh /u01/app/19.3.0/grid -analyzeps -ef | grep sqlplus
export PERL5LIB=/u01/app/19.3.0/grid/perl/lib
/u01/app/19.3.0/grid/OPatch/opatchauto apply /soft/35319490 -oh /u01/app/19.3.0/grid给oracle用户打补丁ps -ef | grep sqlplus
export PERL5LIB=/u01/app/19.3.0/grid/perl/lib
/u01/app/oracle/product/19.3.0/db/OPatch/opatchauto apply /soft/35319490 -oh /u01/app/oracle/product/19.3.0/db -analyzeps -ef | grep sqlplus
export PERL5LIB=/u01/app/19.3.0/grid/perl/lib
/u01/app/oracle/product/19.3.0/db/OPatch/opatchauto apply /soft/35319490 -oh /u01/app/oracle/product/19.3.0/db


补丁检查:
opatch lsinventory
回退补丁:
opatchauto rollback /soft/35319490
节点二打补丁
chown oracle:oinstall -R /soft/35319490
首先检测集群的状态,保证集群是正常工作的
su - oracle
srvctl status database -d p19c0
如果没启动,记得启动一下实例
srvctl start instance -d p19c0 -i p19c01
srvctl start instance -d p19c0 -i p19c02
可以在grid仲查看
cd /u01/app/19.3.0/grid/bin
crsctl status res -t
接着我们按照readme的要求将OPatch的路径加入到.bash_profile中
su - root
vi .bash_profile
PATH=$PATH:$HOME/bin:/u01/app/19.3.0/grid/bin
export PATH=$PATH:/u01/app/19.3.0/grid/OPatch
source .bash_profile
我们要将sqlplus进程都退出补丁冲突检查ps -ef | grep sqlplus //如果有sqlplus连进去都需要杀掉,两个节点都检查
su - root
chmod 660 /u01/app/oraInventory/ContentsXML/oui-patch.xml
chown grid:oinstall -R /u01/app/oraInventory/ContentsXML/oui-patch.xml
su - root
cd /
export PERL5LIB=/u01/app/19.3.0/grid/perl/lib
opatchauto apply /soft/35319490 -analyze
打补丁ps -ef | grep sqlplus
export PERL5LIB=/u01/app/19.3.0/grid/perl/libsu - oracle
cd $ORACLE_HOME/OPatch
./opatch lspatches
opatchauto rollback /soft/33182768
opatchauto rollback /soft/33182768 -oh /u01/app/19.3.0/grid
8.2节点一打完补丁之后进行补丁注册以及编译无效对象
将修改后的SQL文件加载到数据库中
下表是针对独立数据库运行Datapatch实用程序的步骤,在一个节点执行即可。
sqlplus / as sysdba
startup upgrade
quitcd $ORACLE_HOME/OPatch
./datapatch -verbose
查看patch
set linesize 200;
col STATUS format a20;
col DESCRIPTION format a80;
select PATCH_ID,PATCH_TYPE,STATUS,DESCRIPTION from dba_registry_sqlpatch;查看是否有存在失效对象:
col owner for a16
col object_name for a50 trunc
col object_type for a20 trunc
select owner,object_name,object_type from dba_objects where status != 'VALID';
--若有,执行命令清空:
@?/rdbms/admin/utlrp.sql




打完补丁之后检查
crsctl query crs releasepatch
crsctl query crs softwarepatch
kfod op=patches
9.打完补丁之后的操作
启动数据库
startup
将修改后的SQL文件加载到数据库中
下表是针对独立数据库运行Datapatch实用程序的步骤,在一个节点执行即可。
sqlplus / as sysdba
startup upgrade
quitcd $ORACLE_HOME/OPatch
./datapatch -verbose
查看patch
set linesize 200;
col STATUS format a20;
col DESCRIPTION format a80;
select PATCH_ID,PATCH_TYPE,STATUS,DESCRIPTION from dba_registry_sqlpatch;查看是否有存在失效对象:
col owner for a16
col object_name for a50 trunc
col object_type for a20 trunc
select owner,object_name,object_type from dba_objects where status != 'VALID';
--若有,执行命令清空:
@?/rdbms/admin/utlrp.sql
10.补丁回退
节点一
su - root
chown oracle:oinstall -R /soft
chown oracle:oinstall -R /soft/35319490
/u01/app/19.3.0/grid/OPatch/opatchauto rollback /soft/35319490 -oh /u01/app/19.3.0/gridchown oracle:oinstall -R /soft
chown oracle:oinstall -R /soft/35319490
/u01/app/oracle/product/19.3.0/db/OPatch/opatchauto rollback /soft/35319490 -oh /u01/app/oracle/product/19.3.0/db
节点二
su - root
chown grid:oinstall -R /soft
chown grid:oinstall -R /soft/35319490
/u01/app/19.3.0/grid/OPatch/opatchauto rollback /soft/35319490 -oh /u01/app/19.3.0/gridchown oracle:oinstall -R /soft
chown oracle:oinstall -R /soft/35319490
/u01/app/oracle/product/19.3.0/db/OPatch/opatchauto rollback /soft/35319490 -oh /u01/app/oracle/product/19.3.0/db



回退之后检查
crsctl query crs releasepatch
crsctl query crs softwarepatch
kfod op=patches



回退完成

p/oracle/product/19.3.0/db
[外链图片转存中...(img-eps349ri-1711252411865)][外链图片转存中...(img-pI7y6usu-1711252411865)][外链图片转存中...(img-Nuwn8eDV-1711252411865)]回退之后检查
crsctl query crs releasepatch
crsctl query crs softwarepatch
kfod op=patches
[外链图片转存中...(img-HgvYkpUF-1711252411866)][外链图片转存中...(img-nwbqeyXP-1711252411866)][外链图片转存中...(img-cy5clEmX-1711252411866)]回退完成[外链图片转存中...(img-zWeXGX0v-1711252411867)]相关文章:
oracle 19c RAC补丁升级
1.停止集群件备份家目录 ----两节点分别操作 cd /u01/app/19.3.0/grid/bin/ crsctl stop crstar -zcvf /u01/app.tar.gz /u01/app/u01/app/19.0.0/grid/bin/crsctl start crs2.两节点 GI、DB OPatch 替换(都得执行) ----# 表示 root 用户,$…...
计算机视觉研究方向
计算机视觉是一个广泛且快速发展的领域,涵盖了多种研究方向和技术。主要的研究方向包括图像处理、目标检测与识别、图像生成、三维视觉、行为识别、深度学习与计算机视觉、多媒体分析、视频理解、风格化、全向视觉传感器等。这些研究方向和技术不断进步,…...
数据分析-Pandas分类数据的比较如何避坑
数据分析-Pandas分类数据的比较如何避坑 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表…...
P - Beat
题目分析 1.看数据范围,大概知道dfs能做 2.自0问题开始查找,确保之后每次查找到的问题的困难度均大于上一次 3.遍历所有情况再记录cnt即可 代码 #include <iostream> #include <algorithm> #include <cstdio> #include <cstring&…...
机器学习——GBDT算法
机器学习——GBDT算法 在机器学习领域,梯度提升决策树(Gradient Boosting Decision Trees,简称GBDT)是一种十分强大且常用的集成学习算法。它通过迭代地训练决策树来不断提升模型性能,是一种基于弱学习器的提升算法。…...
阿里二面:谈谈ThreadLocal的内存泄漏问题?问麻了。。。。
引言 ThreadLocal在Java多线程编程中扮演着重要的角色,它提供了一种线程局部存储机制,允许每个线程拥有独立的变量副本,从而有效地避免了线程间的数据共享冲突。ThreadLocal的主要用途在于,当需要为每个线程维护一个独立的上下文…...
IOS面试题编程机制 46-50
46. 阐述 Method Swizzle(黑魔法),什么情况下会使用?1). 在没有一个类的实现源码的情况下,想改变其中一个方法的实现,除了继承它重写、和借助类别重名方法暴力抢先之外,还有更加灵活的方法 Method Swizzle。 2). Method Swizzle 指的是改变一个已存在的选择器对应的实现…...
web表单标签与练习(3.18)
一、表单域 表单域是一个包含表单元素的区域。 在HTML标签中,< form >标签用于定义表单域,以实现用户信息和传递。 < form >会把它范围内的表单元素信息提交给服务器。 表单属性 action url地址 用于指定接收并处理表单数据的服务器程序的…...
【协议-HTTP】
HTTP协议 HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议。http协议定义web客户端如何才能够web服务器请求web页面,以及服务器如何把web页面传送给客户端。 HTTP 是一种无状态 (stateless) 协议, HTTP协议本身…...
VUE3v-text、v-html、:style的理解
在Vue 3中,v-text、v-html和:style是三个常用的指令,它们各自具有不同的功能和用途。 v-text: v-text用于操作元素中的纯文本内容。它接受一个表达式,并将该表达式的值设置为元素的文本内容。如果元素原本有文本内容,…...
Dataset之UCI_autos_cars:UCI_autos_imports-85(汽车进口数据集)的简介、安装、案例应用之详细攻略
Dataset之UCI_autos_cars:UCI_autos_imports-85(汽车进口数据集)的简介、安装、案例应用之详细攻略 目录 UCI_autos_imports-85的简介 UCI_autos_imports-85的安装 UCI_autos_imports-85的案例应用 1、训练一个简单的线性回归模型来预测汽车的价格 UCI_autos_i…...
结构体类型详细讲解(附带枚举,联合)
前言: 如果你还对结构体不是很了解,那么本篇文章将会从 为什么存在结构体,结构体的优点,结构体的定义,结构体的使用与结构体的大小依次介绍,同样会附带枚举与联合体 目录 为什么存在结构体: 结构…...
编程生活day1--个位数统计、考试座位号、A-B、计算阶乘和
个位数统计 题目描述: 定一个 k 位整数 Ndk−110k−1⋯d1101d0 (0≤di≤9, i0,⋯,k−1, dk−1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 N100311,则有 2 个 0,3 个 1,和 …...
mysql体系结构及主要文件
目录 1.mysql体系结构 2.数据库与数据库实例 3.物理存储结构编辑 4.mysql主要文件 4.1数据库配置文件 4.2错误日志 4.3表结构定义文件 4.4慢查询日志 4.4.1慢查询相关参数 4.4.2慢查询参数默认值 4.4.3my.cnf中设置慢查询参数 4.4.4slow_query_log参数 4.4.…...
PwnLab靶场PHP伪协议OSCP推荐代码审计命令劫持命令注入
下载链接:PwnLab: init ~ VulnHub 安装: 打开vxbox直接选择导入虚拟电脑即可 正文: 先用nmap扫描靶机ip nmap -sn 192.168.1.1/24 获取到靶机ip后,对靶机的端口进行扫描,并把结果输出到PwnLab文件夹下,命名…...
涉密信息系统集成资质八大类别办理条件是什么?
涉密资质分为八个不同类别,那每个类别的申报条件有哪些?让我们一起来看看吧: 涉密资质申报条件 依据《涉密信息系统集成资质管理办法》的有关规定,申请涉密信息系统集成资质的企事业单位,除符合《涉密信息系统集成资…...
Shell脚本总结-反引号-${}-$()
反引号 反引号的作用就是将输出结果显示出来。 [rootldpbzhaonan bash]$ echo $a ldpbzhaonan${} ${}引用变量,包含自定义的和环境变量。 [rootldpbzhaonan bash]$ a1 [rootldpbzhaonan bash]$ echo ${a} 1$() $()和反引号,返回的是一个指令或者程序…...
Spring MVC入门(4)
请求 获取Cookie/Session 获取Cookie 传统方式: RequestMapping("/m11")public String method11(HttpServletRequest request, HttpServletResponse response) {//获取所有Cookie信息Cookie[] cookies request.getCookies();//打印Cookie信息StringBuilder build…...
RuoYi-Vue-Plus(基础知识点jackson、mybatisplus、redis)
一、JacksonConfig 全局序列化反序列化配置 1.1yml中配置 #时区 spring.jackson.time-zoneGMT8 #日期格式 spring.jackson.date-formatyyyy-MM-dd HH:mm:ss #默认转json的属性,这里设置为非空才转json spring.jackson.default-property-inclusionnon_null #设置属性…...
使用verillog编写KMP字符串匹配算法
设计思路如下: 定义模块的输入输出信号:包括时钟信号clk、复位信号rst、模式串pattern、文本串text以及输出信号match。定义所需寄存器和变量:使用寄存器来存储状态机的状态以及其他控制变量,如模式串数组P、失配函数数组F、模式串位置p_index、文本串位置t_index等。在时钟…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
