更新一个数据库

本文介绍了使用控制台和 API 更新数据库系统中的数据库的过程。

必需的 IAM 策略

要使用 Oracle Cloud Infrastructure,必须在策略中由管理员为您授予安全访问权限。无论您是将控制台还是 REST API 与 SDK、CLI 还是其他工具结合使用,都需要进行此访问。如果您收到一条您无权或未经授权的消息,请向管理员核实您具有的访问权限类型以及要使用的区间。

对于管理员:让数据库管理员管理 Oracle Cloud 数据库系统中的策略允许指定的组使用数据库和相关数据库资源执行所有操作。

如果您不熟悉策略,请参阅策略入门和常见策略。如果要更深入地了解数据库的写入策略,请参阅数据库服务的详细信息。

关于更新数据库

Oracle 建议先更新数据库系统,然后再更新该数据库系统中的数据库。

默认情况下,最新批准的版本更新可用。您还可以在确认显示的消息后选择前两个版本更新(N-1 或 N-2)之一。要使用早于 N-2 的版本更新,必须提交服务请求。

您还可以使用定制数据库软件映像更新 Oracle AI Database。可供选择的映像取决于适用的发行版选择控件。

以下内容仅适用于从 2022 年 4 月开始的基于 Oracle 的 12.1 和 12.2 更新以及 2022 年 7 月进行的 19c 更新。

如果您安装了任何临时更新(以前称为一次性修补程序),则这些临时更新将在安装新更新之前自动回退。如果新更新不包括临时更新,您可以在完成新更新安装后再次安装临时更新。

如果数据库中安装了任何临时更新,则为了避免在新更新后安装临时更新,Oracle 建议使用定制数据库软件映像并使用该映像更新数据库。

运行预检查后,可以通过在 dbcli 中执行以下命令来确定是否安装了任何其他临时更新。

dbcli describe-job -i <job id>

其中 job id (dbcli list-jobs) 是预检查运行的作业 ID。

Oracle 主目录中的所有更改都将复制到新更新和安装的数据库。

注意:

数据库系统应有权访问 OCI 中的身份和对象存储端点。如果只为在专用子网上运行的数据库系统配置了服务网关但没有其他网关(例如 NAT 网关),则应确保服务网关设置为允许访问所有 Oracle 服务,而不仅仅是对象存储。如果可以通过其他方式访问身份和对象存储端点,则无需进行任何更改。

有关当前可用数据库更新的列表的更多信息,请参阅当前可用更新。

注:必须使用 OPATCH 工具手动应用 OJVM 更新。

使用数据库软件映像应用临时更新

我们不建议对数据库系统应用临时更新。而是应创建和部署包含必要修复的数据库软件映像。仅当您无法使用数据库软件映像(例如,将临时更新应用于 GI 主目录)时,才能提交服务请求 (SR) 并请求支持协助下载临时更新。

有关数据库软件映像的更多信息,请参见 Software Images 。

更新一个数据库

执行以下步骤,使用 OCI 控制台从较早的更新发行版更新数据库:

  1. 在数据库系统列表页上,选择包含要使用的数据库的数据库系统。如果需要查找列表页或数据库系统的帮助,请参阅列出数据库系统。
  2. 在数据库选项卡上,选择要使用的数据库。
  3. 在数据库详细信息页上,选择更新选项卡以查看数据库的可用更新列表。
  4. 从您感兴趣的更新的操作菜单中,选择以下操作之一:

    • 查看详细信息:查看有关此更新的详细信息。
    • 预检查:检查是否有任何先决条件,以确保可以成功应用更新。
    • 应用更新:应用选定的更新。Oracle 建议您在应用更新之前对更新运行预检查操作。

在列表中, State 显示操作的状态。应用更新时,状态将显示为更新。数据库的状态还显示为正在更新。对数据库及其资源的生命周期操作可能暂时不可用。如果更新成功完成,则状态将更改为已应用,数据库的状态将更改为可用。

查看数据库更新历史记录

执行以下步骤,使用 OCI 控制台查看数据库的更新历史记录:

注:控制台中的 "Update history"(更新历史记录)不显示使用 dbcli 或 Patch 实用程序等命令行工具应用的更新。

  1. 在数据库系统列表页上,选择包含要使用的数据库的数据库系统。如果需要查找列表页或数据库系统的帮助,请参阅列出数据库系统。
  2. 在数据库选项卡上,选择要使用的数据库。
  3. 在详细信息页上,选择更新历史记录选项卡以查看该数据库的更新和升级操作的历史记录。

应用临时更新

注:本主题仅适用于单节点和多节点 RAC 数据库系统中的数据库主目录。

要应用临时更新以修复特定缺陷,请按照本节中的过程操作。使用 Opatch 实用程序将临时更新应用于数据库主目录。

注:在过程示例中,数据库主目录为 /u02/app/oracle/product/12.1.0.2/dbhome_1,更新编号为 26543344。

  1. 从 My Oracle Support 获取适用的临时更新。

  2. 查看更新 README.txt 文件中的信息。此文件可能包含用于成功应用更新的附加和/或自定义说明。

  3. 使用 SCP 或 SFTP 将更新放置在目标数据库上。

  4. 关闭在数据库主目录中运行的每个数据库。

    srvctl stop database -db <db name> -stopoption immediate -verbose
  5. 将 Oracle 主目录环境变量设置为指向目标 Oracle 主目录。

    sudo su - oracle
    export ORACLE_HOME=/u02/app/oracle/product/12.1.0.2/dbhome_1
  6. 转到放置更新的目录,然后解压缩更新。

    cd <working directory where opatch is stored>
    unzip p26543344_122010_Linux-x86-64.zip
  7. 使用解压缩的更新转至目录,并检查是否存在冲突。

    cd 26543344
    $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
  8. 应用更新。

    $ORACLE_HOME/OPatch/opatch apply
  9. 验证更新是否已成功应用。

    $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME
  10. 如果数据库主目录包含数据库,请重新启动它们。

    $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
  11. 如果自述文件指示更新具有 sqlpatch 组件,则针对每个数据库运行 datapatch 命令。

    在运行 datapatch 之前,请确保所有可插入数据库 (pluggable database,PDB) 均处于打开状态。要打开 PDB,可以使用 SQL*Plus 对 PDB 执行以下操作。

    ALTER PLUGGABLE DATABASE <pdb name> OPEN READ WRITE
    $ORACLE_HOME/OPatch/datapatch