更新数据库
本文介绍了使用控制台和 API 更新数据库系统中的数据库的过程。
必需的 IAM 策略
要使用 Oracle Cloud Infrastructure,必须由管理员在策略中为您授予安全访问权限。无论您是将控制台或 REST API 与 SDK、CLI 还是其他工具结合使用,都需要进行此访问。如果您收到一则表明您无权访问或未经授权的消息,请向管理员确认您具有哪些类型的访问权限以及要使用哪些区间。
对于管理员:让数据库管理员管理 Oracle Cloud 数据库系统中的策略允许指定的组对数据库和相关数据库资源执行所有操作。
如果您刚接触策略,请参阅策略入门和常见策略。如果要深入了解如何为数据库编写策略,请参阅数据库服务的详细信息。
关于更新数据库
Oracle 建议先更新数据库系统,然后再更新该数据库系统中的数据库。
对于 Oracle Database,有四个最新版本(N 到 N-3)提供更新。例如,如果实例使用 21c 并且提供的 21c 的最新版本为 21.10.0.0,则 21.10.0.0、21.9.0.0、21.8.0.0 和 21.7.0.0 可用于 Oracle Database 更新。您可以使用其中的任何更新,但 Oracle 建议使用最新更新。
您还可以使用定制数据库软件映像更新 Oracle Database。使用软件映像进行更新时,Oracle 支持基于四个最新版本(N 到 N-3)中的任何一个使用任何映像进行更新。
以下内容仅适用于自 2022 年 4 月 12.1 和 12.2 更新以及 2022 年 7 月 19c 更新开始的基于 Oracle 的更新。
如果安装了任何临时更新(以前称为一次性修补程序),则在安装新更新之前将自动回退这些临时更新。如果新更新不包括临时更新,您可以在完成安装新更新后再次安装临时更新。
如果您的数据库中安装了任何临时更新,为了避免在新更新后安装临时更新,Oracle 建议使用定制数据库软件映像并使用该映像更新数据库。
运行预检查后,可以通过在 dbcli 中执行以下命令来确定是否安装了任何其他临时更新。
dbcli describe-job -i <job id>
其中 job id
(dbcli list-jobs
) 是预检查运行的作业 ID。
Oracle 主目录中的所有更改都将复制到新更新和安装的数据库。
注意:
- Oracle 不建议更改数据库主目录中的任何文件。
- 必须确保正确复制对数据库主目录所做的所有更改。如果已复制数据库主目录中的任何文件或文件夹(如
tnsnames.ora
、listener.ora
等),则应手动备份这些文件。
数据库系统应有权访问 OCI 中的身份端点和对象存储端点。如果在专用子网上运行的数据库系统只配置了服务网关而没有其他网关(例如 NAT 网关),则应确保服务网关已设置为允许访问所有 Oracle 服务,而不仅仅是对象存储。如果可以通过其他方式访问身份和对象存储端点,则无需更改。
有关当前可用数据库更新的列表的更多信息,请参阅当前可用的更新。
注意:
必须使用 OPATCH 工具手动应用 OJVM 更新。使用数据库软件映像应用临时更新
我们不建议对数据库系统应用临时更新。而应创建和部署包含必要修复的数据库软件映像。仅当无法使用数据库软件映像(例如,将临时更新应用于 GI 主目录)时,您才能提交服务请求 (Service Request,SR) 并请求支持协助以下载临时更新。
有关数据库软件映像的更多信息,请参见软件映像。
应用数据库更新
执行以下步骤从较旧的更新发行版更新数据库。
- 打开导航菜单。选择 Oracle Database ,然后选择 Oracle Base Database Service 。
- 选择区间。此时将显示数据库系统的列表。
- 在数据库系统的列表中,单击包含要更新的数据库的数据库系统名称。
- 此时将显示数据库系统的详细信息,后跟数据库列表。
- 在数据库列表中,单击要更新的数据库的名称。
- 在 Database information(数据库信息)选项卡的 Version(版本)下,单击 Database version(数据库版本)字段旁边的 View(查看)链接。
- 在数据库下,查看数据库的可用更新列表。
- Oracle Database Software Images 选项卡显示可用于更新数据库的一般可用 Oracle Database 软件映像。
- 使用定制数据库软件映像选项卡可以选择已提前创建的数据库软件映像。
- 使用选择区间选择器可以指定包含软件映像的区间。
- 使用区域筛选器可访问在其他区域中创建的软件映像。
- 单击您感兴趣的更新的操作菜单,然后单击以下操作之一:
- 预检查:检查是否有任何先决条件,以确保可以成功应用更新。要运行预检查,请单击预检查并在确认预检查对话框中提供确认。
- 应用:应用所选更新。Oracle 建议您在应用更新之前对更新运行预检查操作。要应用更新,请单击应用并在确认对话框中提供确认。
在列表中,状态显示操作的状态。应用更新时,状态显示为正在更新。数据库的状态还显示为正在更新。对数据库及其资源的生命周期操作可能暂时不可用。如果更新成功完成,则状态将更改为已应用,数据库的状态将更改为可用。
查看数据库更新历史记录
执行以下步骤可查看数据库的更新历史记录。
注意:
控制台中的更新历史记录视图不显示使用命令行工具(例如 dbcli 或 Patch 实用程序)应用的更新。- 打开导航菜单。选择 Oracle Database ,然后选择 Oracle Base Database Service 。
- 选择区间。此时将显示数据库系统的列表。
- 在数据库系统的列表中,单击包含要查看更新详细信息的数据库的数据库系统名称。
- 此时将显示数据库系统的详细信息,后跟数据库列表。
- 在数据库列表中,单击要查看更新详细信息的数据库的名称。
- 在 Database information(数据库信息)选项卡的 Version(版本)下,单击 Database version(数据库版本)字段旁边的 View(查看)链接。
- 在更新页上,单击左侧菜单上的更新历史记录。
- 此时将显示该数据库的更新和升级操作的历史记录。
应用临时更新
注意:
本主题仅适用于单节点和多节点 RAC 数据库系统中的数据库主目录。要应用临时更新以修复特定缺陷,请按照本节中的过程操作。使用 Opatch
实用程序将临时更新应用于数据库主目录。
注意:
在过程示例中,数据库主目录为 /u02/app/oracle/product/12.1.0.2/dbhome_1 ,更新编号为 26543344 。- 从 My Oracle Support 获取适用的临时更新。
- 查看更新
README.txt
文件中的信息。此文件可能包含要成功应用更新的其他和/或定制说明。 - 使用 SCP 或 SFTP 将更新放在目标数据库上。
- 关闭在数据库主目录中运行的每个数据库。
srvctl stop database -db <db name> -stopoption immediate -verbose
- 将 Oracle 主目录环境变量设置为指向目标 Oracle 主目录。
sudo su - oracle export ORACLE_HOME=/u02/app/oracle/product/12.1.0.2/dbhome_1
- 转到放置更新的目录,然后解压缩更新。
cd <working directory where opatch is stored> unzip p26543344_122010_Linux-x86-64.zip
- 转到具有解压缩更新的目录,并检查冲突。
cd 26543344 $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
- 应用更新。
$ORACLE_HOME/OPatch/opatch apply
- 验证更新是否已成功应用。
$ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME
- 如果数据库主目录包含数据库,请重新启动它们。
$ORACLE_HOME/bin/srvctl start database -db <db name>
否则,请以
root
用户身份运行以下命令。# /u01/app/<db version>/grid/bin/setasmgidwrap o=/u01/app/oracle/product/<db version>/dbhome_1/bin/oracle
- 如果自述文件指示更新具有
sqlpatch
组件,则对每个数据库运行datapatch
命令。运行
datapatch
之前,请确保所有可插入数据库 (pluggable database,PDB) 均处于打开状态。要打开 PDB,可以使用 SQL*Plus 对 PDB 执行以下操作。ALTER PLUGGABLE DATABASE <pdb name> OPEN READ WRITE
$ORACLE_HOME/OPatch/datapatch
使用 API
有关使用 API 和签名请求的信息,请参阅 REST API 和安全身份证明。有关 SDK 的信息,请参见 Software Development Kits and Command Line Interface 。
使用以下 API 管理数据库更新:
- ListDbHomePatches
- ListDbHomePatchHistoryEntries
- GetDbHomePatch
- GetDbHomePatchHistoryEntry
- UpdateDbHome
- UpdateDatabase
有关数据库服务的 API 的完整列表,请参阅数据库服务 API 。