上一篇安装文档中说过 Oracle 也有一份安装手册,虽是英文版但很是详细,很有参考意义,如下是官方地址可查看详细内容:

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/ladbi/downloading-and-installing-patch-updates.html#GUID-A2FD0257-D074-444D-8007-A21EBEC10358

这次主要说一下补丁下载方法与更新补丁的步骤

0、补丁集下载

官方文档安装手册在第十二节中对于补丁下载更新有介绍,如下截图:

然后,通过 MOS 账号登陆  https://support.oracle.com 按照如上说明操作(前提是有 MOS 账号才可以下载补丁,这是 Oracle 的付费服务)。

本次使用的补丁号为 p29708720,这是我国庆期间下载的补丁集,但是等我今天刚登陆上去查看时,第四季度的补丁也已经发布了,还可以免费下载,补丁号为 30116802。

Oracle每个季度都会更新补丁集,每年的 1 、4、7、10 月中旬均会更新,不过有些补丁不会提供下载,需要再次单独购买才行。此补丁还算幸运,可以下载,如下:

如果对下载的文件的完整性无法保证,如下载不完整出现损坏等情况,需要检验此文件的 MD5 值,将下载名为的 p30116802_122010_Linux-x86-64.zip 补丁包并上传至服务器,检查大小、修改权限、解压。 不过上图中出现的是 SHA 加密算法,那么本次也就使用 SHA 算法相关的命令查看文件的哈希值。如下所示哈希值一致,可见文件没问题,可正常使用。

使用如下命令:

[oracle@JiekeXu software]$ md5sum p30116802_122010_Linux-x86-64.zip
66fa03f959bf4994cfa0dd1d49c441da  p30116802_122010_Linux-x86-64.zip
[oracle@JiekeXu software]$
[oracle@JiekeXu software]$ sha256sum p30116802_122010_Linux-x86-64.zip
ca90d6e1905cda5df03ede79b60fe8a79e9924afa14a4191ddb211dc419abd19  p30116802_122010_Linux-x86-64.zip
[oracle@JiekeXu software]$
[oracle@JiekeXu software]$ sha1sum p30116802_122010_Linux-x86-64.zip
899cf90e52f4a52f32d5c48c9c6639184c77cda5  p30116802_122010_Linux-x86-64.zip

关于加密算法,不是专业的,这里就不说了,免得误人子弟咯。

1、Opatch 下载

各个版本的 opatch 的均为 6880880 可按上面方法下载,

也可以使用如下地址下载:

https://updates.oracle.com/download/6880880.html

选择 平台 和 版本对应的 OPatch 号j即可下载。下载完成后上传至服务器修改权限解压。

2、常用补丁下载地址

Quick Reference to Patch Numbers for Database PSU, SPU(CPU), Bundle Patches and Patchsets (文档 ID 1454618.1)。

通过此文档 ID 1454618.1 可在 MOS 面板中查询,如下图:

最终会出现如下界面,也可访问以下地址:

https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=104453628887502&id=1454618.1&_afrWindowMode=0&_adf.ctrl-state=7bxkr7akf_471

然后选择 12C 的补丁集  Oracle Database Update Revisions (Versions 12.2 & higher)

然后选择是 GI 或者 DB 的补丁集,下载就可以了,我这里选择下载的是 GI 补丁,这样此补丁则同样使用于非 RAC 环境。

3、创建可插拔数据库 PDB

下面为了模拟多租户下补丁更新的方便,先在机器在添加一个名为 JiekeXupdb1 的 PDB 实例。本次采用克隆的方式创建,即 JiekeXupdb1 为原先建立的 JiekeXupdb 的克隆体。也可使用种子 pdb$seed 复制出来一个 PDB ,或者通过 dblink 远程复制一个 非 CDB。这里就选择最简单的一种方法吧。

大概步骤就是先将 JiekeXupdb 置为只读状态,然后查看数据文件,在合适的地方建立目录,在然后则创建 JiekeXupdb1,最后打开这两个 PDB,怎么样?简单吧,来一起试试吧。

3.1 PDB 只读

show pdbs;
alter pluggable database JiekeXupdb close  immediate;
alter pluggable database JiekeXupdb  open read only;
show pdbs;

3.2 查看文件

select file_name from cdb_data_files where con_id=3;
SYS@JiekeXu> col FILE_NAME for a66
SYS@JiekeXu> col name for a20
SYS@JiekeXu> select  CON_ID,name,open_mode from v$pdbs;CON_ID NAME                 OPEN_MODE
---------- -------------------- ------------------------------2 PDB$SEED             READ ONLY3 JIEKEXUPDB           READ ONLY
SYS@JiekeXu> select file_name from cdb_data_files where con_id=3;
FILE_NAME
------------------------------------------------------------------
/u01/app/oracle/oradata/JiekeXu/JiekeXupdb/system01.dbf
/u01/app/oracle/oradata/JiekeXu/JiekeXupdb/sysaux01.dbf
/u01/app/oracle/oradata/JiekeXu/JiekeXupdb/undotbs01.dbf
/u01/app/oracle/oradata/JiekeXu/JiekeXupdb/users01.dbf

3.3 建立目录

mkdir -p /u01/app/oracle/oradata/JiekeXu/JiekeXupdb1/
ls -ld  /u01/app/oracle/oradata/JiekeXu/JiekeXupdb1/

3.4 创建 JiekeXupdb1

create pluggable database JiekeXupdb1 from JiekeXupdb file_name_convert=('JiekeXupdb','JiekeXupdb1');
alter pluggable database JiekeXupdb1 open;

注意:这里的PDB实例名的大小写,如出现下列错误,导致 con_id 为 6 ,说明 4、5 出现了错误。

3.5重新打开 JiekeXupdb 实例

alter pluggable database JiekeXupdb close  immediate;
alter pluggable database JiekeXupdb open;
show pdbs;
select  CON_ID,name,open_mode from v$pdbs;
#alter pluggable database  all open; #其实也可使用此命令打开所有的PDB,指定名称单独打开一个PDB

3.6  配置监听

查看监听状态,配置监听,使用新监听名连接到 JiekeXupdb1

3.7 使用用户密码@服务名连接到新 PDB 实例

[oracle@JiekeXu admin]$ sqlplus sys/Oracle12c@JIEKEXUPDB1 as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on 星期四 10月 17 21:18:58 2019
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
连接到:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SYS@JIEKEXUPDB1> show con_name
CON_NAME
------------------------------
JIEKEXUPDB1
SYS@JIEKEXUPDB1> show pdbsCON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------6 JIEKEXUPDB1                    READ WRITE NO

3.8 删除 PDB 

能建就能删,而且很容易就可以删除。

删除 JiekeXupdb1,包括数据文件

SYS@JiekeXu> alter pluggable database JiekeXupdb1 close  immediate;
插接式数据库已变更。
SYS@JiekeXu> show pdbsCON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED                       READ ONLY  NO3 JIEKEXUPDB                     READ ONLY  NO6 JIEKEXUPDB1                    MOUNTED
SYS@JiekeXu>
SYS@JiekeXu> drop pluggable database JiekeXupdb1 including datafiles;
插接式数据库已删除。
SYS@JiekeXu>
SYS@JiekeXu> show pdbsCON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED                       READ ONLY  NO3 JIEKEXUPDB                     READ ONLY  NO
SYS@JiekeXu> ! ls -lh /u01/app/oracle/oradata/JiekeXu/JiekeXupdb1
总用量 0

4、Linux 单机补丁更新

这里测试机使用的上次安装的 12.2.0.1 版本,OS 版本为 CentOS Linux release 7.6.1810 (Core)。关于补丁更新前面也有两篇单机和 RAC 的文章,可查看历史消息查找。也可戳此链接查看单机版补丁 11.2.0.4.190416 更新方法。

4.1 解压 OPatch 和补丁包

如果目录比较大,满足条件,可以做个全备,这个很有必要,因为升级中出现的问题不可控,有备份就好说了,实在没条件的话, cp 整个 ORACLE_HOME 和 GI_HOME 即可。检查目录大小,单机至少需要 5G 以上的空间,记得检查这个哦,这里坑最多了。

[oracle@JiekeXu software]$ unzip p6880880_122010_LINUX.zip
[oracle@JiekeXu software]$ unzip p30116802_122010_Linux-x86-64.zip
####删除 zip 包
[root@JiekeXu software]# rm -rf p6880880_122010_LINUX.zip

如果有应用连接,需要杀掉连接,然后停止监听,停止数据库。

4.2 更新 OPatch 并检查版本

[oracle@JiekeXu dbhome_1]$ cd $ORACLE_HOME[oracle@JiekeXu dbhome_1]$ mv OPatch/ OPatch_bak191016
[oracle@JiekeXu dbhome_1]$ cp -r /u01/software/OPatch/ ./
[oracle@JiekeXu dbhome_1]$ cd OPatch
[oracle@JiekeXu OPatch]$ ./opatch version
Java (1.6) could not be located. OPatch cannot proceed!
OPatch returns with error code = 1
[oracle@JiekeXu OPatch]$ $ORACLE_HOME/jdk/bin/java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

不妙,这里一看就是下载的 OPatch 有问题,于是上 MOS 查了一下果然是 OPatch 的问题,找到一篇文章如何下载和安装 OPatch .不过还是前面提到的方法,由于我是使用如下第二个地址下载的,出现了问题,那么这次重新下载时使用第一个方法。

Note 274526.1 : How To Download And Install The Latest OPatch Version.

之前下载的名字虽然一样,时间也一样,但大小还是有区别的,所以这里先选择这个 106.5 M 的文件下载。

下载完后上传解压 OPatch,然后替换便可以成功了。

[oracle@JiekeXu dbhome_1]$ cd $ORACLE_HOME/OPatch
[oracle@JiekeXu OPatch]$ ./opatch version
OPatch Version: 12.2.0.1.17
OPatch succeeded.

4.3 关库

接下来,关闭监听,有应用停掉应用,杀掉残余连接,关闭数据库。

4.4 解压补丁包

解压补丁,升级补丁包 p30116802_122010_Linux-x86-64.zip

unzip p30116802_122010_Linux-x86-64.zip

当解压完此补丁时,根文件系统已剩余不到 800M,无法执行补丁安装。故使用新磁盘重新分区格式化挂载 /backup 文件系统存放补丁并解压,重新添加磁盘这里不介绍了,等下次有机会再说。

4.5 打补丁前阅读 README.html

Patch 30116802 - GI Oct 2019 Release Update 12.2.0.1.191015

In this document Oracle Database Home refers to Enterprise Edition and Standard Edition.

The GI Oct 2019 Release Update 12.2.0.1.191015 includes updates for both the Clusterware home and Database home that can be applied in a rolling fashion.

墙裂推荐使用 README.html 打补丁,以下白色截图均来源于此文件。

4.6 使其 OPatch 生效

$ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME

4.7 检查补丁冲突

按照说明,执行以下命令检查

$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /backup/30116802/30138470
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /backup/30116802/30122814

4.8 检查系统空间

运行 OPatch 检查系统空间

[oracle@JiekeXu app]$ cat /tmp/patch_list_dbhome.txt
/backup/30116802/30138470
/backup/30116802/30122814
$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_dbhome.txt

4.9 补丁应用

[oracle@JiekeXu 30116802]$ exportPATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
[oracle@JiekeXu 30116802]$ cd /backup/30116802/30138470
[oracle@JiekeXu 30138470]$ ll
总用量 88
drwxr-x---.  3 oracle oinstall  4096 9月  27 19:15 etc
drwxr-x---. 19 oracle oinstall  4096 9月  27 19:15 files
-rw-r-----.  1 oracle oinstall 74433 9月  27 19:16 README.html
-rw-r-----.  1 oracle oinstall    21 9月  27 19:16 README.txt
[oracle@JiekeXu 30138470]$ opatch apply

正常情况下等待七八分钟就行了。

最后,可以看到应用补丁成功了。

4.10 打开 CDB 和 所有 PDB

sqlplus / as sysdba
show pdbs
alter pluggable database  all open;
show pdbs

5、执行脚本

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

这一步执行起来还是比较慢的,等了大概有半小时,不过万幸无任何报错。

注意:12C 的补丁注册改成了用datapatch工具,而不是以前版本@$ORACLE_HOME/rdbms/admin/catbundle.sql psu apply

5.2 执行脚本更新无效对象

cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> @utlrp.sql
SQL > @dbmsjdev.sql
SQL > exec dbms_java_dev.disable

6、版本检查

执行以下命令可查看已经更新至最新版本 191015 了。

$ORACLE_HOME/OPatch/opatch lsinventory

$ORACLE_HOME/OPatch/opatch lsinventory

Patch  30138470     : applied on Sat Oct 19 06:42:01 CST 2019

Unique Patch ID:  23136382

Patch description:  "Database Oct 2019 Release Update : 12.2.0.1.191015 (30138470)"

Created on 27 Sep 2019, 05:01:26 hrs PST8PDT

好啦,安装和补丁更新算是大功告成了,一步步走下来,图文并茂小白也可以看懂哦,果断收藏吧,如果本文对你有所帮助,请点赞或转发则是对我最大的支持。以上所使用的安装包和补丁包我已整理打包好,转发本文到朋友圈 24 小时后添加以下微信【xxq1426321293】发送截图即可获取。

80%

推荐阅读:

Linux Oracle 11.2.0.4 单机数据库升级至最新补丁安装指北

万字详解Oracle架构、原理、进程,学会世间再无复杂架构

Linux | CentOS6.X/7.X 忘记超级用户 root 密码该怎么办?

模拟真实环境下超简单超详细的 MySQL 5.7 安装

CentOS6.7安装PostgreSQL10.9详细教程

Oracle 12CR2 安装配置与基础学习

Linux CentOS 7 安装教程

Linux RHEL7 安装教程

长按添加微信公众号,更多精彩内容不错过!

Oracle 12C 最新补丁下载与安装操作指北相关推荐

  1. SQLSERVER2019最新补丁下载地址

    SQLSERVER2019最新补丁下载地址 https://technet.microsoft.com/en-us/library/ff803383.aspx 最新补丁版本对照: https://sq ...

  2. oracle数据库12下载地址,Oracle 数据库和补丁下载地址 12.1.0.2 11.2.0.4 11.2.0.1

    Oracle 数据库和补丁下载地址 12.1.0.2 11.2.0.4 11.2.0.1  AIX Linux Windows平台 AIX 12.1.0.2 DATABASE DB 数据库软件介质下载 ...

  3. oracle 12 pan.baidu.com,Oracle 数据库和补丁下载地址和百度云盘地址 12.1.0.2 11.2.0.4 11.2.0.1...

    Oracle 数据库和补丁下载地址和百度云盘地址 12.1.0.2 11.2.0.4 11.2.0.1 以下所有介质的  百度云盘 地址: http://pan.baidu.com/s/1bnmaSY ...

  4. Oracle账号注册、下载、安装与卸载

    每个人都是自己人生的作者,不如把剧本写得精彩一些. 一.Oracle账号注册 Oracle官网:https://www.oracle.com/index.html 进入Oracle官网 点击右上方的V ...

  5. Oracle官方最新jdk8下载地址

    Oracle官方最新jdk8下载地址 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html#licens ...

  6. oracle内置帐号安装,无metalink帐号,oracle 补丁下载及安装

    oracle 补丁下载新方法. 使用迅雷新建任务下载地址填写 /p__.zip 就可以下载到你想要的补丁了. 以下是几个常用补丁的下载地址. (10.2.0.3 patch) oracle 9.2.0 ...

  7. oracle官方最新补丁,最新oracle 补丁下载

    最新oracle 补丁下载 使用迅雷新建任务下载地址填写 ftp://updates.oracle.com//p__.zip 就可以下载到你想要的补丁了. 以下是几个常用补丁的下载地址. (10.2. ...

  8. Oracle WebLogic 最新补丁的绕过漏洞分析 cve-2020-2883

    今年早些时候,作者在博客中公开了一个Oracle WebLogic Server中的反序列化漏洞.此漏洞是由Oracle补丁的,并分配了CVE-2020-2555.但是,VNPT ISC的研究员Quy ...

  9. 2023最新JDK下载、安装与配置教程(jdk17.0.5以及jdk11.0.17)

    JDK下载.安装与配置 简介 下载 下载链接 图片介绍 安装 配置与验证 环境变量配置 配置验证 简介 本教程适用windows系统,jdk版本为17.0.5(LTS),提供jdk11.0.17(LT ...

  10. 2022年最新JDK17下载并安装(超详细)

    前言 今天开始重温java的知识点,当我们了解java的历史之后:我们肯定要开始我们的java之路的第一步 下载JDK,这就像我们玩游戏的第一步下载游戏一样 一.下载JDK 首先我们要登录他的官方网站 ...

最新文章

  1. 车联网,挖掘数据价值
  2. 几经沉浮,人工智能前路何方?
  3. HTTP API响应数据规范整理
  4. 通过script标签实现跨域
  5. ZooKeeper入门(四)实现分布式锁
  6. 运行yum时出现错误,缺失libsasl2.so.2文件
  7. 深入理解Magento – 第二章 – Magento请求分发与控制器
  8. vim nerdtree 标签_学业支持 | OS课程——给你的vim换套新衣服
  9. Android的ImageView中scaleType属性值的详解
  10. 四选1数据选择器的VHDL程序设计
  11. Python 输出到文件两种方式
  12. windows 匿名管道: 父进程与子进程通信 (进程间通信之CreatePipe)
  13. 10道字节跳动C++/Java笔试真题你能做对几道?3道就赢了80%的竞争者(含答案)
  14. android 退出登录
  15. 网络基础之VLAN和端口类型(access、trunk和hybrid)
  16. L1-057 PTA使我精神焕发 (5 分)
  17. 基于Qt的桌面客户端组件化框架DT 开源啦
  18. TQ2440之移植linux 内核
  19. 联想微型计算机设置从u盘启动,联想笔记本如何设置从U盘启动
  20. Uniplot导出Inca-Map图

热门文章

  1. 合作、竞争、猜忌……车联网江湖的“战国时代”
  2. IPV6网络简介及使用
  3. 超级外链SEO工具源码 可发9600条优质外链
  4. 如何成为城建档案管理员(资料员)
  5. 科技资讯杂志 科技资讯杂志社科技资讯编辑部2022年第17期目录
  6. 基于Visual C++2010与windows SDK fo windows7开发windows7平台的tabletpc应用(1)-汉字手写轨迹输入
  7. Android O WMS(3) -- addwindow
  8. Rejected connection from xx.xx.xx.xx, address already has the configured maximum of 10 connections
  9. chromium os系统编译与环境搭建
  10. 5个 GIS空间分析 空间查询与量算 的重要知识点