

# 适用于 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)。