本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
針對 Amazon RDS Custom for Oracle 的資料庫問題進行故障診斷
RDS Custom 的共同的責任模型提供作業系統殼層層級存取權和資料庫管理員存取權。RDS Custom 會執行您的帳戶中的資源,不像是 Amazon RDS,它會執行系統帳戶中的資源。責任越大,存取權也越大。在下列區段中,您可以了解如何針對 Amazon RDS Custom 資料庫執行個體的問題進行疑難排解。
注意
本節說明如何對 RDS Custom for Oracle 進行故障診斷。若要對 RDS Custom for SQL Server 進行故障診斷,請參閱 疑難排解 Amazon SQL 伺服器RDS自訂的資料庫問題。
主題
檢視 RDS Custom 事件
RDS Custom 和 Amazon RDS 資料庫執行個體的檢視事件程序相同。如需詳細資訊,請參閱 查看 Amazon RDS 活動。
若要使用檢視 RDS 自訂事件通知 AWS CLI,請使用describe-events
命令。RDS Custom 引入數個新事件。事件類別與 Amazon RDS 的類別相同。如需事件清單,請參閱 Amazon RDS事件類別和事件訊息。
下列範例會擷取針對指定 RDS Custom 資料庫執行個體發生之事件的詳細資訊。
aws rds describe-events \ --source-identifier my-custom-instance \ --source-type db-instance
訂閱 RDS 自訂事件
RDS Custom 與 Amazon RDS 資料庫執行個體的訂閱事件程序相同。如需詳細資訊,請參閱 訂閱 Amazon RDS 事件通知。
若要使用 CLI 來訂閱 RDS Custom 事件通知,請使用 create-event-subscription
命令。包含下列必要參數:
-
--subscription-name
-
--sns-topic-arn
下列範例會在目前 AWS
帳戶中建立 RDS Custom 資料庫執行個體之備份和復原事件的訂閱。通知會傳送至 Amazon Simple Notification Service (Amazon SNS) 主題,由 --sns-topic-arn
指定。
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 問題 RDS-EVENT-0198
並且有訊息 Creation failed for custom engine
version
,其中包含失敗的詳細資訊。例如,事件會列印遺失的檔案。major-engine-version.cev_name
CEV 建立可能因為發生下列問題而失敗:
-
包含安裝檔案的 Amazon S3 儲存貯體與 CEV 位於不同的 AWS 區域。
-
當您第一次在中請求建立 CEV 時,RDS 自訂會建立用於存放 RDS 自訂資源 (例如 CEV 成品、 AWS CloudTrail 記錄和交易記錄) 的 S3 儲存貯體。 AWS 區域
如果 RDS Custom 無法建立 S3 儲存貯體,則 CEV 建立會失敗。呼叫者沒有如 步驟 5:將必要許可授予 IAM 使用者或角色 中所述的 S3 許可,或者 S3 儲存貯體的數量已達到限制。
-
呼叫者沒有從包含安裝媒體檔案的 S3 儲存貯體中取得檔案的許可。這些許可在 步驟 7:添加必要的IAM權限 中描述。
-
您的 IAM 政策具有
aws:SourceIp
條件。請務必遵循《AWS Identity and Access Management 使用者指南》中的 AWS 根據來源 IP 拒絕存取 AWS。另外,請確認呼叫者擁有 S3 許可,如 步驟 5:將必要許可授予 IAM 使用者或角色 中所述。 -
CEV 資訊清單中列出的安裝媒體檔案不在 S3 儲存貯體中。
-
RDS Custom 的安裝檔案的 SHA-256 檢查總和未知。
請確認提供的檔案的 SHA-256 檢查總和符合 Oracle 網站上的 SHA-256 檢查總和。如果檢查總和相符,請聯絡 AWS 支援
,並提供失敗的 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 主控台上 (在導覽窗格中選擇「事件」) 或使用describe-events
AWS CLI 命令來檢視 RDS 事件。預設持續時間為 60 分鐘。如果未傳回任何事件,請指定較長的持續時間,如以下範例所示。
aws rds describe-events --duration 360
目前,從 Amazon S3 匯入檔案以建立 CEV 的 MediaImport 服務並未與 AWS CloudTrail整合。因此,如果您開啟 Amazon RDS 的資料記錄功能 CloudTrail,則不會記錄對 MediaImport 服務 (例如CreateCustomDbEngineVersion
事件) 的呼叫。
不過,您可能會看到來自可存取 Amazon S3 儲存貯體的 API Gateway 的呼叫。這些呼叫來自CreateCustomDbEngineVersion
事件的 MediaImport服務。
修正 RDS Custom for Oracle 中不支援的組態
在共同的責任模型中,您必須負責修正讓 RDS Custom for Oracle 資料庫執行個體進入 unsupported-configuration
狀態的組態問題。如果問題出在 AWS 基礎結構上,您可以使用主控台或修正此問題。 AWS CLI 如果問題與作業系統或資料庫組態相關,您可以登入主機進行修正。
注意
本節說明如何修正 RDS Custom for Oracle 中不支援的組態。如需 RDS Custom for SQL Server 的相關資訊,請參閱 修正SQL伺服器RDS自訂中不受支援的組態。
您可以在下表中找到支援周邊所傳送通知和事件的說明,以及了解如何進行修正。這些通知和支援周邊可能會變更。如需支援周邊的相關背景,請參閱 RDS Custom 支援周邊。如需事件說明,請參閱 Amazon RDS事件類別和事件訊息。
事件 ID | 組態 | RDS 事件訊息 | 動作 |
---|---|---|---|
|
手動不受支援的 |
|
若要解決此問題,請建立 AWS Support 案例。 |
AWS 資源 (基礎架構) | |||
|
Amazon Elastic Block Store (Amazon EBS) 磁碟區 |
|
除了從 Amazon 機器映像 (AMI) 建立的根磁碟區外,RDS 自訂還會建立兩種類型的 EBS 磁碟區,並將它們與 EC2 執行個體建立關聯:
建立資料庫執行個體時,您指定的儲存組態會設定資料磁碟區。 支援周邊會監控下列項目:
使用下列 CLI 命令來比較 EBS 磁碟區詳細資料的磁碟區類型和適用於 Oracle 資料庫執行個體的 RDS 自訂詳細資訊:
|
|
Amazon Elastic Block Store (Amazon EBS) 磁碟區 |
|
除了從 Amazon 機器映像 (AMI) 建立的根磁碟區外,RDS 自訂還會建立兩種類型的 EBS 磁碟區,並將它們與 EC2 執行個體建立關聯:
建立資料庫執行個體時,您指定的儲存組態會設定資料磁碟區。 支援周邊會監控下列項目:
使用下列 CLI 命令來比較 EBS 磁碟區詳細資料的磁碟區類型和適用於 Oracle 資料庫執行個體的 RDS 自訂詳細資訊:
|
|
Amazon Elastic Block Store (Amazon EBS) 磁碟區 |
|
除了從 Amazon 機器映像 (AMI) 建立的根磁碟區外,RDS 自訂還會建立兩種類型的 EBS 磁碟區,並將它們與 EC2 執行個體建立關聯:
建立資料庫執行個體時,您指定的儲存組態會設定資料磁碟區。 支援周邊會監控下列項目:
使用下列 CLI 命令來比較 EBS 磁碟區詳細資料的磁碟區類型和適用於 Oracle 資料庫執行個體的 RDS 自訂詳細資訊:
|
|
Amazon EC2 執行個體狀態 |
|
若要檢查資料庫執行個體的狀態,請使用主控台或執行下列 AWS CLI 命令:
|
|
Amazon EC2 執行個體屬性 |
|
|
|
Amazon EC2 執行個體狀態 |
|
支援周邊會監控 EC2 執行個體狀態變更通知。EC2 執行個體必須永遠在執行中。 刪除資料庫執行個體
|
|
Amazon EC2 執行個體狀態 |
|
支援周邊會監控 EC2 執行個體狀態變更通知。EC2 執行個體必須永遠在執行中。 重新啟動資料庫執行個體
|
作業系統 | |||
|
RDS Custom 代理程式狀態 |
|
在 RDS Custom for Oracle 上,如果 RDS Custom 代理程式停止,則資料庫執行個體就會在支援周邊外面。代理程式會 CloudWatch 每隔 30 秒將 重新啟動 RDS 自訂代理程式
當 RDS 自訂代理程式再次執行時,指 |
|
AWS Systems Manager 代理程式 (SSM 代理程式) 狀態 |
|
SSM 代理程式必須始終在執行中。RDS Custom 代理程序必須負責確定 Systems Manager 代理程式在執行中。如果 SSM 代理程式已終止然後重新啟動,則 RDS 自訂代理程式會將指標發佈至 CloudWatch。RDS Custom 代理程式具有指標警示,設定為在每次重新啟動的前三分鐘觸發。支援範圍也會每隔 30 分鐘監視主機上 SSM 代理程式的處理序狀態。 如需詳細資訊,請參閱針對 SSM Agent 進行疑難排解。 |
|
AWS Systems Manager 代理程式 (SSM 代理程式) 狀態 |
|
如需詳細資訊,請參閱針對 SSM Agent 進行疑難排解。 |
|
作業系統時區 |
|
RDS 自動化偵測到主機上的時區已變更,而不使用選項群組。此主機層級變更可能會導致 RDS 自動化失敗,因此 EC2 執行個體會置於狀態。 修正時區設定
資料庫執行個體會在 30 分鐘內變成可用。若要避免 future 移出周邊,請透過選項群組修改您的時區。如需詳細資訊,請參閱 Oracle 時區。 |
|
|
|
支援周邊會監控某些作業系統使用者可以在方塊上執行特定命令。它會監控 當
若要調查 sudo 組態的變更
在支援範圍判斷 |
|
S3 儲存貯體存取 |
|
|
資料庫 | |||
|
資料庫封存延遲目標 |
|
支援範圍會監控 變更存檔重做日誌的延遲目標
資料庫執行個體會在 30 分鐘內變成可用。 |
|
Oracle Data Guard 角色 |
|
支援周邊每 15 秒會監視目前的資料庫角色,並在資料庫角色變更時傳送 CloudWatch 通知。Oracle Data Guard 將 Oracle 資料保全資料庫角色還原為支援的值
在支援周邊判斷支援資料庫角色之後,RDS Custom for Oracle 資料庫執行個體會在 15 秒內變成可用。 |
|
資料庫運作狀態 |
|
支援周邊會監控資料庫執行個體狀態。它也會監控前一小時和前一天發生的重新啟動次數。當執行個體處於仍然存在的狀態時,您會收到通知,但無法與其互動。 使支撐周邊評估您的執行個體狀態
資料庫執行個體重新啟動後,RDS Custom 代理程式會偵測到您的資料庫執行個體不再處於無回應狀態。然後,它會通知支援周邊重新評估您的資料庫執行個體狀態。 |
|
資料庫日誌模式 |
|
將資料庫執行個體記錄模式變更為
|
|
Oracle 本位目錄路徑 |
|
|
|
資料庫唯一名稱 |
|
變更資料庫執行個體的資料庫唯一名稱
RDS 自訂代理程式會自動重新啟動資料庫執行個體,並將記錄模式設定為 |
針對 RDS Custom for Oracle 升級進行疑難排解
您的 RDS Custom for Oracle 執行個體升級可能會失敗。接著,您可以找到在升級 RDS Custom DB 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
AWS CLI 命令或 PromoteReadReplica
API,在 RDS 自訂適用於 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
-
聯絡 AWS Support 並要求他們將您的資料庫執行個體移至
available
狀態。