Oracle 19c RAC 补丁升级 补丁回退

  • 补丁升级流程
    1. 补丁升级
      1. 停止集群备份家目录

两节点分别操作

cd /u01/app/19.3.0/grid/bin/

crsctl stop crs

tar -zcvf /u01/app.tar.gz /u01/app

/u01/app/19.0.0/grid/bin/crsctl start crs

      1. 两节点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.39

OPatch succeeded.

$ 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.39

OPatch succeeded.

[oracle@p19c01:/u01/app/oracle/product/19.3.0/db/OPatch]$

升级后:

r19c01(oracle)

r19c01(grid)

r19c02(oracle)

r19c02(grdi)

      1. 收集补丁信息(两节点)

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

      1. 补丁冲突验证

cd /soft

unzip 19c_19.20_Linux-x86-64.zip

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/33575402

Oracle:

$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/35319490/35320081

$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/35319490/35320149

      1. 补丁空间验证

Grid用户查看

vi /soft/patch_list_gihome.txt

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/33575402

chown grid:oinstall -R /soft/patch_list_gihome.txt

su - grid

$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /soft/patch_list_gihome.txt

Oracle用户查看

su - root

vi /soft/patch_list_dbhome.txt

cat  /soft/patch_list_dbhome.txt

/soft/35319490/35320081

/soft/35319490/35320149

chown oracle:oinstall -R  /soft/patch_list_dbhome.txt

su - oracle

$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /soft/patch_list_dbhome.txt

    1. 补丁预演

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

      1. 组件检查,无效对象检查

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;

    1. 补丁更新

可以grid和oracle同时打也可以分开打

首先检测集群的状态,保证集群是正常工作的

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/35319490

 ps -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 -analyze

 ps -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 -analyze

 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

      1. 补丁检查

opatch lsinventory

      1. 回退补丁

opatchauto rollback /soft/35319490

    1. 打补丁
      1. 节点二打补丁

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/lib

su - oracle

cd $ORACLE_HOME/OPatch

./opatch lspatches

opatchauto rollback /soft/33182768

opatchauto rollback  /soft/33182768 -oh /u01/app/19.3.0/grid

      1. 当节点一打开后再进行补丁注册,编译无效对象

将修改后的SQL文件加载到数据库中

下表是针对独立数据库运行Datapatch实用程序的步骤,在一个节点执行即可。

sqlplus / as sysdba

startup upgrade

quit

cd $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

      1. 打完补丁后检查

crsctl query crs releasepatch

crsctl query crs softwarepatch

kfod op=patches

      1. 检查

启动数据库

startup

将修改后的SQL文件加载到数据库中

下表是针对独立数据库运行Datapatch实用程序的步骤,在一个节点执行即可。

sqlplus / as sysdba

startup upgrade

quit

cd $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

  • 补丁回退
    1. 节点一

su - root

chown oracle:oinstall -R /soft

chown oracle:oinstall -R /soft/35642822

/u01/app/19.3.0/grid/OPatch/opatchauto rollback /soft/35642822-oh /u01/app/19.3.0/grid

chown oracle:oinstall -R /soft

chown oracle:oinstall -R /soft/35642822

/u01/app/oracle/product/19.3.0/db/OPatch/opatchauto rollback /soft/35642822-oh /u01/app/oracle/product/19.3.0/db

    1. 节点二

su - root

chown oracle:oinstall -R /soft

chown oracle:oinstall -R /soft/35642822

/u01/app/19.3.0/grid/OPatch/opatchauto rollback /soft/35642822-oh /u01/app/19.3.0/grid

chown oracle:oinstall -R /soft

chown oracle:oinstall -R /soft/35642822

/u01/app/oracle/product/19.3.0/db/OPatch/opatchauto rollback /soft/35642822-oh /u01/app/oracle/product/19.3.0/db

    1. 回退之后检查

select owner,object_type,object_name from dba_objects where status<>'VALID'; 

cd $ORACLE_HOME/rdbms/admin

sqlplus / as sysdba

@utlrp.sql

select * from product_component_version;

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT、ffmpeg视频监控分屏

1、支持分屏&#xff08;4&#xff0c;6&#xff0c;8&#xff0c;9&#xff0c;13&#xff0c;16&#xff0c;25&#xff0c;32&#xff0c;64&#xff09;切换 2、支持拖拽效果 3、支持播放mp4&#xff0c;rtmp等 4、本人亲测支持播放32路&#xff0c;64路没做测试 5、支持读…

计算机网络—传输层UDP协议:原理、应用

​ &#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;2月のセプテンバー 1:21━━━━━━️&#x1f49f;──────── 5:21 &#x1f504; ◀️ ⏸ ▶️ ☰ &am…

Github 2024-04-15 开源项目日报Top10

根据Github Trendings的统计,今日(2024-04-15统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4TypeScript项目2HTML项目1JavaScript项目1C++项目1Rust项目1Mojo项目1Fooocus: 图像生成软件 创建周期:188 天开发语言:Python协议…

基于SSM微信小程序的四六级词汇系统

采用技术 基于SSM微信小程序的四六级词汇系统的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringMVCMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 用户客户端 注册用户界面 首页界面 我的界面 用户信息界…

SqlServer专题

目录 1&#xff0c;连接数据库 2&#xff0c;连接池 1.何为连接池&#xff1f; 2.连接池运行原理。 3.如何查看连接池&#xff1f; 4.连接池注意事项。 3&#xff0c;一般SQL语句。 4&#xff0c;控制语句 1.判断语句 2.循环语句 5&#xff0c;视图 1.使用…

Spark 应用程序优化和调优总结

文章目录 前言调整 Spark 默认配置查看和设置 Spark 配置信息动态扩展集群负载 数据的缓存和持久化DataFrame.cache()DataFrame.persist()何时缓存和持久化何时不缓存和持久化 Spark 中的 JOINs广播连接排序合并连接 总结 前言 本文总结了 Spark 中比较重要和常用的调优手段&a…

RedisTemplate

3.3.RedisTemplate 在Sentinel集群监管下的Redis主从集群&#xff0c;其节点会因为自动故障转移而发生变化&#xff0c;Redis的客户端必须感知这种变化&#xff0c;及时更新连接信息。Spring的RedisTemplate底层利用lettuce实现了节点的感知和自动切换。 下面&#xff0c;我们…

一二三应用开发平台使用手册——系统管理-用户-使用说明

概述 对于新系统&#xff0c;如果说初始化组织机构是第一步工作&#xff0c;那么初始化用户则是第二步工作。今天来介绍系统管理模块中的用户使用说明。 对于企业应用&#xff0c;人员是重要的基础数据。 在不少平台和系统中&#xff0c;对“人”的概念进一步细分&#xff0c;…

个人网站制作 Part 19 添加在线聊天支持 | Web开发项目

文章目录 &#x1f469;‍&#x1f4bb; 基础Web开发练手项目系列&#xff1a;个人网站制作&#x1f680; 添加在线聊天支持&#x1f528;使用在线聊天工具&#x1f527;步骤 1: 选择在线聊天工具&#x1f527;步骤 2: 注册Tawk.to账户&#x1f527;步骤 3: 获取嵌入代码 &…

LeetCode 53. 最大子序和

解题思路 相关代码 class Solution {public int maxSubArray(int[] nums) {//f[i]是以nums[i]结尾的连续子数组的最大和。int f[] new int[100010];f[0] nums[0];int resnums[0];for(int i1;i<nums.length;i){f[i] Math.max(f[i-1]nums[i],nums[i]);res Math.max(res,f…

SQLite---调试提示(十九)

返回&#xff1a;SQLite—系列文章目录 上一篇:SQLite Android 绑定&#xff08;十八&#xff09; 下一篇&#xff1a;从 SQLite 3.4.2 迁移到 3.5.0&#xff08;二十&#xff09; ​ 以下是 SQLite 开发人员跟踪、检查和了解 核心 SQLite 库。 这些技术旨在帮助理解 核…

【前端工程化指南】什么是版本控制系统?

什么是版本控制系统 想必大家在多人开发时一定会遇到这样的问题&#xff1a; 每次集中合并大家的代码都要通过U盘、网盘等各类传输工具集中代码&#xff0c;非常麻烦。在多人同时修改同一文件或相同部分代码时&#xff0c;可能会产生冲突&#xff0c;开发人员需要手动比较代码…