Oracle数据库打补丁

0.补丁基础知识

1).补丁发布链接
https://www.oracle.com/security-alerts/
2)补丁类型
One-off补丁:
	定义:解决特定问题的小型补丁,不包含在常规补丁集中。
	特点:用于快速修复特定问题,通常针对特定客户需求发布。
	应用场景:紧急修复或特殊问题的解决。
Critical Patch Update (CPU):
	定义:每季度发布的安全补丁合集,包含所有新的安全修复。
	特点:侧重于安全性,确保系统免受已知漏洞的威胁。
	应用场景:增强数据库系统的安全防护。
Release Update (RU):
	定义:包含最新的安全补丁和非安全补丁的更新包,按季度发布。
	特点:综合性更新,除了安全修复外,还包括功能改进和bug修复。
	应用场景:定期维护和功能改进。
Release Update Revision (RUR):
	定义:基于上一个RU的修订版,解决RU发布后发现的关键问题。
	特点:仅包含对最新RU中的修复,确保RU的稳定性。
	应用场景:修正RU中遗留的重大问题,确保系统稳定。
Bundle Patch (BP):
	定义:特定于某些Oracle产品的补丁集合,通常是按需发布。
	特点:包含一组相关修复,可能是功能性或性能改进。
	应用场景:特定Oracle产品的定制化修复和增强

1.非RAC环境打补丁

1)备份数据库并
2)上传补丁包
3)替换OPatch
#查看版本
su - oracle
cd $ORACLE_HOME
./OPatch/opatch version

#备份旧的
mv OPatch OPatch.bak

#解压新的
unzip p6880880_190000_Linux-x86-64.zip  -d $ORACLE_HOME
chown -R oracle:oinstall OPatch
4)打补丁(先打RU后打OJVM)
#解压补丁
unzip *.zip
chown -R oracle.oinstall  ******

#检测冲突
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph  /home/oracle/patch/******

#关闭实例和监听
sqlplus / as sysdba
shutdown immediate

lsnrctl stop 

#应用补丁
cd /home/oracle/patch/******/
$ORACLE_HOME/OPatch/opatch apply

5)查看补丁信息
$ORACLE_HOME/OPatch/opatch lsinventory
$ORACLE_HOME/OPatch/opatch lsinventory -detail

6)运行datapatch
cd $ORACLE_HOME/OPatch/
./datapatch -verbose

7)编译失效对象
SQL> SHUTDOWN
SQL> STARTUP
SQL> @?/rdbms/admin/utlrp.sql

8)通过视图查看补丁信息
select comp_name,version from dba_server_registry;
select * from dba_registry_history;
select product,version from product_component_version;
select * from v$version;

9)回滚补丁
$ORACLE_HOME/OPatch/opatch rollback -id ******

2. RAC环境打补丁(建议使用root用户执行命令)

1)备份数据库

3)更新Opatch
#更新grid目录的OPatch (所有RAC节点都要执行)
su - grid
cd $GI_HOME
mv OPatch OPatch.bak
unzip p6880880_190000_Linux-x86-64.zip  -d $GI_HOME
chown -R grid:oinstall OPatch
$GI_HOME/OPatch/opatch version

#更新Oracle目录的OPatch
su - oracle
cd $ORACLE_HOME
mv OPatch OPatch.bak
unzip p6880880_190000_Linux-x86-64.zip  -d $ORACLE_HOME
chown -R oracle:oinstall OPatch
$ORACLE_HOME/OPatch/opatch version

3)打补丁(先打RU后打OJVM)
a)打GI补丁

#分析空间是否足够
vi /tmp/patch_list_gihome.txt
<UNZIPPED_PATCH_LOCATION>/35037840/35042068
<UNZIPPED_PATCH_LOCATION>/35037840/35050331
<UNZIPPED_PATCH_LOCATION>/35037840/35050325
<UNZIPPED_PATCH_LOCATION>/35037840/35107512
<UNZIPPED_PATCH_LOCATION>/35037840/33575402

$GI_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_gihome.txt


#分析补丁(OCW,ACFS,Tomcat,DBWLM)
/u01/app/19.0.0/grid/OPatch/opatchauto apply /home/oracle/patch/******/******/****** -analyze  #子目录下面的每一个都要分析

#检测冲突
su - root
$GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDire  /home/oracle/patch/******

#应用补丁
/u01/app/19.0.0/grid/OPatch/opatchauto apply /home/oracle/patch/******/******/******


b)打数据库补丁
#分析空间是否足够
vi /tmp/patch_list_dbhome.txt
<UNZIPPED_PATCH_LOCATION>/35037840/35042068
<UNZIPPED_PATCH_LOCATION>/35037840/35050331

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

其他步骤参考1


c)运行datapatch(所有RAC节点都要执行)
su - oracle
cd $ORACLE_HOME/OPatch
./datapatch -verbose


d)编译失效对象(所有RAC节点都要执行)
su - oracle
cd $ORACLE_HOME/rdbms/admin
sqlplus / AS SYSDBA
SQL> @utlrp.sql

3.补丁注意事项

1)Standalone Oracle Database步骤
% sqlplus /nolog
SQL> Connect / as sysdba
SQL> startup
SQL> quit
% cd $ORACLE_HOME/OPatch
% ./datapatch -verbose

2)Single/Multitenant (CDB/PDB) Oracle Database步骤
% sqlplus /nolog
SQL> Connect / as sysdba
SQL> startup
SQL> alter pluggable database all open;
SQL> quit
% cd $ORACLE_HOME/OPatch
% ./datapatch -verbose
posted @ 2024-06-30 11:48  DBer_ablewang  阅读(7)  评论(0编辑  收藏  举报