

# Oracle Enterprise Manager
<a name="Oracle.Options.OEM"></a>

Amazon RDS 支持 Oracle Enterprise Manager (OEM)。OEM 是 Oracle 的企业信息技术集成管理产品线。

Amazon RDS 在 Oracle Database 19c 非 CDB 或 CDB 上支持 OEM。下表描述了支持的 OEM 选项。


****  

| 选项 | 选项 ID | 支持的 OEM 版本 | 
| --- | --- | --- | 
|  [OEM Database Express](Appendix.Oracle.Options.OEM_DBControl.md)  |  `OEM`  |  OEM Database Express 19c  | 
|  [OEM Management Agent](Oracle.Options.OEMAgent.md)  |  `OEM_AGENT`  |  OEM Cloud Control for 13c  | 

**注意**  
您可以使用 OEM Database 或 OEM Management Agent，但不能同时使用二者。

# Oracle Enterprise Manager Database Express
<a name="Appendix.Oracle.Options.OEM_DBControl"></a>

Amazon RDS 可通过使用 OEM 选项支持 Oracle Enterprise Manager Database Express（EM Express）。Amazon RDS 支持使用 CDB 或非 CDB 架构的 EM Express for Oracle Database 19c。

EM Express 是数据库中包含的基于 Web 的数据库管理工具，仅在打开时才可用。该工具支持关键性能管理和基本数据库管理功能。有关更多信息，请参阅 Oracle 数据库文档中的 [Introduction to Oracle Enterprise Manager Database Express](https://docs.oracle.com/en/database/oracle/oracle-database/19/admqs/getting-started-with-database-administration.html#GUID-BA75AD46-D22E-4914-A31E-C395CD6A2BBA)。

**注意**  
db.t3.small 数据库实例类不支持 EM Express。有关数据库实例类的更多信息，请参阅[RDS for Oracle 数据库实例类](Oracle.Concepts.InstanceClasses.md)。

## OEM 选项设置
<a name="Appendix.Oracle.Options.OEM_DBControl.Options"></a>

Amazon RDS 支持 OEM 选项的以下设置。


****  

| 选项设置 | 有效值 | 描述 | 
| --- | --- | --- | 
| **端口** | 一个整数值 |  RDS for Oracle 数据库实例上负责侦听 EM Express 的端口。默认端口为 5500。  | 
| **安全组** | — |  对 **Port** 具有访问权限的安全组。  | 

## 步骤 1：添加 OEM 选项
<a name="Appendix.Oracle.Options.OEM_DBControl.Add"></a>

将 OEM 选项添加到数据库实例的一般过程如下所示：

1. 创建新的选项组，或者复制或修改现有选项组。

1. 将 选项添加到该选项组。

1. 将选项组与数据库实例相关联。

如果添加 OEM 选项，则在数据库实例自动重新启动时会出现短暂中断。

**将 OEM 选项添加到数据库实例**

1. 确定您想要使用的选项组。您可以创建新的选项组，或使用现有选项组。如果您想使用现有选项组，请跳到下一步。或者，通过以下设置创建自定义数据库选项组：

   1. 对于**引擎**，请选择适用于您的数据库实例的 Oracle 版本。

   1. 对于**主引擎版本**，请选择数据库实例的版本。

   有关更多信息，请参阅“[创建选项组](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)”。

1. 将 OEM 选项添加到选项组中，然后配置选项设置。有关添加选项的更多信息，请参阅 [将选项添加到选项组](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。有关各项设置的更多信息，请参阅[OEM 选项设置](#Appendix.Oracle.Options.OEM_DBControl.Options)。
**注意**  
如果在已附加到一个或多个数据库实例的现有选项组中添加 OEM 选项，所有数据库实例自动重新启动时都会发生短暂中断。

1. 将选项组应用到新的或现有的数据库实例：
   + 对于新数据库实例，请在启动实例时应用选项组。有关更多信息，请参阅“[创建 Amazon RDS 数据库实例](USER_CreateDBInstance.md)”。
   + 对于现有数据库实例，请修改实例并附加新的选项组以应用选项组。如果添加 OEM 选项，则在数据库实例自动重新启动时会出现短暂中断。有关更多信息，请参阅 [修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。

**注意**  
您还可以使用 AWS CLI 添加 OEM 选项。有关示例，请参阅 [将选项添加到选项组](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。

## 步骤 2：（仅限 CDB）解锁 DBSNMP 用户账户
<a name="Appendix.Oracle.Options.OEM_DBControl.DBSNMP"></a>

如果数据库实例使用 CDB 架构，您必须以 `DBSNMP` 身份登录 EM Express。在 CDB 中，`DBSNMP` 是普通用户。默认情况下，此账户处于锁定状态。如果数据库实例不使用 CDB 架构，请跳过此步骤。

**解锁 CDB 实例中的 DBSNMP 用户账户**

1. 在 SQL\$1Plus 或其他 Oracle SQL 应用程序中，以主用户身份登录到数据库实例。

1. 运行以下存储过程来解锁 `DBSNMP` 账户：

   ```
   1. EXEC rdsadmin.rdsadmin_util.reset_oem_agent_password('new_password');
   ```

   如果您收到错误消息，指出该过程不存在，请重启 CDB 实例来自动安装它。有关更多信息，请参阅 [重启数据库实例](USER_RebootInstance.md)。

## 步骤 3：通过浏览器访问 EM Express
<a name="Appendix.Oracle.Options.OEM_DBControl.Using"></a>

当您从 Web 浏览器访问 EM Express 时，将显示一个登录窗口，提示您输入用户名和密码。

**通过浏览器访问 EM Express**

1. 确定 Amazon RDS 数据库实例的端点和 EM Express 端口。有关查找 Amazon RDS 数据库实例的端点的信息，请参阅 [查找 RDS for Oracle 数据库实例的端点](USER_Endpoint.md)。

1. 使用以下格式在浏览器定位器栏中输入 URL。

   ```
   https://endpoint.rds.amazonaws.com:port/em
   ```

   例如，如果 Amazon RDS 数据库实例的端点为 `mydb.a1bcde234fgh.us-east-1.rds.amazonaws.com`，而 EM Express 端口为 `1158`，则使用以下 URL 访问 EM Express。

   ```
   1. https://mydb.f9rbfa893tft.us-east-1.rds.amazonaws.com:1158/em
   ```

1. 当系统提示您输入登录详细信息时，根据数据库架构，执行以下操作之一：  
**数据库为非 CDB。**  
键入数据库实例的主用户名和主密码。  
**数据库为 CDB。**  
对于用户输入 `DBSNMP`，并输入 `DBSNMP` 密码。将 `Container` 字段留空。

## 修改 OEM Database 设置
<a name="Appendix.Oracle.Options.OEM_DBControl.ModifySettings"></a>

启用 OEM Database 后，可以修改该选项的安全组设置。

将选项组与数据库实例相关联后，将无法修改 OEM 端口号。要更改数据库实例的 OEM 端口号，可执行以下操作：

1. 创建新的选项组。

1. 将具有新端口号的 OEM 选项添加到新选项组。

1. 删除数据库实例的现有选项组。

1. 将新选项组添加到数据库实例。

有关如何修改选项设置的更多信息，请参阅 [修改选项设置](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption)。有关各项设置的更多信息，请参阅[OEM 选项设置](#Appendix.Oracle.Options.OEM_DBControl.Options)。

## 运行 OEM Database Express 任务
<a name="Appendix.Oracle.Options.OEM_DBControl.DBTasks"></a>

您可以使用 Amazon RDS 过程运行某些 OEM Database Express 任务。通过运行这些过程，您可以执行下面列出的任务。

**注意**  
OEM Database Express 任务异步运行。

**Topics**
+ [将 OEM Database Express 的网站前端切换到 Adobe Flash](#Appendix.Oracle.Options.OEM_DBControl.DBTasks.FrontEndToFlash)
+ [将 OEM Database Express 的网站前端切换到 Oracle JET](#Appendix.Oracle.Options.OEM_DBControl.DBTasks.FrontEndToOracleJET)

### 将 OEM Database Express 的网站前端切换到 Adobe Flash
<a name="Appendix.Oracle.Options.OEM_DBControl.DBTasks.FrontEndToFlash"></a>

**注意**  
此任务仅适用于 Oracle Database 19c 非 CDB。

从 Oracle Database 19c 开始，Oracle 已弃用以前的 OEM Database Express 用户界面，该界面是基于 Adobe Flash 的。相反，OEM Database Express 现在使用通过 Oracle JET 构建的界面。如果您在使用新界面时遇到困难，可以切换回已弃用的基于 Flash 的界面。可能遇到的困难包括登录 OEM Database Express 后卡在 `Loading` 屏幕上。您可能还会失去基于 Flash 的 OEM Database Express 版本中存在的某些功能。

要将 OEM Database Express 网站前端切换到 Adobe Flash，请运行 Amazon RDS 过程 `rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_flash`。该过程相当于 `execemx emx` SQL 命令。

安全最佳实践不鼓励使用 Adobe Flash。虽然您可以恢复到基于 Flash 的 OEM Database Express，但我们建议您尽可能使用基于 JET 的 OEM Database Express 网站。如果您恢复使用 Adobe Flash 并希望切换回使用 Oracle JET，请使用 `rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_jet` 过程。Oracle 数据库升级后，较新版本的 Oracle JET 可能会解决 OEM Database Express 中与 JET 相关的问题。有关切换到 Oracle JET 的更多信息，请参阅[将 OEM Database Express 的网站前端切换到 Oracle JET](#Appendix.Oracle.Options.OEM_DBControl.DBTasks.FrontEndToOracleJET)。

**注意**  
从只读副本的源数据库实例运行此任务也会导致只读副本将其 OEM Database Express 网站前端切换到 Adobe Flash。

以下过程调用将创建一个任务，以将 OEM Database Express 网站切换到 Adobe Flash，并返回任务的 ID。

```
SELECT rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_flash() as TASK_ID from DUAL;
```

您可以通过显示任务的输出文件来查看结果。

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));
```

将 *`task-id`* 替换为由此过程返回的任务 ID。有关 Amazon RDS 过程 `rdsadmin.rds_file_util.read_text_file` 的更多信息，请参阅[读取数据库实例目录中的文件](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles)。

您还可以通过在 **Logs & events (日志和事件)** 部分中搜索 AWS 管理控制台 的相关日志条目，查看 `task-id` 中的任务输出文件的内容。

### 将 OEM Database Express 的网站前端切换到 Oracle JET
<a name="Appendix.Oracle.Options.OEM_DBControl.DBTasks.FrontEndToOracleJET"></a>

**注意**  
此任务仅适用于 Oracle Database 19c 非 CDB。

要将 OEM Database Express 网站前端切换到 Oracle JET，请运行 Amazon RDS 过程 `rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_jet`。该过程相当于 `execemx omx` SQL 命令。

默认情况下，运行 19c 或更高版本的 Oracle 数据库实例的 OEM Database Express 网站使用 Oracle JET。如果您使用了 `rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_flash` 过程将 OEM Database Express 网站前端切换到 Adobe Flash，则可以切换回 Oracle JET。要执行此操作，请使用 `rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_jet` 过程。有关切换到 Adobe Flash 的更多信息，请参阅[将 OEM Database Express 的网站前端切换到 Adobe Flash](#Appendix.Oracle.Options.OEM_DBControl.DBTasks.FrontEndToFlash)。

**注意**  
从只读副本的源数据库实例运行此任务也会导致只读副本将其 OEM Database Express 网站前端切换到 Oracle JET。

以下过程调用将创建一个任务以将 OEM Database Express 网站切换到 Oracle JET，并返回任务的 ID。

```
SELECT rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_jet() as TASK_ID from DUAL;
```

您可以通过显示任务的输出文件来查看结果。

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));
```

将 *`task-id`* 替换为由此过程返回的任务 ID。有关 Amazon RDS 过程 `rdsadmin.rds_file_util.read_text_file` 的更多信息，请参阅[读取数据库实例目录中的文件](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles)。

您还可以通过在 **Logs & events (日志和事件)** 部分中搜索 AWS 管理控制台 的相关日志条目，查看 `task-id` 中的任务输出文件的内容。

## 删除 OEM Database 选项
<a name="Appendix.Oracle.Options.OEM_DBControl.Remove"></a>

可以从数据库实例中删除 OEM 选项。如果删除 OEM 选项，实例在自动重新启动时会出现短暂中断。因此，在删除 OEM 选项后，不需要重新启动数据库实例。

要从数据库实例中删除 OEM 选项，请执行下列操作之一：
+ 从“OEM ”选项所属的选项组中删除该选项。此更改会影响使用该选项组的所有数据库实例。有关更多信息，请参阅“[从选项组中删除选项](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption)”。
+ 修改数据库实例，并指定不包含“OEM ”选项的另一个选项组。此更改会影响单个数据库实例。您可以指定默认 (空) 选项组，或指定其他自定义选项组。有关更多信息，请参阅“[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)”。

# 适用于 Enterprise Manager Cloud Control 的 Oracle Management Agent
<a name="Oracle.Options.OEMAgent"></a>

Oracle Enterprise Manager (OEM) Management Agent 是一种软件组件，可监控在主机上运行的目标并将该信息传达到中间层 Oracle Management Service (OMS)。Amazon RDS 通过使用 `OEM_AGENT` 选项支持 Management Agent。

有关更多信息，请参阅 Oracle 文档中的 [Oracle Enterprise Manager Cloud Control 12c 概述](http://docs.oracle.com/cd/E24628_01/doc.121/e25353/overview.htm)和 [Oracle Enterprise Manager Cloud Control 13c 概述](http://docs.oracle.com/cd/E63000_01/EMCON/overview.htm#EMCON109)。

**Topics**
+ [Management Agent 的要求](#Oracle.Options.OEMAgent.PreReqs)
+ [OMS 主机通信先决条件](#Oracle.Options.OEMAgent.PreReqs.host)
+ [Management Agent 的限制](#Oracle.Options.OEMAgent.limitations)
+ [Management Agent 的选项设置](#Oracle.Options.OEMAgent.Options)
+ [为数据库实例启用 Management Agent 选项](#Oracle.Options.OEMAgent.Enable)
+ [删除 Management Agent 选项](#Oracle.Options.OEMAgent.Remove)
+ [使用 Management Agent 执行数据库任务](#Oracle.Options.OEMAgent.DBTasks)

## Management Agent 的要求
<a name="Oracle.Options.OEMAgent.PreReqs"></a>

以下是使用 Management Agent 的一般要求：
+ 数据库实例必须运行 Oracle Database 19c（19.0.0.0）。可以使用 CDB 或非 CDB 架构。
+ 您必须使用配置为连接到您的数据库实例的 Oracle Management Service（OMS）。请注意以下 OMS 要求：
  + Management Agent 版本 13.5.0.0.v2 和 13.5.0.0.v3 需要 OMS 版本 13.5.0.23 或 24.1。
  + Management Agent 版本 13.5.0.0.v1 需要 OMS 版本 13.5.0.0 或 24.1。
  + Management Agent 版本 13.4.0.9.v1 和 13.4.0.9.v2 需要 OMS 版本 13.4.0.9 或更高版本及补丁 32198287。
+ 在大多数情况下，您必须配置 VPC 以允许 OMS 与数据库实例之间的连接。如果您不熟悉 Amazon Virtual Private Cloud (Amazon VPC)，建议您在继续之前先完成 [教程：创建 VPC 以用于数据库实例（仅限 IPv4）](CHAP_Tutorials.WebServerDB.CreateVPC.md) 中的步骤。
+ 您可以将 Management Agent 与适用于 12c 和 13c 的 Oracle Enterprise Manager Cloud Control 结合使用。确保您的 OEM 版本有足够的存储空间：
  + OEM 13c 版本 5 至少 8.5GiB
  + OEM 13c 版本 4 至少 8.5 GiB
  + OEM 13c 版本 3 至少 8.5 GiB
  + OEM 13c 版本 2 至少 5.5 GiB
  + OEM 13c 版本 1 至少 4.5 GiB
  + OEM 12c 至少 2.5 GiB
+ 如果您使用的是 Management Agent 版本 `OEM_AGENT 13.2.0.0.v3` 和 `13.3.0.0.v2`，并且想要使用 TCPS 连接，请按照 Oracle 文档中的[配置第三方 CA 证书以便与目标数据库通信](https://docs.oracle.com/cd/E73210_01/EMSEC/GUID-8337AD48-1A32-4CD5-84F3-256FAE93D043.htm#EMSEC15996)中的说明进行操作。另外，按照 Oracle 文档 ID 为 2241358.1 的 Oracle 文档中的说明更新 OMS 上的 JDK。此步骤可确保 OMS 支持数据库支持的所有密码套件。
**注意**  
Management Agent `OEM_AGENT 13.2.0.0.v3`、`13.3.0.0.v2`、`13.4.0.9.v1` 和更高版本支持 Management Agent 和数据库实例之间的 TCPS 连接。

## OMS 主机通信先决条件
<a name="Oracle.Options.OEMAgent.PreReqs.host"></a>

确保您的 OMS 主机和您的 Amazon RDS 数据库实例可以通信。执行以下操作：
+ 当 OMS 主机位于防火墙后时，要从 Management Agent 连接到 OMS 主机，请将数据库实例的 IP 地址添加到防火墙中。确保 OMS 防火墙允许以下网络流量：  
从 OMS 主机到数据库实例  
配置单向防火墙规则，以便支持从 OMS 主机到数据库侦听器端口（默认为 1521）和 OEM Agent 端口（默认为 3872）的流量。  
从数据库实例到 OMS 主机  
配置单向防火墙规则，以便支持从数据库实例到 OMS HTTP 端口（默认为 4903）的流量。
+ 要从 OMS 连接到 Management Agent（如果 OMS 具有一个可公开解析的主机名），需将该 OMS 地址添加到安全组。您的安全组必须拥有允许访问数据库侦听器端口和 Management Agent 端口的入站规则。有关创建安全组并添加入站规则的示例，请参阅[教程：创建 VPC 以用于数据库实例（仅限 IPv4）](CHAP_Tutorials.WebServerDB.CreateVPC.md)。
+ 要从 OMS 连接到 Management Agent (如果 OMS 没有可公开解析的主机名)，请使用下列项目之一：
  + 如果 OMS 已在私有 VPC 中的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上托管，则可设置 VPC 对等连接以从 OMS 连接到 Management Agent。有关更多信息，请参阅“[VPC 中的数据库实例由另一 VPC 中的 EC2 实例访问](USER_VPC.Scenarios.md#USER_VPC.Scenario3)”。
  + 如果您的 OMS 已在本地托管，则可设置 VPN 连接以允许从 OMS 访问 Management Agent。有关更多信息，请参阅 [VPC 中的数据库实例由客户端应用程序通过互联网访问](USER_VPC.Scenarios.md#USER_VPC.Scenario4)或 [VPN 连接](https://docs.aws.amazon.com/vpc/latest/userguide/vpn-connections.html)。
+ 要将 OEM Management Agent 版本 13.5.0.0（v1-v3）连接到 24.1 OMS 主机，请在配置选项中将 `MINIMUM_TLS_VERSION` 设置为使用 TLS 1.2 协议 `TLSv1.2`。

## Management Agent 的限制
<a name="Oracle.Options.OEMAgent.limitations"></a>

以下是使用 Management Agent 的一些限制：
+ 您无法提供自定义 Oracle 管理代理映像。
+ 不支持需要主机凭证的管理任务（例如作业执行和数据库修补）。
+ 不保证主机指标和进程列表反映实际的系统状态。因此，您不应使用 OEM 来监视根文件系统或挂载点文件系统。有关监控操作系统的更多信息，请参阅 [使用增强监控来监控操作系统指标](USER_Monitoring.OS.md)。
+ 不支持自动发现。您必须手动添加数据库目标。
+ OMS 模块可用性取决于数据库版本。例如，数据库性能诊断和优化模块仅适用于 Oracle Database 企业版。
+ Management Agent 会占用额外的内存和计算资源。如果您在启用 `OEM_AGENT` 选项后遇到了性能问题，建议您向上扩展至更大的数据库实例类。有关更多信息，请参阅“[数据库实例类](Concepts.DBInstanceClass.md)”和“[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)”。
+ 在 Amazon RDS 主机上运行 `OEM_AGENT` 的用户没有对警报日志的操作系统访问权限。因此，您无法收集 OEM 中 `DB Alert Log` 和 `DB Alert Log Error Status` 的指标。

## Management Agent 的选项设置
<a name="Oracle.Options.OEMAgent.Options"></a>

Amazon RDS 支持 Management Agent 选项的以下设置。


| 选项设置 | 必需 | 有效值 | 描述 | 
| --- | --- | --- | --- | 
|  **版本** (`AGENT_VERSION`)  |  是  |  `13.5.0.0.v3` `13.5.0.0.v2` `13.5.0.0.v1` `13.4.0.9.v2` `13.4.0.9.v1` `13.3.0.0.v2` `13.3.0.0.v1` `13.2.0.0.v3` `13.2.0.0.v2` `13.2.0.0.v1` `13.1.0.0.v1`  |  Management Agent 软件的版本。支持的最低版本为 `13.1.0.0.v1`。 AWS CLI 选项名称为 `OptionVersion`。  在 AWS GovCloud (US)区域中，13.1 版本不可用。   | 
|  **端口** (`AGENT_PORT`)  |  是  |  一个整数值  |  侦听 OMS 主机的数据库实例上的端口。默认值为 3872。您的 OMS 主机必须属于对此端口具有访问权限的安全组。 AWS CLI 选项名称为 `Port`。  | 
|  ** 安全组**  |  是  |  现有安全组  |  对 **Port** 具有访问权限的安全组。您的 OMS 主机必须属于此安全组。 AWS CLI 选项名称为 `VpcSecurityGroupMemberships` 或 `DBSecurityGroupMemberships`。  | 
|  **OMS\$1HOST**  |  是  |  一个字符串值，例如 *my.example.oms*   |  OMS 的可公开访问的主机名或 IP 地址。 AWS CLI 选项名称为 `OMS_HOST`。  | 
|  **OMS\$1PORT**  |  是  |  一个整数值  |  OMS 主机上侦听 Management Agent 的 HTTPS 上传端口。 要确定 HTTPS 上传端口，请连接到 OMS 主机，然后运行以下命令 (此操作需要 `SYSMAN` 密码)： emctl status oms -details  AWS CLI 选项名称为 `OMS_PORT`。  | 
|  **AGENT\$1REGISTRATION\$1PASSWORD**  |  是  |  一个字符串值  |  Management Agent 用于通过 OMS 自行进行身份验证的密码。建议您在启用 `OEM_AGENT` 选项之前先在 OMS 中创建一个永久性密码。使用永久性密码，您可以在多个 Amazon RDS 数据库之中共享一个 Management Agent 选项组。 AWS CLI 选项名称为 `AGENT_REGISTRATION_PASSWORD`。  | 
|  **ALLOW\$1TLS\$1ONLY**  |  否  |  `true`、`false`（默认值）  |  一个值，该值将 OEM 代理配置为仅在代理作为服务器侦听时支持 `TLSv1` 协议。不再支持此设置。默认情况下，Management Agent 版本 13.1.0.0.v1 及更高版本支持传输层安全性协议（TLS）。  | 
|  **MINIMUM\$1TLS\$1VERSION**  |  否  |  `TLSv1` (默认值)`TLSv1.2`  |  一个值，该值指定 OEM 代理在代理作为服务器侦听时支持的最低 TLS 版本。失去支持的代理版本仅支持 `TLSv1` 设置。 要将 13.5.0.0（v1-v3）连接到 24.1 OMS 主机，请将其设置为 `TLSv1.2`。  | 
|  **TLS\$1CIPHER\$1SUITE**  |  否  |  请参阅[Management Agent 的选项设置](#Oracle.Options.OEMAgent.Options)。  |  一个值，该值指定 OEM 代理在代理作为服务器侦听时使用的 TLS 密码套件。  | 

下表列出了 Management Agent 选项支持的 TLS 密码套件。


| 密码套件 | 支持的引擎版本 | 符合 FedRAMP 要求 | 
| --- | --- | --- | 
| TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 全部 | 否 | 
| TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 | 13.1.0.0.v1 及更高版本 | 否 | 
| TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 13.2.0.0.v3 及更高版本 | 否 | 
| TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA256 | 13.2.0.0.v3 及更高版本 | 否 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 13.2.0.0.v3 及更高版本 | 是 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 13.2.0.0.v3 及更高版本 | 是 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 | 13.2.0.0.v3 及更高版本 | 是 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 | 13.2.0.0.v3 及更高版本 | 是 | 
| TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 | 13.4.0.9.v1 及更高版本 | 是 | 
| TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 | 13.4.0.9.v1 及更高版本 | 是 | 

### 证书与密码套件的兼容性
<a name="Oracle.Options.OEMAgent.CertificateCompatibility"></a>

RDS for Oracle 同时支持 RSA 和椭圆曲线数字签名算法（ECDSA）证书。在为数据库实例配置 OEM Agent 选项时，必须确保在 `TLS_CIPHER_SUITE` 选项设置中指定的密码套件与数据库实例使用的证书类型兼容。

下表展示了证书类型和密码套件之间的兼容性：


| 证书类型 | 兼容的密码套件 | 不兼容的密码套件 | 
| --- | --- | --- | 
| RSA 证书（rds-ca-2019、rds-ca-rsa2048-g1、rds-ca-rsa4096-g1） |  TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384  |  TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384  | 
| ECDSA 证书（rds-ca-ecc384-g1） |  TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384  |  TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384  | 

在 `TLS_CIPHER_SUITE` 选项设置中指定密码套件时，请确保其与数据库实例所用的证书类型兼容。如果您尝试将选项组与包含和数据库实例的证书类型不兼容的密码套件的 OEM Agent 选项相关联，操作将失败，并显示一条错误消息，指出不兼容。

## 为数据库实例启用 Management Agent 选项
<a name="Oracle.Options.OEMAgent.Enable"></a>

要启用 Management Agent 选项，请使用以下步骤：

**Topics**
+ [步骤 1：将 Management Agent 选项添加到数据库实例](#Oracle.Options.OEMAgent.Add)
+ [步骤 2：解锁 DBSNMP 用户账户](#Oracle.Options.OEMAgent.DBSNMP)
+ [步骤 3：将目标添加到 Management Agent 控制台](#Oracle.Options.OEMAgent.Using)

### 步骤 1：将 Management Agent 选项添加到数据库实例
<a name="Oracle.Options.OEMAgent.Add"></a>

要将 Management Agent 选项添加到数据库实例，请执行以下操作：

1. 创建新的选项组，或者复制或修改现有选项组。

1. 将 选项添加到该选项组。

1. 将选项组与数据库实例相关联。

如果遇到错误，请查看[我的 Oracle 支持](https://support.oracle.com/)文档以了解有关解决特定问题的信息。

在添加“Management Agent”选项后，您无需重新启动数据库实例。只要选项组处于活动状态，OEM Agent 就处于活动状态。

如果 OMS 主机使用的是不受信任的第三方证书，则 Amazon RDS 将返回以下错误。

```
You successfully installed the OEM_AGENT option. Your OMS host is using an untrusted third party certificate. 
Configure your OMS host with the trusted certificates from your third party.
```

如果返回此错误，则在更正问题之前，不会启用 Management Agent 选项。有关更正问题的信息，请参阅“我的 Oracle 支持”文档 [2202569.1](https://support.oracle.com/epmos/faces/DocContentDisplay?id=2202569.1)。

#### 控制台
<a name="Oracle.Options.OEMAgent.Add.Console"></a>

**将 Management Agent 选项添加到数据库实例**

1. 确定您想要使用的选项组。您可以创建新的选项组，或使用现有选项组。如果您想使用现有选项组，请跳到下一步。或者，通过以下设置创建自定义数据库选项组：

   1. 对于**引擎**，请选择适用于您的数据库实例的 Oracle 版本。

   1. 对于**主引擎版本**，请选择数据库实例的版本。

   有关更多信息，请参阅“[创建选项组](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)”。

1. 将 **OEM\$1AGENT** 选项添加到选项组，然后配置选项设置。有关添加选项的更多信息，请参阅 [将选项添加到选项组](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。有关各项设置的更多信息，请参阅[Management Agent 的选项设置](#Oracle.Options.OEMAgent.Options)。

1. 将选项组应用到新的或现有的数据库实例：
   + 对于新数据库实例，您可以在启动实例时应用选项组。有关更多信息，请参阅“[创建 Amazon RDS 数据库实例](USER_CreateDBInstance.md)”。
   + 对于现有数据库实例，您可以通过修改实例并附加新的选项组来应用选项组。有关更多信息，请参阅“[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)”。

#### AWS CLI
<a name="Oracle.Options.OEMAgent.Add.CLI"></a>

以下示例使用 AWS CLI [add-option-to-option-group](https://docs.aws.amazon.com/cli/latest/reference/rds/add-option-to-option-group.html) 命令将 `OEM_AGENT` 选项添加到名为 `myoptiongroup` 的选项组。

对于 Linux、macOS 或 Unix：

```
aws rds add-option-to-option-group \
    --option-group-name "myoptiongroup" \
    --options OptionName=OEM_AGENT,OptionVersion=13.1.0.0.v1,Port=3872,VpcSecurityGroupMemberships=sg-1234567890,OptionSettings=[{Name=OMS_HOST,Value=my.example.oms},{Name=OMS_PORT,Value=4903},{Name=AGENT_REGISTRATION_PASSWORD,Value=password}] \
    --apply-immediately
```

对于：Windows

```
aws rds add-option-to-option-group ^
    --option-group-name "myoptiongroup" ^
    --options OptionName=OEM_AGENT,OptionVersion=13.1.0.0.v1,Port=3872,VpcSecurityGroupMemberships=sg-1234567890,OptionSettings=[{Name=OMS_HOST,Value=my.example.oms},{Name=OMS_PORT,Value=4903},{Name=AGENT_REGISTRATION_PASSWORD,Value=password}] ^
    --apply-immediately
```

### 步骤 2：解锁 DBSNMP 用户账户
<a name="Oracle.Options.OEMAgent.DBSNMP"></a>

Management Agent 使用 `DBSNMP` 用户账户连接到数据库，并向 Oracle Enterprise Manager 报告问题。在 CDB 中，`DBSNMP` 是普通用户。Management Agent 和 OEM Database Express 都需要此用户账户。默认情况下，此账户处于锁定状态。解锁此账户的过程会有所不同，具体取决于数据库使用的是非 CDB 还是 CDB 架构。

**解锁 DBSNMP 用户账户**

1. 在 SQL\$1Plus 或其他 Oracle SQL 应用程序中，以主用户身份登录到数据库实例。

1. 根据数据库架构，执行以下操作之一：  
**数据库为非 CDB。**  
运行以下 SQL 语句：  

   ```
   1. ALTER USER dbsnmp IDENTIFIED BY new_password ACCOUNT UNLOCK;
   ```  
**数据库为 CDB。**  
运行以下存储过程来解锁 `DBSNMP` 账户：  

   ```
   1. EXEC rdsadmin.rdsadmin_util.reset_oem_agent_password('new_password');
   ```
如果您收到错误消息，指出该过程不存在，请重启 CDB 实例来自动安装它。有关更多信息，请参阅 [重启数据库实例](USER_RebootInstance.md)。

### 步骤 3：将目标添加到 Management Agent 控制台
<a name="Oracle.Options.OEMAgent.Using"></a>

要将数据库实例添加为目标，请确保您知道端点和端口。有关查找 Amazon RDS 数据库实例的端点的信息，请参阅 [查找 RDS for Oracle 数据库实例的端点](USER_Endpoint.md)。如果数据库使用 CDB 架构，则将 `CDB$ROOT` 容器单独添加为目标。

**将目标添加到 Management Agent 控制台**

1. 在 OMS 控制台中，选择 **Setup**、**Add Target**、**Add Targets Manually**。

1. 选择 **Add Targets Declaratively by Specifying Target Monitoring Properties**。

1. 对于 **Target Type**，选择 **Database Instance**。

1. 对于 **Monitoring Agent (监控代理)**，请选择标识符与 RDS 数据库实例标识符相同的代理。

1. 选择 **Add Manually**。

1. 输入 Amazon RDS 数据库实例的端点，或者从主机名列表中选择该端点。确保指定的主机名与 Amazon RDS 数据库实例的端点匹配。

1. 指定以下数据库属性：
   + 对于 **Target name (目标名称)**，输入一个名称。
   + 对于 **Database system name (数据库系统名称)**，输入一个名称。
   + 对于 **Monitor username (监控用户名)**，输入 **dbsnmp**。
   + 对于**监控密码**，输入[步骤 2：解锁 DBSNMP 用户账户](#Oracle.Options.OEMAgent.DBSNMP)中的密码。
   + 对于 **Role (角色)**，输入 **normal (正常)**。
   + 对于 **Oracle home path (Oracle 主路径)**，输入 **/oracle**。
   + 对于 **Listener Machine name**，已显示该代理标识符。
   + 对于 **Port (端口)**，输入数据库端口。RDS 默认端口为 1521。
   + 对于 **Database name (数据库名称)**，输入数据库的名称。如果数据库为 CDB，则此名称为 `RDSCDB`。

1. 选择 **Test Connection**。

1. 选择 **Next (下一步)**。目标数据库将显示在所监控资源的列表中。

## 删除 Management Agent 选项
<a name="Oracle.Options.OEMAgent.Remove"></a>

可以从数据库实例中删除 OEM Agent。删除 OEM Agent 后，您无需重新启动数据库实例。

要从数据库实例中删除 OEM Agent，请执行下列操作之一：
+ 从“OEM Agent”选项所属的选项组中删除该选项。此更改会影响使用该选项组的所有数据库实例。有关更多信息，请参阅“[从选项组中删除选项](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption)”。
+ 修改数据库实例，并指定不包含“OEM Agent”选项的另一个选项组。此更改会影响单个数据库实例。您可以指定默认 (空) 选项组，或指定其他自定义选项组。有关更多信息，请参阅 [修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。

## 使用 Management Agent 执行数据库任务
<a name="Oracle.Options.OEMAgent.DBTasks"></a>

您可以使用 Amazon RDS 过程在 Management Agent 上运行某些 EMCTL 命令。通过运行这些过程，您可以执行下面列出的任务。

**注意**  
任务以异步方式执行。

**Topics**
+ [保护 Management Agent](#Oracle.Options.OEMAgent.DBTasks.SecureAgent)
+ [获取 Management Agent 的状态](#Oracle.Options.OEMAgent.DBTasks.GetAgentStatus)
+ [重新启动 Management Agent](#Oracle.Options.OEMAgent.DBTasks.RestartAgent)
+ [列出 Management Agent 监控的目标](#Oracle.Options.OEMAgent.DBTasks.ListTargets)
+ [列出 Management Agent 监控的收集线程](#Oracle.Options.OEMAgent.DBTasks.ListCollectionThreads)
+ [清除 Management Agent 的状态](#Oracle.Options.OEMAgent.DBTasks.ClearState)
+ [让 Management Agent 上载其 OMS](#Oracle.Options.OEMAgent.DBTasks.ForceUploadOMS)
+ [为 OMS 执行 ping 操作](#Oracle.Options.OEMAgent.DBTasks.PingOMS)
+ [查看正在执行的任务的状态](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus)

### 保护 Management Agent
<a name="Oracle.Options.OEMAgent.DBTasks.SecureAgent"></a>

要保护 Management Agent，请运行 Amazon RDS 过程 `rdsadmin.rdsadmin_oem_agent_tasks.secure_oem_agent`。该过程相当于运行 `emctl secure agent` 命令。

以下过程创建一个任务来保护 Management Agent 并返回任务的 ID：

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.secure_oem_agent as TASK_ID from DUAL;
```

要显示任务的输出文件并查看结果，请参阅[查看正在执行的任务的状态](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus)。

### 获取 Management Agent 的状态
<a name="Oracle.Options.OEMAgent.DBTasks.GetAgentStatus"></a>

要获取 Management Agent 的状态，请运行 Amazon RDS 过程 `rdsadmin.rdsadmin_oem_agent_tasks.get_status_oem_agent`。该过程相当于 `emctl status agent` 命令。

以下过程创建一个任务来获取管理代理的状态，并返回任务的 ID。

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.get_status_oem_agent() as TASK_ID from DUAL;
```

要显示任务的输出文件并查看结果，请参阅[查看正在执行的任务的状态](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus)。

### 重新启动 Management Agent
<a name="Oracle.Options.OEMAgent.DBTasks.RestartAgent"></a>

要重新启动 Management Agent，请运行 Amazon RDS 过程 `rdsadmin.rdsadmin_oem_agent_tasks.restart_oem_agent`。该过程相当于运行 `emctl stop agent` 和 `emctl start agent` 命令。

以下过程创建一个任务来重新启动管理代理并返回任务的 ID。

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.restart_oem_agent as TASK_ID from DUAL;    
```

要显示任务的输出文件并查看结果，请参阅[查看正在执行的任务的状态](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus)。

### 列出 Management Agent 监控的目标
<a name="Oracle.Options.OEMAgent.DBTasks.ListTargets"></a>

要列出 Management Agent 监控的目标，请运行 Amazon RDS 过程 `rdsadmin.rdsadmin_oem_agent_tasks.list_targets_oem_agent`。该过程相当于运行 `emctl config agent listtargets` 命令。

以下过程创建一个任务来列出管理代理监控的目标并返回任务的 ID。

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.list_targets_oem_agent as TASK_ID from DUAL;
```

要显示任务的输出文件并查看结果，请参阅[查看正在执行的任务的状态](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus)。

### 列出 Management Agent 监控的收集线程
<a name="Oracle.Options.OEMAgent.DBTasks.ListCollectionThreads"></a>

要列出管理代理监控的所有正在运行、就绪和计划的收集线程，请运行 Amazon RDS 过程 `rdsadmin.rdsadmin_oem_agent_tasks.list_clxn_threads_oem_agent`。该过程相当于 `emctl status agent scheduler` 命令。

以下过程创建一个任务来列出收集线程并返回任务的 ID。

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.list_clxn_threads_oem_agent() as TASK_ID from DUAL;          
```

要显示任务的输出文件并查看结果，请参阅[查看正在执行的任务的状态](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus)。

### 清除 Management Agent 的状态
<a name="Oracle.Options.OEMAgent.DBTasks.ClearState"></a>

要清除 Management Agent 的状态，请运行 Amazon RDS 过程 `rdsadmin.rdsadmin_oem_agent_tasks.clearstate_oem_agent`。该过程相当于运行 `emctl clearstate agent` 命令。

以下过程创建一个任务来清除管理代理的状态并返回任务的 ID。

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.clearstate_oem_agent() as TASK_ID from DUAL;
```

要显示任务的输出文件并查看结果，请参阅[查看正在执行的任务的状态](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus)。

### 让 Management Agent 上载其 OMS
<a name="Oracle.Options.OEMAgent.DBTasks.ForceUploadOMS"></a>

要让 Management Agent 上载与其关联的 Oracle Management Server (OMS)，请运行 Amazon RDS 过程 `rdsadmin.rdsadmin_oem_agent_tasks.upload_oem_agent`。该过程相当于运行 `emclt upload agent` 命令。

以下过程创建一个任务，使 Management Agent 上传其关联的 OMS 并返回任务的 ID。

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

要显示任务的输出文件并查看结果，请参阅[查看正在执行的任务的状态](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus)。

### 为 OMS 执行 ping 操作
<a name="Oracle.Options.OEMAgent.DBTasks.PingOMS"></a>

要为 Management Agent 的 OMS 执行 ping 操作，请运行 Amazon RDS 过程 `rdsadmin.rdsadmin_oem_agent_tasks.ping_oms_oem_agent`。该过程相当于运行 `emctl pingOMS` 命令。

以下过程创建一个任务来 Ping 管理代理的 OMS 并返回任务的 ID。

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.ping_oms_oem_agent() as TASK_ID from DUAL;
```

要显示任务的输出文件并查看结果，请参阅[查看正在执行的任务的状态](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus)。

### 查看正在执行的任务的状态
<a name="Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus"></a>

您可以查看 bdump 文件中的持续任务的状态。bdump 文件位于 `/rdsdbdata/log/trace` 目录下。每个 bdump 文件名称格式如下。

```
dbtask-task-id.log 
```

如果要监控任务，请将 `task-id` 替换为要监控的任务的 ID。

要查看 bdump 文件的内容，请运行 Amazon RDS 过程 `rdsadmin.rds_file_util.read_text_file`。以下查询返回 `dbtask-1546988886389-2444.log` bdump 文件的内容。

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1546988886389-2444.log'));
```

有关 Amazon RDS 过程 `rdsadmin.rds_file_util.read_text_file` 的更多信息，请参阅[读取数据库实例目录中的文件](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles)。