针对 Amazon RDS Custom for Oracle 排查数据库问题
RDS Custom 的责任共担模型提供了操作系统外壳级别的访问权限和数据库管理员访问权限。RDS Custom 会在您的账户中运行资源,与 Amazon RDS 不同,因为后者会在系统账户中运行资源。访问权限更多,责任也更大。在下面的各个部分中,您可以了解如何排查 Amazon RDS Custom 数据库实例的问题。
注意
本节介绍如何排查 RDS Custom for Oracle 的问题。有关排查 RDS Custom for Oracle 的问题,请参阅针对 Amazon RDS Custom for SQL Server 排查数据库的问题。
主题
查看 RDS Custom 事件
对于 RDS Custom 和 Amazon RDS 数据库实例而言,查看事件的流程是相同的。有关更多信息,请参阅 查看 Amazon RDS 事件。
要使用 Amazon CLI 查看 RDS Custom 事件通知,请使用 describe-events
命令。RDS Custom 推出了几项新事件。事件类别与 Amazon RDS 的事件类别相同。有关事件列表,请参阅 的 Amazon RDS 事件类别和事件消息。
以下示例检索指定 RDS Custom 数据库实例发生的事件的详细信息。
aws rds describe-events \ --source-identifier my-custom-instance \ --source-type db-instance
订阅 RDS Custom 事件
对于 RDS Custom 和 Amazon RDS 数据库实例而言,订阅事件的流程是相同的。有关更多信息,请参阅 订阅 Amazon RDS 事件通知。
要使用 CLI 订阅 RDS Custom 事件通知,请使用 create-event-subscription
命令。包括以下必需参数:
-
--subscription-name
-
--sns-topic-arn
以下示例为当前的 Amazon 账户中的 RDS Custom 数据库实例创建了备份和恢复事件的订阅。您也可以将通知发送到 --sns-topic-arn
指定的 Amazon Simple Notification Service (Amazon SNS) 主题。
aws rds create-event-subscription \ --subscription-name my-instance-events \ --source-type db-instance \ --event-categories '["backup","recovery"]' \ --sns-topic-arn arn:aws:sns:us-east-1:123456789012:interesting-events
为 RDS Custom for Oracle 排除自定义引擎版本创建的故障
当 CEV 创建失败时,RDS Custom 将发布带有消息 Creation failed for custom engine
version
的 major-engine-version.cev_name
RDS-EVENT-0198
,并包含有关失败的详细信息。例如,事件会打印丢失的文件。
CEV 创建可能会因为以下问题而失败:
-
包含安装文件的 Amazon S3 存储桶与您的 CEV 不在同一个 Amazon 区域。
-
当您首次在 Amazon Web Services 区域 中提出 CEV 创建请求时,RDS Custom 将创建 S3 存储桶,用于存储 RDS Custom 资源(例如 CEV 构件,Amazon CloudTrail 日志和事务日志)。
如果 RDS Custom 无法创建 S3 存储桶,则 CEV 创建将会失败。要么调用者没有 步骤 5:为您的 IAM 用户或角色授予所需的权限 中所述的 S3 权限,要么 S3 存储桶的数量已达到限制。
-
调用者没有权限以从包含安装媒体文件的 S3 存储桶中获取文件。步骤 7:添加必要的 IAM 权限 中描述了这些权限。
-
您的 IAM 策略有
aws:SourceIp
条件。请务必遵循《Amazon Identity and Access Management 用户指南》中 Amazon 根据源 IP 拒绝对 Amazon 的访问中的建议。还要确保调用方具有 步骤 5:为您的 IAM 用户或角色授予所需的权限 中所述的 S3 权限。 -
CEV 清单中列出的安装媒体文件不在 S3 存储桶中。
-
RDS Custom 不知道安装文件的 SHA-256 校验和。
确认所提供文件的 SHA-256 校验和与 Oracle 网站上的 SHA-256 校验和相符。如果校验和相符,请联系 Amazon Support
并提供失败的 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
Amazon CLI 命令查看 RDS 事件。默认持续时间为 60 分钟。如果没有返回任何事件,请指定更长的持续时间,如以下示例中所示。
aws rds describe-events --duration 360
目前,从 Amazon S3 导入文件以创建 CEV 的 MediaImport 服务没有与 Amazon CloudTrail 整合。因此,如果您在 CloudTrail 中为 Amazon RDS 启用数据记录功能,对诸如 CreateCustomDbEngineVersion
事件等 MediaImport 服务的调用将不会记录。
但是,您可能会看到来自访问您 Amazon S3 存储桶的 API Gateway 的调用。这些调用来自 CreateCustomDbEngineVersion
事件的 MediaImport 服务。
修复 RDS Custom for Oracle 中不支持的配置
在责任共担模式中,您应负责修复导致 RDS Custom for Oracle 数据库实例进入 unsupported-configuration
状态的配置问题。如果问题与 Amazon 基础设施有关,则您可以使用控制台或 Amazon CLI 修复该问题。如果问题与操作系统或数据库配置有关,则您可以登录到主机进行修复。
注意
本节介绍如何修复 RDS Custom for Oracle 中不支持的配置。有关 RDS Custom for SQL Server 的信息,请参阅修复 RDS Custom for SQL Server 中不支持的配置。
在下表中,您可以找到支持外围所发送的通知和事件以及如何修复这些问题的说明。这些通知和支持外围可能会更改。有关支持外围的背景,请参阅RDS Custom 支持外围。有关事件描述,请参阅 的 Amazon RDS 事件类别和事件消息。
事件 ID | 配置 | RDS 事件消息 | 操作 |
---|---|---|---|
|
手动不支持的配置 |
|
要解决此问题,请创建 Amazon Web Services Support 案例。 |
Amazon 资源(基础设施) | |||
|
Amazon Elastic Block Store (Amazon EBS) 卷 |
|
除了从 Amazon Machine Image(AMI)创建的根卷之外,RDS Custom 还创建了两种类型的 EBS 卷,并将它们与 EC2 实例关联。
当您创建数据库实例时,您指定的存储配置将配置数据卷。 支持外围将监控以下内容:
使用以下 CLI 命令比较 EBS 卷详细信息和 RDS Custom for Oracle DB 实例详细信息的卷类型。
|
|
Amazon Elastic Block Store (Amazon EBS) 卷 |
|
除了从 Amazon Machine Image(AMI)创建的根卷之外,RDS Custom 还创建了两种类型的 EBS 卷,并将它们与 EC2 实例关联。
当您创建数据库实例时,您指定的存储配置将配置数据卷。 支持外围将监控以下内容:
使用以下 CLI 命令比较 EBS 卷详细信息和 RDS Custom for Oracle DB 实例详细信息的卷类型。
|
|
Amazon Elastic Block Store (Amazon EBS) 卷 |
对已附加到 EC2 实例 |
除了从 Amazon Machine Image(AMI)创建的根卷之外,RDS Custom 还创建了两种类型的 EBS 卷,并将它们与 EC2 实例关联。
当您创建数据库实例时,您指定的存储配置将配置数据卷。 支持外围将监控以下内容:
使用以下 CLI 命令比较 EBS 卷详细信息和 RDS Custom for Oracle DB 实例详细信息的卷类型。
|
|
Amazon EC2 实例状态 |
|
要检查数据库实例的状态,请使用控制台或运行以下 Amazon CLI 命令:
|
|
Amazon EC2 实例属性 |
对 |
|
|
Amazon EC2 实例状态 |
|
支持外围将监控 EC2 实例状态变更通知。EC2 实例必须始终运行。 删除数据库实例
|
|
Amazon EC2 实例状态 |
|
支持外围将监控 EC2 实例状态变更通知。EC2 实例必须始终运行。 重新启动数据库实例
|
操作系统 | |||
|
RDS Custom 代理状态 |
|
在 RDS Custom for Oracle 上,如果 RDS Custom 代理停止,则数据库实例将超出支持外围。代理每 30 秒会向 Amazon CloudWatch 发布一次 重新启动 RDS Custom 代理
当 RDS Custom 代理再次运行时, |
|
Amazon Systems Manager 代理(SSM 代理)状态 |
|
SSM 代理必须始终运行。RDS Custom 代理负责确保 Systems Manager 代理正在运行。如果 SSM 代理终止并重新启动,RDS Custom 代理将向 CloudWatch 发布指标。RDS Custom 代理对指标设置了一项告警,当过去每三分钟内出现一次重新启动时,即会触发该告警。支持外围还会每隔 30 分钟监控主机上 SSM 代理的进程状态。 有关更多信息,请参阅 SSM 代理故障排除。 |
|
Amazon Systems Manager 代理(SSM 代理)状态 |
|
有关更多信息,请参阅 SSM 代理故障排除。 |
|
操作系统时区 |
|
RDS 自动化检测到在未使用选项组的情况下更改了主机上的时区。这种主机级别的更改可能会导致 RDS 自动化失败,因此 EC2 实例处于 修复时区设置
数据库实例将在 30 分钟内可用。为了防止将来移出外围,请通过选项组修改您的时区。有关更多信息,请参阅 Oracle 时区。 |
|
|
|
支持外围将监控是否允许某些操作系统用户在计算机上运行某些命令。它可以根据受支持的状态监控 当
调查对 sudo 配置进行的更改
在支持外围确定 |
|
S3 存储桶可访问性 |
|
|
数据库 | |||
|
数据库存档滞后目标 |
|
支持外围监控 更改已存档重做日志的延迟目标
数据库实例将在 30 分钟内可用。 |
|
Oracle Data Guard 角色 |
|
支持外围每 15 秒监控当前数据库角色,并在数据库角色发生更改时发送 CloudWatch 通知。Oracle Data Guard 将 Oracle Data Guard 数据库角色还原为受支持的值
在支持外围确定数据库角色受支持之后,RDS Custom for Oracle 数据库实例将在 15 秒内变为可用状态。 |
|
数据库运行状况 |
|
支持外围会监控数据库实例状态。其还将监控前一小时和一天中发生的重启次数。当实例处于仍然存在的状态时,您会收到通知,但您无法与其交互。 要设置支持边界,请评估您的实例状态
重启数据库实例后,RDS Custom 代理会检测到数据库实例不再处于无响应状态。然后,它会通知支持外围以重新评估数据库实例状态。 |
|
数据库日志模式 |
|
将数据库实例日志模式更改为
|
|
Oracle 主路径 |
|
|
|
数据库唯一名称 |
|
更改数据库实例的数据库唯一名称
RDS Custom 代理将自动重启数据库实例并将日志模式设置为 |
排查 RDS Custom for Oracle 的升级问题
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 的副本提升问题
您可以使用控制台、promote-read-replica
Amazon CLI 命令或 PromoteReadReplica
API 在 RDS Custom for Oracle 中提升托管式 Oracle 副本。如果您删除了主数据库实例,并且所有副本都运行正常,则 RDS Custom for Oracle 会自动将您的托管式副本提升为独立实例。如果副本已暂停自动化或超出支持范围,则必须先修复副本,RDS Custom 才能自动对其进行提升。有关更多信息,请参阅 RDS Custom for Oracle 的副本提升限制。
在以下情况下,副本提升工作流可能会卡住:
-
主数据库实例处于
STORAGE_FULL
状态。 -
主数据库无法对其所有的在线重做日志归档。
-
Oracle 副本和主数据库上的存档重做日志文件之间存在差距。
响应卡住的工作流
-
同步 Oracle 副本数据库实例上的重做日志差距。
-
强制将只读副本提升为最新应用的重做日志。在 SQL*Plus 中运行以下命令:
ALTER DATABASE ACTIVATE STANDBY DATABASE; SHUTDOWN IMMEDIATE STARTUP
-
联系 Amazon Web Services Support 并要求他们将您的数据库实例移到
available
状态。