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

【补丁】19c GI+DB补丁升级

原创 yang 2023-07-25
612

1.使用root用户备份oracle、grid的目录,以及oraInventory目录(所有节点都要,注意目录空间使用率)
备份grid目录
df -Th
du -sh /u01/app/19.0.0.0
cd /u01/app/19.0.0.0/
tar -zcf /u01/soft/2023/backup/grid_home_1.tar grid --ignore-command-error

备份oracle目录
df -Th
du -sh /u01/app/oracle/product/19.0.0.0
cd /u01/app/oracle/product/19.0.0.0
tar -zcf /u01/soft/2023/backup/oracle_home_1.tar db_1 --ignore-command-error

备份oraInventory目录
cd /u01/app
tar -cf /u01/soft/2023/backup/oraInventory_1.tar oraInventory --ignore-command-error

2.提前更新替换grid和oracle的OPatch工具
root备份,更新GI OPatch:
cd /u01/app/19.0.0.0/grid
mv OPatch OPatch_BAK
cd /patches/19c
unzip p6880880_190000_Linux-x86-64.zip -d /u01/app/19.0.0.0/grid
chown -R grid.oinstall /u01/app/19.0.0.0/grid/OPatch


oracle备份,更新DB OPatch:
su - oracle
cd /u01/app/oracle/product/19.0.0.0/db_1
mv OPatch OPatch_BAK
cd /patches/19c
unzip p6880880_190000_Linux-x86-64.zip -d /u01/app/oracle/product/19.0.0.0/db_1


3.补丁更新前验证
grid用户执行:
% $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <UNZIPPED_PATCH_LOCATION>/35037840/35042068

% $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <UNZIPPED_PATCH_LOCATION>/35037840/35050331

% $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <UNZIPPED_PATCH_LOCATION>/35037840/35050325

% $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <UNZIPPED_PATCH_LOCATION>/35037840/35107512

% $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <UNZIPPED_PATCH_LOCATION>/35037840/33575402


/u01/app/19.0.0.0/grid/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /patches/19c/35058172/35037840/35042068
/u01/app/19.0.0.0/grid/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /patches/19c/35058172/35037840/35050331
/u01/app/19.0.0.0/grid/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /patches/19c/35058172/35037840/35050325
/u01/app/19.0.0.0/grid/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /patches/19c/35058172/35037840/35107512
/u01/app/19.0.0.0/grid/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /patches/19c/35058172/35037840/33575402


oracle用户执行:
% $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <UNZIPPED_PATCH_LOCATION>/35037840/35042068
% $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <UNZIPPED_PATCH_LOCATION>/35037840/35050331


/u01/app/oracle/product/19.0.0.0/db_1/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /patches/19c/35058172/35037840/35042068
/u01/app/oracle/product/19.0.0.0/db_1/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /patches/19c/35058172/35037840/35050331


4.手动打GI和DB补丁
4.1 停止DB
oracle用户执行:
$ <ORACLE_HOME>/bin/srvctl stop home -o <ORACLE_HOME> -s <status file location> -n <node name>

/u01/app/oracle/product/19.0.0.0/db_1/bin/srvctl stop home -o /u01/app/oracle/product/19.0.0.0/db_1 -s /tmp/oracle.status -n node1

4.2 关闭集群并解锁root目录:
# <GI_HOME>/crs/install/rootcrs.sh -prepatch

/u01/app/19.0.0.0/grid/crs/install/rootcrs.sh -prepatch



4.3 打GI补丁:
$ <GI_HOME>/OPatch/opatch apply -oh <GI_HOME> -local <UNZIPPED_PATCH_LOCATION>/%BUGNO%/<OCW TRACKING BUG>

$ <GI_HOME>/OPatch/opatch apply -oh <GI_HOME> -local <UNZIPPED_PATCH_LOCATION>/%BUGNO%/<ACFS TRACKING BUG>

$ <GI_HOME>/OPatch/opatch apply -oh <GI_HOME> -local <UNZIPPED_PATCH_LOCATION>/%BUGNO%/<DBWLM TRACKING BUG>

$ <GI_HOME>/OPatch/opatch apply -oh <GI_HOME> -local <UNZIPPED_PATCH_LOCATION>/%BUGNO%/<DB RU TRACKING BUG>

$ <GI_HOME>/OPatch/opatch apply -oh <GI_HOME> -local <UNZIPPED_PATCH_LOCATION>/%BUGNO%/<TOMCAT RU TRACKING BUG>



su - grid
/u01/app/19.0.0.0/grid/OPatch/opatch apply -oh /u01/app/19.0.0.0/grid -local /patches/19c/35058172/35037840/35050331
/u01/app/19.0.0.0/grid/OPatch/opatch apply -oh /u01/app/19.0.0.0/grid -local /patches/19c/35058172/35037840/35050325
/u01/app/19.0.0.0/grid/OPatch/opatch apply -oh /u01/app/19.0.0.0/grid -local /patches/19c/35058172/35037840/33575402
/u01/app/19.0.0.0/grid/OPatch/opatch apply -oh /u01/app/19.0.0.0/grid -local /patches/19c/35058172/35037840/35042068
/u01/app/19.0.0.0/grid/OPatch/opatch apply -oh /u01/app/19.0.0.0/grid -local /patches/19c/35058172/35037840/35107512


4.5 打DB补丁:
$ <UNZIPPED_PATCH_LOCATION>/%BUGNO%/%OCW TRACKING BUG%/custom/scripts/prepatch.sh -dbhome <ORACLE_HOME>

$ <ORACLE_HOME>/OPatch/opatch apply -oh <ORACLE_HOME> -local <UNZIPPED_PATCH_LOCATION>/%BUGNO%/<OCW TRACKING BUG>

$ <ORACLE_HOME>/OPatch/opatch apply -oh <ORACLE_HOME> -local <UNZIPPED_PATCH_LOCATION>/%BUGNO%/<DB RU TRACKING BUG>

$ <UNZIPPED_PATCH_LOCATION>/%BUGNO%/%OCW TRACKING BUG%/custom/scripts/postpatch.sh -dbhome <ORACLE_HOME>



su - oracle
/patches/19c/35058172/35037840/35050331/custom/scripts/prepatch.sh -dbhome /u01/app/oracle/product/19.0.0.0/db_1
/u01/app/oracle/product/19.0.0.0/db_1/opatch apply -oh /u01/app/oracle/product/19.0.0.0/db_1 -local /patches/19c/35058172/35037840/35050331
/u01/app/oracle/product/19.0.0.0/db_1/opatch apply -oh /u01/app/oracle/product/19.0.0.0/db_1 -local /patches/19c/35058172/35037840/35042068
/patches/19c/35058172/35037840/35050331/custom/scripts/postpatch.sh -dbhome /u01/app/oracle/product/19.0.0.0/db_1



5.打OJVM补丁
$ cd <PATCH_TOP_DIR>/35050341
$ opatch apply
$ opatch lsinventory

su - oracle
cd /patches/19c/35058172/35050341
/u01/app/oracle/product/19.0.0.0/db_1/opatch apply
/u01/app/oracle/product/19.0.0.0/db_1/opatch lsinventory


6.锁定root目录,并启动集群
As the root user execute:

# <GI_HOME>/rdbms/install/rootadd_rdbms.sh
If this is a GI Home, as the root user execute:

# <GI_HOME>/crs/install/rootcrs.sh -postpatch


/u01/app/19.0.0.0/grid/rdbms/install/rootadd_rdbms.sh
/u01/app/19.0.0.0/grid/crs/install/rootcrs.sh -postpatch



7.启动DB
If this is a GI Home environment, as the database home owner execute:

$ <ORACLE_HOME>/bin/srvctl start home -o <ORACLE_HOME> -s <status file location> -n <node name>

/u01/app/oracle/product/19.0.0.0/db_1/bin/srvctl start home -o /u01/app/oracle/product/19.0.0.0/db_1 -s /tmp/oracle.status -n node1


8.检查补丁版本
su - oracle
/u01/app/oracle/product/19.0.0.0/db_1/opatch lspatches
/u01/app/oracle/product/19.0.0.0/db_1/opatch lsinventory

su - grid
/u01/app/19.0.0.0/grid/OPatch/opatch lspatches
/u01/app/19.0.0.0/grid/OPatch/opatch lsinventory

9.按以上步骤打其他节点补丁
按1-8步骤打剩余节点补丁。


10.更新数据字典
集群所有节点都打上补丁后,统一更新数据字典。

su - oracle
% sqlplus /nolog
SQL> Connect / as sysdba
SQL> startup
SQL> alter pluggable database all open ;
SQL> quit
% cd $ORACLE_HOME/OPatch
% ./datapatch -verbose


su - oracle
sqlplus / as sysdba
startup
alter pluggable database all open;
quit
cd $ORACLE_HOME/OPatch
./datapatch -verbose

11.重编译失效对象
查询数据库失效对象
set line 222
col owner for a35
select owner,count(*) from dba_objects where status='INVALID' group by owner order by 2;


su - oracle
cd $ORACLE_HOME/rdbms/admin
sqlplus / as sysdba
alter session set container=PDB_NAME;--------每个pdb都要对失效对象重编译
@?/rdbms/admin/utlrp.sql

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论