前言
和Oracle 11g以及之前的远古版本不同,从Oracle 12c开始,升级Oracle RDBMS只能通过类似于打PSU补丁的方式。
Oracle 19c的第一个免费版本是19.3(可以就认为是12c的12.2.0.3这个版本),建议用zip包一步一步安装。
19.3官方下载地址:
对于19.9或者其他老版本(包括12c,11g等)可通过MOS的文档找到: ID 1454618.1
注:2020年19c目前最新的补丁是Patch 31750108 (补丁里同时包括Grid Home和DB Home)
补丁信息
Patch 31750108里面的补丁包信息如下:
补丁编号 |
补丁说明 |
使用条件 |
31771877 |
Database Release Update 19.9.0.0.201020 |
可以单独在非RAC或者ASM单实例环境的DB Home上使用 |
31772784 |
OCW Release Update 19.9.0.0.201020 |
适用于DB Home和Grid Home |
31773437 |
ACFS Release Update 19.9.0.0.201020 |
仅用于Grid Home |
31780966 |
Tomcat Release Update 19.0.0.0.0 |
仅用于 Grid Home |
注:ACFS,DBWLM和TOMCAT子修补程序不适用于HP-UX Itanium和Linux on IBM System z platforms
补丁的安装和卸载
1. 补丁安装
(1) DB Home 和Grid Home下面的OPatch这个文件夹里文件的版本必须 不低于12.2.0.1.19,可通过Patch 下载,解压后直接替换OPatch这个文件夹即可:
$ unzip Patch6880880.zip -d $ORACLE_HOME
验证:
$ $ORACLE_HOME/OPatch/opatch version
(2)检查DB Home和Grid Home的补丁列表里补丁的一致性
$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME
注:如果此命令成功,将会列出安装在主目录中的Oracle组件。
(3)检查新补丁版本是否和当前已安装补丁版本冲突
Grid Home:
$GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /oracle/soft/31750108/31771877
$GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /oracle/soft/31750108/31772784
$GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /oracle/soft/31750108/31773437
$GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /oracle/soft/31750108/
$GI_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /oracle/soft/31750108/31780966
DB Home:
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /oracle/soft/31750108/31771877
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /oracle/soft/31750108/31772784
(4)检查OS剩余空间是否能容纳补丁
先把补丁路径放到一个自定义文本文件中
Grid Home:
$ cat grid_patch.txt
/oracle/soft/31750108/31771877
/oracle/soft/31750108/31772784
/oracle/soft/31750108/31773437
/oracle/soft/31750108/
/oracle/soft/31750108/31780966
检查命令:
$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /home/grid/grid_patch.txt
DB Home:
$ cat db_patch.txt
/oracle/soft/31750108/31771877
/oracle/soft/31750108/31772784
检查命令:
$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /home/oracle/db_patch.txt
(5)执行升级安装
此部分分三种情况:
1)适用于Oracle RAC或者使用ASM的单实例数据库,并且Grid Home和DB Home都不是共享的,同时ACFS也没有配置
停环境后,直接用root执行:
$ $ORACLE_HOME/bin/srvctl stop database –d db-unique-name
2)适用于Oracle RAC或者使用ASM的单实例数据库,并且DB Home是共享的,Grid Home没有共享出去,同时ACFS有可能已经配置:
确保所有节点的库都停了
$ $ORACLE_HOME/bin/srvctl stop database -d db-unique-name
在第一个节点上如有ACFS,必须卸载
在第一个节点的Grid Home 上应用补丁, 用 root 执行 以下命令
# $GI_HOME/OPatch/opatchauto apply /oracle/soft/31750108 -oh $GI_HOME
在第一个节点上重新挂载ACFS
在第一个节点上,以root 用户身份执行以下命令:
# $GI_HOME/OPatch/opatchauto apply /oracle/soft/31750108 -oh $ORACLE_HOME
注:由于数据库主目录是共享的, 因此此操作将跨集群修补数据库主目录。 但是USM 补丁无法应用于数据库主目录。
仅启动第一个节点的数据库
$ $ORACLE_HOME/bin/srvctl start instance -d db-unique-name -n nodename
卸载第二个节点的ACFS
在第二个节点的Grid Home 上应用补丁, 用 root 执行 以下命令
# $GI_HOME/OPatch/opatchauto apply /oracle/soft/31750108 -oh $GI_HOME
在第二个节点上重新运行上一步 opatchauto 命令,将会重启 stack
在第二个节点上重新挂载ACFS
仅启动第二个节点上的数据库
其他节点重复第二个节点的操作即可
3 )非RAC 和不使用ASM 的单节点数据库
停库
使用db 用户执行补丁安装:
$ cd /oracle/soft/31750108/31771877
$ opatch apply (卸载命令:opatch rollback -id 31771877)
注:如果启用了 DG ,则 DG 端也需要安装
(6)卸载补丁
也是和第(5)一样的三个步骤,只需要把“apply”改成“rollback”
安装或卸载补丁后都需要:
(1)对于曾打过补丁的 Oracle home 上运行的每个单独的数据库(包括多租户和非多租户), 按照 下表 运行 datapatch 命令该实用程序。如果是 Oracle RAC ,则仅在一个实例上运行 datapatch
Steps |
Standalone DB |
Steps |
Single/Multitenant (CDB/PDB) DB |
1 |
% sqlplus /nolog |
1 |
% sqlplus /nolog |
2 |
SQL> Connect / as sysdba |
2 |
SQL> Connect / as sysdba |
3 |
SQL> startup |
3 |
SQL> startup |
4 |
SQL> quit |
4 |
SQL> alter pluggable database all open; |
5 |
% cd $ORACLE_HOME/OPatch |
5 |
SQL> quit |
6 |
% ./datapatch -verbose |
6 |
% cd $ORACLE_HOME/OPatch |
|
|
7 |
% ./datapatch -verbose |
注:在dba_registry_sqlpatch视图中,确认APPLY的状态为“ SUCCESS”。
(2)检查$ORACLE_HOME/sqlpatch/31771877/中的以下日志文件是否存在错误:
31771877_rollback_dbSID_CDBname_timestamp.log
(3)编译无效对象
cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> @utlrp.sql
(4)升级catalog
$ rman catalog sys/sys@test_db
RMAN> UPGRADE CATALOG; ##执行两遍
RMAN> UPGRADE CATALOG;
RMAN> EXIT;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69992972/viewspace-2751275/,如需转载,请注明出处,否则将追究法律责任。