暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Oracle 19C补丁更打手册

IT那活儿 2023-02-02
3400

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

本文更打Patch 32900083为示例,未测试,仅供参考。




数据库版本现状



1. GI补丁现状

grid用户通过如下命令收集当前GI补丁信息:
$ORACLE_HOME/OPatch/opatch lsinventory > /tmp/grid_patch.txt
$ORACLE_HOME/OPatch/opatch lsinv -detail -oh $ORACLE_HOME >> /tmp/grid_patch.txt
$ORACLE_HOME/OPatch/opatch lspatches >> /tmp/grid_patch.txt

2. DB补丁现状

oracle用户通过如下命令收集当前DB补丁信息:
$ORACLE_HOME/OPatch/opatch lsinventory > /tmp/oracle_patch.txt
$ORACLE_HOME/OPatch/opatch lsinv -detail -oh $ORACLE_HOME >> /tmp/oracle_patch.txt
$ORACLE_HOME/OPatch/opatch lspatches >> /tmp/oracle_patch.txt

3. DB组件现状

获取组件信息,无效对象信息:
sqlplus  as sysdba
spool tmp/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';
col ACTION_TIME for a20;
col action for a15;
col DESCRIPTION for a25;
col status for a20;
col BUNDLE_SERIES for a15;
select patch_id,action,action_time,description,status,version,patch_uid,BUNDLE_SERIES,BUNDLE_ID from registry$sqlpatch order by action_time;
spool off;

4. 集群资源现状

grid用户获取集群进程,资源状态:
$crsctl check crs
crsctl check cluster -all
$crsctl status res –t

5. 监听服务现状

grid用户各个节点获取:

$lsnrctl status




opach版本更新



1. 当前版本信息

获取grid,oracle当前opatch版本信息:
$ORACLE_HOME/OPatch/opatch version

2. 新版本更新

当前opatch版本信息如果不满足当前打补丁的要求(可查看要更打补丁集中的readme来确认opatch版本的要求),需要从mos网站下载符合当前数据库版本最新的opatch包将旧版本的opatch目录替换掉,GI和DB都需要。

su - grid
cd u01/app/19.0.0.0/grid #$GI_HOME
mv OPatch OPatch_bak2022
cd u01/soft
unzip p6880880_190000_Linux-x86-64.zip -d u01/app/19.0.0.0/grid #解压后注意权限
$ORACLE_HOME/OPatch/opatch version

su - oracle
cd u01/app/oracle/product/19.0.0.0 #ORACLE_HOME
mv OPatch OPatch_bak2022
cd u01/sot
unzip p6880880_190000_Linux-x86-64.zip -d u01/app/oracle/product/19.0.0.0 #解压后注意权限
$ORACLE_HOME/OPatch/opatch version




补丁冲突验证



1. 补丁软件验证

GI和DB都要验证,该步骤可提前做。
su - grid
/u01/app/19.0.0.0/grid/OPatch/opatchauto apply u01/software/patch/32900083/32895426 -oh u01/app/19.0.0.0/grid –analyze
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir u01/software/patch/32900083/32895426/32904851
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir u01/software/patch/32900083/32895426/32916816

$
ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir u01/software/patch/32900083/32895426/32915586
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir u01/software/patch/32900083/32895426/32918050
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir u01/software/patch/32900083/32895426/32585572

su - oracle
/u01/app/oracle/product/19.0.0.0/OPatch/opatchauto apply u01/software/patch/32900083/32895426 -oh u01/app/oracle/product/19.0.0.0 -analyze
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir u01/software/patch/32900083/32895426/32904851
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir u01/software/patch/32900083/32895426/32916816

2. one-off补丁冲突处理

如果one-off补丁冲突,可考虑现将该补丁回滚掉,待PSU/RU更打后,再考虑将该补丁更打上去。

3. 其他冲突处理

可以根据相关报错信息寻找解决方案。




软件备份



1. 清除GI日志

可清除监听日志,CRS日志,审计日志,asm相关日志。

2. 清除DB日志

可清除审计日志,trace日志。

3. 备份软件目录

>>>>停库
srvctl stop database -db stbcrma
>>>>各个节点依次停集群
#crsctl stop crs
>>>>确认是否还有grid,oracle进程,如果有kill
ps -ef |grep oracle
ps -ef | grep grid

>
>>>备份整个目录(GI,ORACLE,ORAINVENTORY)
>>>>使用root用户备份
>>>>节点1
tar -zcvf u01/ stbcrma01nb.tar u01/app/* -p -P
>>>>节点2
tar -zcvf u01/ stbcrma02nb.tar u01/app/* -p -P

4. 补丁空间验证

>>>>使用grid用户检查空间是否满足GIRU部署
$ vi tmp/patch_list_gihome.txt
/u01/software/patch/32900083/32895426/32904851
/u01/software/patch/32900083/32895426/32916816
/u01/software/patch/32900083/32895426/32915586
/u01/software/patch/32900083/32895426/32918050
/u01/software/patch/32900083/32895426/32585572
$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_gihome.txt

>
>>>使用oracle用户检查系统空间是否满足DBRU的部署
$ vi /tmp/patch_list_dbhome.txt
/u01/software/patch/32900083/32895426/32904851
/u01/software/patch/32900083/32895426/32916816
$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_dbhome.txt




RU补丁更打及验证



1. 各节点GI补丁依次更打且验证

>>>>将集群启动
#crsctl start crs
>>>>使用root用户安装部署GIRU补丁,各个节点依次更打
#/u01/app/19.0.0.0/grid/OPatch/opatchauto apply /u01/software/patch/32900083/32895426/ -oh /u01/app/19.0.0.0/grid
>>>>部署成功之后进行验证
su - grid
$ORACLE_HOME/OPatch/opatch lspatches
$ORACLE_HOME/OPatch/opatch lsinventory
$ORACLE_HOME/OPatch/opatch lspatches -id 32904851 -verify
$ORACLE_HOME/OPatch/opatch lspatches -id 32916816 -verify
$ORACLE_HOME/OPatch/opatch lspatches -id 32915586 -verify
$ORACLE_HOME/OPatch/opatch lspatches -id 32918050 -verify
$ORACLE_HOME/OPatch/opatch lspatches -id 32585572 -verify

2. 各节点DB补丁依次更打且验证

>>>>安装ORACLE RDBMS补丁[使用root用户]
>>>>使用root用户操作,部署DBRU,各节点依次更打
/u01/app/oracle/product/19.0.0.0/OPatch/opatchauto apply /u01/software/patch/32900083/32895426/ -oh /u01/app/oracle/product/19.0.0.0
>>>>补丁验证[使用oracle用户]
su - oracle
$ORACLE_HOME/OPatch/opatch lspatches
$ORACLE_HOME/OPatch/opatch lsinventory
$ORACLE_HOME/OPatch/opatch lspatches -id 32904851 -verify
$ORACLE_HOME/OPatch/opatch lspatches -id 32916816 -verify




OJVM补丁更打



各节点依次更打

>>>所有节点GI、DB补丁全部更打完成之后,再开展OJVM补丁更打
>>>>停集群
crsctl stop crs
>>>>应用OJVM补丁,各节点依次更打
cd /u01/software/patch/32900083/32876380
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
opatch apply
>>>>查看补丁
opatch lspatches



装载SQL FILES



>>>>启动集群
#crsctl start crs
su – oracle
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> STARTUP
SQL> alter system set cluster_database=false scope=spfile;
SQL> shutdown immediate
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> STARTUP UPGRADE
SQL> exit
$ cd $ORACLE_HOME/OPatch
$ ./datapatch -verbose
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> alter system set cluster_database=true scope=spfile;
SQL> SHUTDOWN IMMEDIATE
>>>>启动数据库
$ORACLE_HOME/bin/srvctl start database -db stbcrma




RU补丁验证



1. GI验证

$ORACLE_HOME/OPatch/opatch lspatches
$ORACLE_HOME/OPatch/opatch lsinventory

2. DB验证

$ORACLE_HOME/OPatch/opatch lspatches
$ORACLE_HOME/OPatch/opatch lsinventory
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';

>>>有些包如果是无效对象,运行下面脚本(选做,和补丁之前对比)
cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> @utlrp.sql

col ACTION_TIME for a20;
col action for a15;
col DESCRIPTION for a25;
col status for a20;
col BUNDLE_SERIES for a15;
select patch_id,action,action_time,description,status,version,patch_uid,BUNDLE_SERIES,BUNDLE_ID from registry$sqlpatch order by action_time;

3. 集群资源验证

#crsctl check crs
$crssctl status res -t
$lsnrctl status


END


本文作者:汪声新(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论