

# 针对 Amazon RDS Custom for Oracle 排查数据库问题
<a name="custom-troubleshooting"></a>

RDS Custom 的责任共担模型提供了操作系统外壳级别的访问权限和数据库管理员访问权限。RDS Custom 会在您的账户中运行资源，与 Amazon RDS 不同，因为后者会在系统账户中运行资源。访问权限更多，责任也更大。在下面的各个部分，您可以了解如何排查 Amazon RDS Custom 数据库实例的问题。

**注意**  
本节介绍如何排查 RDS Custom for Oracle 的问题。有关排查 RDS Custom for Oracle 的问题，请参阅[针对 Amazon RDS Custom for SQL Server 排查数据库的问题](custom-troubleshooting-sqlserver.md)。

**Topics**
+ [查看 RDS Custom 事件](#custom-troubleshooting.support-perimeter.viewing-events)
+ [订阅 RDS Custom 事件](#custom-troubleshooting.support-perimeter.subscribing)
+ [排查数据库实例创建问题](#custom-troubleshooting.creation-issues)
+ [为 RDS Custom for Oracle 排除自定义引擎版本创建的故障](#custom-troubleshooting.cev)
+ [修复 RDS Custom for Oracle 中不支持的配置](#custom-troubleshooting.fix-unsupported)
+ [排查 RDS Custom for Oracle 的升级问题](#custom-troubleshooting-upgrade)
+ [排查 RDS Custom for Oracle 的副本提升问题](#custom-troubleshooting-promote)

## 查看 RDS Custom 事件
<a name="custom-troubleshooting.support-perimeter.viewing-events"></a>

对于 RDS Custom 和 Amazon RDS 数据库实例而言，查看事件的流程是相同的。有关更多信息，请参阅 [查看 Amazon RDS 事件](USER_ListEvents.md)。

要使用 AWS CLI 查看 RDS Custom 事件通知，请使用 `describe-events` 命令。RDS Custom 推出了几项新事件。事件类别与 Amazon RDS 的事件类别相同。有关事件列表，请参阅 [Amazon RDS 事件类别和事件消息](USER_Events.Messages.md)。

以下示例检索指定 RDS Custom 数据库实例发生的事件的详细信息。

```
1. aws rds describe-events \
2.     --source-identifier my-custom-instance \
3.     --source-type db-instance
```

## 订阅 RDS Custom 事件
<a name="custom-troubleshooting.support-perimeter.subscribing"></a>

对于 RDS Custom 和 Amazon RDS 数据库实例而言，订阅事件的流程是相同的。有关更多信息，请参阅 [订阅 Amazon RDS 事件通知](USER_Events.Subscribing.md)。

要使用 CLI 订阅 RDS Custom 事件通知，请使用 `create-event-subscription` 命令。包括以下必需参数：
+ `--subscription-name`
+ `--sns-topic-arn`

以下示例为当前的 AWS 账户中的 RDS Custom 数据库实例创建了备份和恢复事件的订阅。您也可以将通知发送到 `--sns-topic-arn` 指定的 Amazon Simple Notification Service (Amazon SNS) 主题。

```
1. aws rds create-event-subscription \
2.     --subscription-name my-instance-events \
3.     --source-type db-instance \
4.     --event-categories '["backup","recovery"]' \
5.     --sns-topic-arn arn:aws:sns:us-east-1:123456789012:interesting-events
```

## 排查数据库实例创建问题
<a name="custom-troubleshooting.creation-issues"></a>

如果您的环境配置不正确或缺少所需的权限，则无法创建或还原 RDS Custom for Oracle 数据库实例。当您尝试创建或还原数据库实例时，Amazon RDS 会验证您的环境，并在检测到任何问题时返回特定的错误消息。

解决所有问题后，请再次尝试创建或还原 RDS Custom for Oracle 数据库实例。

### 常见权限问题
<a name="custom-troubleshooting.creation-issues.permissions"></a>

当您创建或还原 RDS Custom for Oracle 实例时，Amazon RDS 会验证您的环境是否具有所需的权限。如果权限缺失或被拒绝，则操作将失败并显示特定的错误消息。


| 问题类型 | 错误消息 | Action | 
| --- | --- | --- | 
|  IAM 角色访问策略  |  由于资源不兼容，您无法创建数据库实例。主机环境验证因权限问题失败，具体如下：在资源 <resource> 上的 <permission> 权限验证失败。错误信息为：用户 <user> 无权在资源 <resource> 上执行 <permission> 操作，因为没有基于身份的策略允许 <permission> 操作。  |  确保列出的必需权限存在并在包含相应资源的访问策略中设置为 `Allow`。  | 
|  权限边界  |  由于资源不兼容，您无法创建数据库实例。主机环境验证因权限问题失败，具体如下：在资源 <resource> 上的 <permission> 权限验证失败。错误信息为：用户 <user> 无权在资源 <resource> 上执行 <permission> 操作，因为权限边界中存在明确拒绝。  |  确认附加到实例角色的权限边界没有限制列出的所需权限和资源。  | 
|  服务控制策略  |  由于资源不兼容，您无法创建数据库实例。主机环境验证因权限问题失败，具体如下：在资源 <resource> 上的 <permission> 权限验证失败。错误信息为：用户 <user> 无权在资源 <resource> 上执行 <permission> 操作，因为服务控制策略中存在明确拒绝。  |  请联系您的 AWS Organizations 管理员并确认附加到您账户的服务控制策略没有限制列出的所需权限和资源。  | 
|  资源控制策略  |  由于资源不兼容，您无法创建数据库实例。主机环境验证因权限问题失败，具体如下：在资源 <resource> 上的 <permission> 权限验证失败。错误信息为：用户 <user> 无权在资源 <resource> 上执行 <permission> 操作，因为资源控制策略中存在明确拒绝。  |  请联系您的 AWS Organizations 管理员并确认附加到您账户的资源控制策略没有限制列出的所需权限和资源。  | 
|  VPC 端点策略  |  由于资源不兼容，您无法创建数据库实例。主机环境验证因权限问题失败，具体如下：在资源 <resource> 上的 <permission> 权限验证失败。错误信息为：用户 <user> 无权在资源 <resource> 上执行 <permission> 操作，因为 VPC 端点策略中存在明确拒绝。  |  确保所需的 VPC 端点存在，且附加到这些端点的策略不会限制列出的所需权限和资源。  | 

### 联网问题
<a name="custom-troubleshooting.creation-issues.networking"></a>

除查看 [步骤 6：为 RDS Custom for Oracle 配置 VPC](custom-setup-orcl.md#custom-setup-orc.vpc-config) 外，还要确认以下各项配置是否正确，并且没有限制对所需 AWS 服务的访问：

**附加到 Amazon EC2 实例的安全组**  
确保安全组允许 RDS 自定义操作所需的所有入站和出站流量。

**附加到您的 VPC 的安全组**  
验证 VPC 安全组是否允许往返所需 AWS 服务的流量。

**VPC 端点**  
确认所有必需的 VPC 端点均已正确配置且可访问。

**网络访问控制列表**  
检查网络 ACL 是否未阻塞 RDS 自定义功能所需的流量。

## 为 RDS Custom for Oracle 排除自定义引擎版本创建的故障
<a name="custom-troubleshooting.cev"></a>

当 CEV 创建失败时，RDS Custom 将发布带有消息 `Creation failed for custom engine version major-engine-version.cev_name` 的 `RDS-EVENT-0198`，并包含有关失败的详细信息。例如，事件会打印丢失的文件。

CEV 创建可能会因为以下问题而失败：
+ 包含安装文件的 Amazon S3 存储桶与您的 CEV 不在同一个 AWS 区域。
+ 当您首次在 AWS 区域 中提出 CEV 创建请求时，RDS Custom 将创建 S3 存储桶，用于存储 RDS Custom 资源（例如 CEV 构件，AWS CloudTrail 日志和事务日志）。

  如果 RDS Custom 无法创建 S3 存储桶，则 CEV 创建将会失败。要么调用者没有 [步骤 5：为您的 IAM 用户或角色授予所需的权限](custom-setup-orcl.md#custom-setup-orcl.iam-user) 中所述的 S3 权限，要么 S3 存储桶的数量已达到限制。
+ 调用者没有权限以从包含安装媒体文件的 S3 存储桶中获取文件。[步骤 7：添加必要的 IAM 权限](custom-cev.preparing.md#custom-cev.preparing.iam) 中描述了这些权限。
+ 您的 IAM 策略有 `aws:SourceIp` 条件。请务必遵循《AWS Identity and Access Management 用户指南**》中 [AWS 根据源 IP 拒绝对 AWS 的访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_deny-ip.html)中的建议。还要确保调用方具有 [步骤 5：为您的 IAM 用户或角色授予所需的权限](custom-setup-orcl.md#custom-setup-orcl.iam-user) 中所述的 S3 权限。
+ CEV 清单中列出的安装媒体文件不在 S3 存储桶中。
+ RDS Custom 不知道安装文件的 SHA-256 校验和。

  确认所提供文件的 SHA-256 校验和与 Oracle 网站上的 SHA-256 校验和相符。如果校验和相符，请联系 [AWS Support](https://aws.amazon.com/premiumsupport) 并提供失败的 CEV 名称、文件名和校验和。
+ OPatch 版本与补丁文件不兼容。您可能会收到以下消息：`OPatch is lower than minimum required version. Check that the version meets the requirements for all patches, and try again`。要应用 Oracle 补丁，必须使用兼容的 OPatch 实用工具版本。您可以在补丁的自述文件中找到所需的 OPatch 实用工具版本。从 My Oracle Support 下载最新的 OPatch 实用工具，然后再次尝试创建 CEV。
+ CEV 清单中所指定补丁的顺序错误。

您可以在 RDS 控制台（在导航窗格中，选择 **Events**（事件））中或者使用 `describe-events` AWS CLI 命令查看 RDS 事件。默认持续时间为 60 分钟。如果没有返回任何事件，请指定更长的持续时间，如以下示例中所示。

```
aws rds describe-events --duration 360
```

目前，从 Amazon S3 导入文件以创建 CEV 的 MediaImport 服务没有与 AWS CloudTrail 整合。因此，如果您在 CloudTrail 中为 Amazon RDS 启用数据记录功能，对诸如 `CreateCustomDbEngineVersion` 事件等 MediaImport 服务的调用将不会记录。

但是，您可能会看到来自访问您 Amazon S3 存储桶的 API Gateway 的调用。这些调用来自 `CreateCustomDbEngineVersion` 事件的 MediaImport 服务。

## 修复 RDS Custom for Oracle 中不支持的配置
<a name="custom-troubleshooting.fix-unsupported"></a>

在责任共担模式中，您应负责修复导致 RDS Custom for Oracle 数据库实例进入 `unsupported-configuration` 状态的配置问题。如果问题与 AWS 基础设施有关，则可以使用控制台或 AWS CLI 修复该问题。如果问题与操作系统或数据库配置有关，则可以登录到主机进行修复。

**注意**  
本节介绍如何修复 RDS Custom for Oracle 中不支持的配置。有关 RDS Custom for SQL Server 的信息，请参阅[修复 RDS Custom for SQL Server 中不支持的配置](custom-troubleshooting-sqlserver.md#custom-troubleshooting-sqlserver.fix-unsupported)。

以下各表包含支持外围所发送的通知和事件以及如何修复这些问题的说明。这些通知和支持外围可能会更改。有关支持外围的背景，请参阅[RDS Custom 支持外围](custom-concept.md#custom-troubleshooting.support-perimeter)。有关事件描述，请参阅[Amazon RDS 事件类别和事件消息](USER_Events.Messages.md)。


| 事件 ID | 配置 | RDS 事件消息 | Action | 
| --- | --- | --- | --- | 
|  `SP-O0000`  |  手动不支持的配置  |  RDS Custom 数据库实例状态设置为 [不受支持的配置]，原因是 *原因*。。  |  要解决此问题，请创建 支持 案例。  | 

**AWS 资源（基础设施）**


| 事件 ID | 配置 | RDS 事件消息 | Action | 
| --- | --- | --- | --- | 
|  SP-O1001  |  Amazon Elastic Block Store（Amazon EBS）卷  |  以下 EBS 卷已添加到 EC2 实例 *ec2\$1id* 中：*volume\$1id*。要解决此问题，请将指定的卷与实例分离。  |  除了从 Amazon Machine Image（AMI）创建的根卷之外，RDS Custom 还创建了两种类型的 EBS 卷，并将它们与 EC2 实例关联。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) 当您创建数据库实例时，您指定的存储配置将配置数据卷。 支持外围将监控以下内容： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) 使用以下 CLI 命令比较 EBS 卷详细信息和 RDS Custom for Oracle DB 实例详细信息的卷类型。 <pre>aws rds describe-db-instances \ <br />    --db-instance-identifier db-instance-name | grep StorageType</pre>  | 
|  SP-O1002  |  Amazon Elastic Block Store（Amazon EBS）卷  |  EBS 卷 *volume\$1id* 已与 EC2 实例 [*ec2\$1id*] 相分离。您无法将原始卷与该实例进行分离。要解决此问题，请将 *volume\$1id* 重新附加到 *ec2\$1id*。  |  除了从 Amazon Machine Image（AMI）创建的根卷之外，RDS Custom 还创建了两种类型的 EBS 卷，并将它们与 EC2 实例关联。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) 当您创建数据库实例时，您指定的存储配置将配置数据卷。 支持外围将监控以下内容： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) 使用以下 CLI 命令比较 EBS 卷详细信息和 RDS Custom for Oracle DB 实例详细信息的卷类型。 <pre>aws rds describe-db-instances \ <br />    --db-instance-identifier db-instance-name | grep StorageType</pre>  | 
|  SP-O1003  |  Amazon Elastic Block Store（Amazon EBS）卷  |  对已附加到 EC2 实例 *ec2\$1id* 的源 EBS 卷 *volume\$1id* 进行了如下修改：大小从 [*X*] 更改为 [*Y*]，类型从 [*N*] 更改为 [*M*]，IOPS 从 [*J*] 更改为 [*K*]。要解决此问题，请恢复修改。  |  除了从 Amazon Machine Image（AMI）创建的根卷之外，RDS Custom 还创建了两种类型的 EBS 卷，并将它们与 EC2 实例关联。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) 当您创建数据库实例时，您指定的存储配置将配置数据卷。 支持外围将监控以下内容： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) 使用以下 CLI 命令比较 EBS 卷详细信息和 RDS Custom for Oracle DB 实例详细信息的卷类型。 <pre>aws rds describe-db-instances \ <br />    --db-instance-identifier db-instance-name | grep StorageType</pre>  | 
|  SP-O1004  |  Amazon EC2 实例状态  |  自动恢复使 EC2 实例 [*ec2\$1id*] 处于受损状态。要解决此问题，请参阅[实例恢复故障排除](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-recover.html#TroubleshootingInstanceRecovery)。  |  要检查数据库实例的状态，请使用控制台或运行以下 AWS CLI 命令： <pre>aws rds describe-db-instances \ <br />    --db-instance-identifier db-instance-name |grep DBInstanceStatus </pre>  | 
|  SP-O1005  |  Amazon EC2 实例属性  |  对 EC2 实例 [*ec2\$1id*] 进行了如下修改：属性 [*att1*] 从 [*val-old*] 更改为 [*val-new*]，属性 [*att2*] 从 [*val-old*] 更改为 [*val-new*]。要解决此问题，请恢复到原始值。  |  | 
|  SP-O1006  |  Amazon EC2 实例状态  |  EC2 实例 [*ec2\$1id*] 已终止或找不到。要解决问题，请删除 RDS Custom 数据库实例。  |  支持外围将监控 EC2 实例状态更改通知。EC2 实例必须始终运行。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-troubleshooting.html)  | 
|  SP-O1007  |  Amazon EC2 实例状态  |  EC2 实例 [*ec2\$1id*] 已停止。要解决问题，请启动该实例。  |  支持外围将监控 EC2 实例状态更改通知。EC2 实例必须始终运行。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-troubleshooting.html)  | 
|  SP-1008  |  Amazon SQS 权限  |  Permissions are missing for Amazon SQS. Check the permissions for the IAM instance profile, VPC endpoint policy, and dependent service connections, and then try again.  |   您可以通过确保与主机关联的 IAM 配置文件具有以下权限来解决此问题： <pre>"SQS:SendMessage"<br />"SQS:ReceiveMessage"<br />"SQS:DeleteMessage"<br />"SQS:GetQueueUrl"</pre>  | 
|  SP-1009  |  Amazon Simple Queue Service (Amazon SQS)  |  The SQS queue [%s] was deleted and couldn't be recovered. To resolve this issue, recreate the queue.  |  重新创建 Amazon SQS 队列。  | 

**操作系统**


| 事件 ID | 配置 | RDS 事件消息 | Action | 
| --- | --- | --- | --- | 
|  SP-O2001  |  RDS Custom 代理状态  |  RDS Custom 代理未在 EC2 实例 [*ec2\$1id*] 上运行。确保代理在 [*ec2\$1id*] 上运行。  |  在 RDS Custom for Oracle 上，如果 RDS Custom 代理停止，则数据库实例将超出支持外围。代理每 30 秒会向 Amazon CloudWatch 发布一次 `IamAlive` 指标。如果指标在 30 秒之后未能发布，则会触发告警。支持外围还会每隔 30 分钟监控主机上的 RDS Custom 代理进程状态。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) 当 RDS Custom 代理再次运行时，`IamAlive` 指标将发布到 Amazon CloudWatch，并且告警将切换到 `OK` 状态。此切换操作将通知支持外围代理正在运行。  | 
|  `SP-O2002`  |  AWS Systems Manager 代理（SSM 代理）状态  |  无法在 EC2 实例 [*ec2\$1id*] 上访问 Systems Manager 代理。请确保您已正确配置网络、代理和 IAM 权限。  |  SSM 代理必须始终运行。RDS Custom 代理负责确保 Systems Manager 代理正在运行。如果 SSM 代理终止并重新启动，RDS Custom 代理将向 CloudWatch 发布 `SSM_Agent_Restarted_Or_NotFound` 指标。RDS Custom 代理对 `do-not-delete-rds-custom-ssm-agent-restarted-or-notfound-ec2-id` 指标配置了一项告警，当过去每三分钟内出现一次重新启动时，即会触发该告警。支持外围还会每隔 30 分钟监控主机上 SSM 代理的进程状态。 有关更多信息，请参阅 [SSM 代理故障排除](https://docs.aws.amazon.com/systems-manager/latest/userguide/troubleshooting-ssm-agent.html)。  | 
|  `SP-O2003`  |  AWS Systems Manager 代理（SSM 代理）状态  |  EC2 实例 [*ec2\$1id*] 上的 Systems Manager 代理多次崩溃。有关更多信息，请参阅 SSM 代理故障排除文档。  |  有关更多信息，请参阅 [SSM 代理故障排除](https://docs.aws.amazon.com/systems-manager/latest/userguide/troubleshooting-ssm-agent.html)。  | 
|  SP-O2004  |  操作系统时区  |  EC2 实例 [*ec2\$1id*] 上的时区已更改。要解决此问题，请将时区恢复为之前的 [*previous-time-zone*] 设置。然后使用 RDS 选项组更改时区。  |  RDS 自动化检测到在未使用选项组的情况下更改了主机上的时区。这种主机级别的更改可能会导致 RDS 自动化失败，因此 EC2 实例处于 `unsupported-configuration` 状态。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) 数据库实例将在 30 分钟内可用。为了防止将来移出外围，请通过选项组修改您的时区。有关更多信息，请参阅 [Oracle 时区](custom-managing.timezone.md)。  | 
|  SP-O2005  |  `sudo` 配置  |  EC2 实例 [*ec2\$1id*] 上的 sudo 配置缺少必要的权限。要解决此问题，请恢复最近对 sudo 配置进行的更改。  |  支持外围将验证是否允许某些操作系统用户在主机上运行某些命令。它监视 `sudo` 配置并将其与受支持的状态进行比较。 当 `sudo` 配置不受支持时，RDS Custom 会尝试覆盖它们并返回到之前的受支持状态。如果尝试成功，RDS Custom 会发送以下通知： RDS Custom 成功覆盖了您的配置。 如果覆盖失败，您的数据库实例将仍处于不受支持的配置状态。要解决此问题，要么恢复 `sudoers.d/` 文件中的更改，要么修复权限。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) 在支持外围确定 `sudo` 配置受支持时，RDS Custom for Oracle 数据库实例会在 30 分钟内变为可用状态。  | 
|  SP-O2006  |  S3 存储桶可访问性  |  RDS Custom 自动化功能无法从 EC2 实例 [*ec2\$1id*] 上的 S3 存储桶下载文件。检查网络配置，并确保该实例允许与 S3 建立双向连接。  |  | 
|  SP-2007  |  高可用性软件解决方案版本  |  The HA solution of your instance differs from the expected version. 要解决此问题，请创建 AWS 支持 案例。  |  创建 AWS 支持 案例。  | 

**数据库**


| 事件 ID | 配置 | RDS 事件消息 | Action | 
| --- | --- | --- | --- | 
|  SP-O3001  |  数据库存档滞后目标  |  EC2 实例 [*ec2\$1id*] 上的 ARCHIVE\$1LAG\$1TARGET 参数超出建议的范围 *value\$1range*。要解决此问题，请将参数设置为 value\$1range 范围内的值。  |  支持外围监控 `ARCHIVE_LAG_TARGET` 数据库参数，以验证数据库实例的最新可还原时间是否在合理的范围内。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) 数据库实例将在 30 分钟内可用。  | 
|  SP-O3002  |  Oracle Data Guard 角色  |  EC2 实例 [*ec2\$1id*] 上的 Oracle Data Guard 不支持数据库角色 [*role\$1name*]。要解决此问题，请将 DATABASE\$1ROLE 参数设置为 PRIMARY 或 PHYSICAL STANDBY。  |  支持外围每 15 秒监控当前数据库角色，并在数据库角色发生更改时发送 CloudWatch 通知。Oracle Data Guard `DATABASE_ROLE` 参数必须为 `PRIMARY` 或 `PHYSICAL STANDBY`。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) 在支持外围确定数据库角色受支持之后，RDS Custom for Oracle 数据库实例将在 15 秒内变为可用状态。  | 
|  SP-O3003  |  数据库运行状况  |  Oracle 数据库的 SMON 进程处于僵尸状态。要解决此问题，请手动恢复 EC2 实例 [*ec2\$1id*] 上的数据库，打开数据库，然后立即对其进行备份。如需更多帮助，请联系。支持  |  支持外围会监控数据库实例状态。其还将监控前一小时和一天中发生的重启次数。当实例处于仍然存在的状态时，您会收到通知，但您无法与其交互。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) 重启数据库实例后，RDS Custom 代理会检测到数据库实例不再处于无响应状态。然后，它会通知支持外围以重新评估数据库实例状态。  | 
|  SP-O3004  |  数据库日志模式  |  EC2 实例 [*ec2\$1id*] 上的数据库日志模式已更改为 [*value\$1b*]。要解决此问题，请将日志模式设置为 [*value\$1a*]。  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) RDS Custom 代理将自动重启数据库实例并将日志模式设置为 `ARCHIVELOG`。数据库实例将在 30 分钟内可用。  | 
|  SP-O3005  |  Oracle 主路径  |  EC2 实例 [*ec2\$1id*] 上的 Oracle 主目录已更改为 *new\$1path*。要解决此问题，请将设置恢复为 *old\$1path*。  |  | 
|  SP-O3006  |  数据库唯一名称  |  EC2 实例 [*ec2\$1id*] 上的数据库唯一名称已更改为 *new\$1value*。要解决此问题，请将名称恢复为 *old\$1value*。  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/custom-troubleshooting.html) RDS Custom 代理将自动重启数据库实例并将日志模式设置为 `ARCHIVELOG`。数据库实例将在 30 分钟内可用。  | 

## 排查 RDS Custom for Oracle 的升级问题
<a name="custom-troubleshooting-upgrade"></a>

RDS Custom for Oracle 实例的升级可能会失败。接下来，您可以找到一些技术，以在升级 RDS Custom for Oracle 数据库实例时使用：
+ 检查数据库实例上 `/tmp` 目录中的升级输出日志文件。日志的名称取决于数据库引擎版本。例如，您可能会看到包含字符串 `catupgrd` 或 `catup` 的日志。
+ 检查位于 `/rdsdbdata/log/trace` 目录中的 `alert.log` 文件。
+ 请在 `root` 目录中运行以下 `grep` 命令来跟踪升级操作系统的过程。此命令显示日志文件的写入位置并确定升级过程的状态。

  ```
  ps -aux | grep upg
  ```

  下面显示了示例输出。

  ```
  root     18884  0.0  0.0 235428  8172 ?        S<   17:03   0:00 /usr/bin/sudo -u rdsdb /rdsdbbin/scripts/oracle-control ORCL op_apply_upgrade_sh RDS-UPGRADE/2.upgrade.sh
  rdsdb    18886  0.0  0.0 153968 12164 ?        S<   17:03   0:00 /usr/bin/perl -T -w /rdsdbbin/scripts/oracle-control ORCL op_apply_upgrade_sh RDS-UPGRADE/2.upgrade.sh
  rdsdb    18887  0.0  0.0 113196  3032 ?        S<   17:03   0:00 /bin/sh /rdsdbbin/oracle/rdbms/admin/RDS-UPGRADE/2.upgrade.sh
  rdsdb    18900  0.0  0.0 113196  1812 ?        S<   17:03   0:00 /bin/sh /rdsdbbin/oracle/rdbms/admin/RDS-UPGRADE/2.upgrade.sh
  rdsdb    18901  0.1  0.0 167652 20620 ?        S<   17:03   0:07 /rdsdbbin/oracle/perl/bin/perl catctl.pl -n 4 -d /rdsdbbin/oracle/rdbms/admin -l /tmp catupgrd.sql
  root     29944  0.0  0.0 112724  2316 pts/0    S+   18:43   0:00 grep --color=auto upg
  ```
+ 请运行以下 SQL 查询以验证组件的当前状态，以便查找数据库版本和数据库实例上安装的选项。

  ```
  SET LINESIZE 180
  COLUMN COMP_ID FORMAT A15
  COLUMN COMP_NAME FORMAT A40 TRUNC
  COLUMN STATUS FORMAT A15 TRUNC
  SELECT COMP_ID, COMP_NAME, VERSION, STATUS FROM DBA_REGISTRY ORDER BY 1;
  ```

  输出与以下内容类似。

  ```
  COMP_NAME                                STATUS               PROCEDURE
  ---------------------------------------- -------------------- --------------------------------------------------
  Oracle Database Catalog Views            VALID                DBMS_REGISTRY_SYS.VALIDATE_CATALOG
  Oracle Database Packages and Types       VALID                DBMS_REGISTRY_SYS.VALIDATE_CATPROC
  Oracle Text                              VALID                VALIDATE_CONTEXT
  Oracle XML Database                      VALID                DBMS_REGXDB.VALIDATEXDB
  
  4 rows selected.
  ```
+ 请运行以下 SQL 查询以检查是否存在可能干扰升级过程的无效对象。

  ```
  SET PAGES 1000 LINES 2000
  COL OBJECT FOR A40
  SELECT SUBSTR(OWNER,1,12) OWNER,
         SUBSTR(OBJECT_NAME,1,30) OBJECT,
         SUBSTR(OBJECT_TYPE,1,30) TYPE, STATUS,
         CREATED
  FROM   DBA_OBJECTS 
  WHERE  STATUS <>'VALID' 
  AND    OWNER IN ('SYS','SYSTEM','RDSADMIN','XDB');
  ```

## 排查 RDS Custom for Oracle 的副本提升问题
<a name="custom-troubleshooting-promote"></a>

您可以使用控制台、`promote-read-replica` AWS CLI 命令或 `PromoteReadReplica` API 在 RDS Custom for Oracle 中提升托管式 Oracle 副本。如果您删除了主数据库实例，并且所有副本都运行正常，则 RDS Custom for Oracle 会自动将您的托管式副本提升为独立实例。如果副本已暂停自动化或超出支持范围，则必须先修复副本，RDS Custom 才能自动对其进行提升。有关更多信息，请参阅 [将 RDS Custom for Oracle 副本提升为独立的数据库实例](custom-rr.promoting.md)。

在以下情况下，副本提升工作流可能会卡住：
+ 主数据库实例处于 `STORAGE_FULL` 状态。
+ 主数据库无法对其所有的在线重做日志归档。
+ Oracle 副本和主数据库上的存档重做日志文件之间存在差距。

**响应卡住的工作流**

1. 同步 Oracle 副本数据库实例上的重做日志差距。

1. 强制将只读副本提升为最新应用的重做日志。在 SQL\$1Plus 中运行以下命令：

   ```
   ALTER DATABASE ACTIVATE STANDBY DATABASE;
   SHUTDOWN IMMEDIATE
   STARTUP
   ```

1. 联系 支持 并要求他们将您的数据库实例移到 `available` 状态。