如何排查将 OEM_AGENT 选项与 Amazon RDS for Oracle 结合使用时的常见错误?

上次更新日期:2021 年 11 月 5 日

我有一个运行 Oracle 的 Amazon Relational Database Service (Amazon RDS) 数据库实例。当我尝试将 OEM_AGENT 选项用于数据库实例时,我收到了错误消息。如何排查和解决使用 OEM_AGENT 选项时出现的常见错误?

简短描述

Amazon RDS 通过使用 OEM_AGENT 选项支持 Oracle Enterprise Manager (OEM) Management Agent。在将 OEM_AGENT 选项与 Amazon RDS for Oracle 数据库实例配合使用时,您可能会收到本文中所述的错误之一。

注意:在继续执行故障排查步骤之前,请对数据库实例运行以下预检查:

1.    在将 OEM_AGENT 选项添加到选项组并通过运行以下 AWS Command Line Interface (AWS CLI) 命令将选项应用于数据库实例后,检查选项组的状态:

aws rds describe-db-instances --db-instance-identifier <db-instance-name> --query 'DBInstances[*].[Engine,DBInstanceStatus,OptionGroupMemberships]'

注意:如果在运行 AWS CLI 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI

验证输出,确保选项组的状态为正在同步。如果选项组的状态为正在同步,则会得到以下输出:

[
    [
        "oracle-ee",
        "available",
        [
            {
                "OptionGroupName": "custom-oracle-option",
                "Status": "in-sync"
            }
        ]
    ]
]

如果选项组的状态为 INVALID,则由于网络配置设置和其他先决条件存在问题,OEM_AGENT 将无法成功安装。

您可以通过从 AWS 管理控制台查看 Amazon RDS 数据库实例的“事件”部分来验证 OEM_AGENT 选项的安装状态。您还可以使用 AWS CLI 命令 describe-events

如果这些事件表明 OEM_AGENT 选项的安装或网络配置存在问题,请确保后续的先决条件均已满足。

2.    检查数据库实例的网络配置。数据库实例的安全组必须允许 OMS_HOST 侦听 OEM_AGENT 端口(默认值为 3872)和 RDS 端口(默认值为 1521)。

3.    在 OEM 代理端口和数据库端口上运行从 Oracle Management Service (OMS) 服务器到数据库实例的 telnet 测试,以检查连接性。

4.    检查网络配置,包括网络访问控制列表 (ACL) 和路由表。验证配置可排除阻止程序或显式拒绝的可能性。

5.    确保 OMS 和 RDS 之间的防火墙允许数据库侦听器端口和 OEM Agent 端口上的流量。

完成上述检查后,请检查 OEM_AGENT 上载是否正常。有关 OEM_AGENT 先决条件的详细信息,请参阅用于 Enterprise Manager Cloud Control 的 Oracle Management Agent

解决方法

要排查在将 OEM_AGENT 选项与 RDS for Oracle 实例结合使用时出现的问题,请将 OEM 代理日志导出到 Amazon CloudWatch,然后检查这些日志。有关更多信息,请参阅将 Oracle 日志发布到 Amazon CloudWatch Logs

数据库实例未显示在 OEM 控制台的自动发现目标中

当 OMS 服务器无法通过 SSH 连接到底层主机时,会出现此问题。此连接是操作系统级别的自动发现功能正常工作的先决条件。与添加目标 Oracle 数据库实例时使用的基于向导的自动发现不同,您必须手动将 Oracle 数据库实例添加为目标。有关 Management Agent 的局限性的详细信息,请参阅 Management Agent 的局限性

错误:无法安装 Oracle OEM_AGENT,因为代理程序密码不正确或已过期

确保代理的密码正确且未过期。在 OEM 服务器上,您可以修改现有的代理注册密码,或创建新密码。

错误:无法安装 Oracle OEM_AGENT,因为数据库实例无法访问 OMS 主机

当 OEM_AGENT 安装失败时您会收到此错误,因为无法从 RDS 主机访问 OMS 主机/端口。要排查此错误,请检查是否可以从数据库实例访问 OMS 主机。

要验证 OMS 服务器与 OEM_AGENT 之间的网络连接,请测试从 RDS for Oracle 实例到 OMS 服务器的连接。为此,您可以利用访问控制列表 (ACL) 和 UTL_TCP 软件包。

您也可以执行以下操作:

1.    启动与您的数据库实例采用相同网络设置 (SG/ACL) 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。

2.    从 Amazon EC2 实例向 OMS 主机的端口 4903 运行 telnet 命令:

telnet OMS_HOST 4903

3.    通过从 OMS 服务器到数据库实例在 OEM 主机中运行 telnet 测试来验证连接:

telnet RDS-instance-endpoint 1521 (RDS default port)

4.    检查 RDS 主机是否能够将 OMS 主机名解析为 IP 地址:

SQL> SELECT UTL_INADDR.get_host_address('OMS_Host_Name') FROM dual;

5.    运行 TCP Traceroute 来检查流量受阻的位置。

错误:您已成功在数据库实例上安装了 OEM_AGENT 选项。您的安全组可能配置不正确

即使安装正确完成,与数据库实例关联的 RDS 安全组也可能缺少允许 OMS 主机与数据库实例之间通信的配置。

要解决此错误,请验证代理的安全组允许入站流量,并且 OMS 主机属于有权访问代理端口的安全组。有关详细信息,请参阅用于 Enterprise Manager Cloud Control 的 Oracle Management Agent

错误:无法安装 Oracle OEM_AGENT,因为您的 OMS 主机版本 x.x.x.x 与代理版本 x.x.x.x 不兼容。

当 OEM_AGENT 版本和 OMS 主机版本之间存在兼容性问题时,将会收到此错误。目前,当两个组件兼容时,OEM_AGENT 将与 OMS 集成。要解决此错误,请选择可兼容的 OMS 主机和 OEM 代理版本。有关查看兼容性矩阵的信息,请参阅 Management Agent 的先决条件

错误:您的 OMS 主机使用的是不受信任的第三方证书

当已成功安装 OEM_AGENT 选项,但是您的 OMS 主机使用的是不受信任的第三方证书时,将会收到此错误。使用第三方所需的信任认证配置 OMS 主机。

错误:OEM_AGENT 选项缺少必需的选项设置(服务:AmazonRDS;状态代码:400;错误代码:InvalidParameterValue;

当 OEM_AGENT 缺少必需的设置之一并且指定该设置时,您会收到此错误。有关 OEM_AGENT 必需设置的详细信息,请参阅 Management Agent 的选项设置

错误:心跳状态:OMS 非法响应 [错误 - 无法更新目标类型元数据]

在将 OEM_AGENT 选项附加到 Amazon RDS 后更换 OMS 主机时,您会收到此错误。

1.    清除代理状态,或者使用使用管理代理执行数据库任务中的步骤重新启动 OEM_AGENT。

2.    重新建立与 OMS 主机的连接。

3.    检查 OMS 版本与 OEM_AGENT 版本的兼容性问题。运行以下查询以检查表是否列出了选项组中使用的 OEM_AGENT 版本:

select type_meta_ver from sysman.mgmt_target_type_versions where target_type = 'oracle_emd';

4.    如果 mgmt_target_type_versions 输出不包含选项组中使用的 OEM_AGENT 版本,请安装命令输出中列出的 OEM_AGENT 版本。

此错误还可能表示 OMS 端缺少所需的补丁和插件。确保 OMS 已正确设置并应用了所有必需的补丁。

如果代理被阻止,请在 OEM 控制台中执行以下操作以重新同步代理:

  1. 登录 Cloud Control 控制台。
  2. 选择 Setup(设置),选择 Manage Cloud Control(管理 Cloud Control),然后选择 Agents(代理)。
  3. 选择要重新同步的代理。
  4. Agent(代理)下拉列表中,选择 Resynchronization...(重新同步…)。
  5. 选择 Unblock agent on successful completion of agent resynchronization(在成功完成代理重新同步后取消阻止代理)。
  6. 选择 Continue(继续)。
    重新同步操作作为任务提交。
  7. 通过选择任务名称的链接来检查重新同步作业的状态。

成功完成任务后,验证已重新同步的代理以及所有受监控的目标的状态。

注意:DNS 服务器必须持续运行,OEM 监控才能有效工作。代理发出检测信号并将状态更新推送到 OMS 主机。如果在很长一段时间内无法从代理访问 OMS 主机,则 OMS 可能会认为代理和数据库已关闭。因此,请确保 DNS 服务器正常运行。

要使 Oracle Management Agent 上载与其关联的 OMS,请运行以下查询。运行此查询等效于运行 emctl 上载代理命令。

SELECT rdsadmin.rdsadmin_oem_agent_tasks.upload_oem_agent() as TASK_ID from DUAL;

要在清除代理状态后重新启动 OEM 代理,请运行以下查询:

SELECT rdsadmin.rdsadmin_oem_agent_tasks.restart_oem_agent() as TASK_ID from DUAL;

您只能使用 Oracle Enterprise Manager Cloud Control 13c Release 4 (13.4.0.0.0) 部署 Oracle Management Agent 13c Release 4 (13.4.0.0.0)。在 OMS 升级到 13c Release 4 之后,不支持新部署较早的 Oracle Management Agent(13.2 和 13.3)版本。有关详细信息,请参阅开始安装 Enterprise Manager System 之前

错误:无法安装 OEM_AGENT 选项,因为代理端口与 OMS 端口冲突。更新选项设置并重试

您收到此错误是因为您的 OEM_AGENT 配置错误,无法正常工作。您可能为 OMS 端口和 OEM_AGENT 端口指定了相同的端口号。要解决此错误,请更改 OMS 端口号或 OEM_AGENT 端口号。

查看以下 Management Agent 选项设置:

  • AGENT_PORT - 数据库实例上的此端口用于侦听 OMS 主机。默认值为 3872。您的 OMS 主机必须属于有权访问此端口的安全组。
  • OMS_PORT - OMS 主机上的此 HTTPS 端口用于侦听 Management Agent。
    要查找 HTTPS 上载端口,请连接到 OMS 主机并运行以下命令:
emctl status oms -details

错误:无法安装 Oracle OEM_AGENT,因为您的数据库实例没有足够的存储空间。确认数据库实例类和配置支持该选项组。如果支持,请验证所有选项组设置并重试

当数据库实例的预置存储空间无法提供按照 OEM_AGENT 先决条件所需的可用存储空间时,将会收到此错误。有关详细信息,请参阅 Management Agent 的先决条件。增加存储空间,然后重新安装 OEM_AGENT 选项。

错误:文件系统 / 有 X.XX% 的可用空间

您收到此错误消息是因为在 RDS for Oracle 实例中使用 OEM_AGENT 选项时有限制。主机指标和进程列表可能无法反映实际的系统状态。因此,请避免使用 OEM 来监控根文件系统或挂载点文件系统。有关详细信息,请参阅 Management Agent 的局限性

Amazon RDS 实例的根文件系统由内部自动化系统维护。此自动化系统会定期监控根文件系统,以确保文件系统有足够的空间。如果检测到存储空间不足,自动化系统会为根文件系统增加足够的空间。由于自动化系统会管理根文件系统中的空间,因此您可以忽略此错误。