診斷適用於 Oracle 資料庫執行個體RDS的 問題 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

診斷適用於 Oracle 資料庫執行個體RDS的 問題

Oracle 資料庫包含可用來調查資料庫問題的故障性基礎架構。在 Oracle 術語中,problem (問題) 是嚴重錯誤,例如程式碼錯誤或資料損毀。Incident (事件) 則是發生問題。如果同樣的錯誤發生三次,則基礎結構會顯示這個問題的三個事件。如需詳細資訊,請參閱 Oracle 資料庫文件中的診斷和解決問題

Automatic Diagnostic Repository Command Interpreter (ADRCI) 公用程式是您用來管理診斷資料的 Oracle 命令列工具。例如,您可以使用這個工具來調查問題,並封裝診斷資料。incident package (事件套件) 包含事件或參考特定問題之所有事件的診斷資料。您可以將事件套件 (實作為 .zip 檔案) 上傳至 Oracle 支援。

為了提供受管服務體驗,Amazon RDS不提供對 的 Shell 存取ADRCI。若要為RDS適用於 Oracle 資料庫執行個體的 執行診斷任務,請使用 Amazon RDS套件 rdsadmin.rdsadmin_adrci_util

透過使用 rdsadmin_adrci_util 中的函數,您可以列出並封裝問題和事件,也可以顯示追蹤檔案。所有函數都會傳回工作 ID。此 ID 構成日誌檔案名稱的一部分,其中包含ADRCI輸出,如 所示dbtask-task_id.log。日誌檔案位於 BDUMP目錄中。您可以按照中所述的程序下載日誌檔案下載資料庫日誌檔案

診斷程序的常見參數

若要執行診斷任務,請使用 Amazon RDS套件 中的 函數rdsadmin.rdsadmin_adrci_util。以下即為該套件的常見參數。

參數名稱 資料類型 有效值 預設 必要 描述

incident_id

數字

有效的事件 ID 或 null

Null

如果值為 null,則函數會顯示所有事件。如果值不是 null 且代表有效的事件 ID,則函數會顯示指定的事件。

problem_id

數字

有效的問題 ID 或 null

Null

如果該值為 null,該函數會顯示所有問題。如果值不為 null 且代表有效的問題 ID,則函數會顯示指定的問題。

last

數字

大於 0 或 null 的有效整數

Null

如果該值為空,則該函數最多顯示 50 個項目。如果該值不為 null,函數會顯示指定的數字。

列出事件

若要列出 Oracle 的診斷事件,請使用 Amazon RDS函數 rdsadmin.rdsadmin_adrci_util.list_adrci_incidents。您可以在基本或詳細模式中列出事件。依預設,此函數會列出最近 50 個事件。

此函數使用下列一般參數:

  • incident_id

  • problem_id

  • last

如果您指定 incident_idproblem_id,則 incident_id 會覆寫 problem_id。如需詳細資訊,請參閱診斷程序的常見參數

此函數使用以下附加參數。

參數名稱 資料類型 有效值 預設 必要 描述

detail

布林值

TRUEFALSE *

FALSE

如果 TRUE,該函數會以詳細模式列出事件。如果 FALSE,此函數會以基本模式列出事件。

如要列出所有事件,請查詢不含任何引數的 rdsadmin.rdsadmin_adrci_util.list_adrci_incidents 函數。此查詢會傳回任務 ID。

SQL> SELECT rdsadmin.rdsadmin_adrci_util.list_adrci_incidents AS task_id FROM DUAL; TASK_ID ------------------ 1590786706158-3126

或呼叫 rdsadmin.rdsadmin_adrci_util.list_adrci_incidents函數,而沒有任何引數,並將輸出儲存在SQL用戶端變數中。您可以在其他陳述式中使用變數。

SQL> VAR task_id VARCHAR2(80); SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_incidents; PL/SQL procedure successfully completed.

若要讀取日誌檔案,請呼叫 Amazon RDS 程序 rdsadmin.rds_file_util.read_text_file。提供任務 ID 做為檔案名稱的一部分。下列輸出顯示三個事件:53523、53522 和 53521。

SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log')); TEXT ------------------------------------------------------------------------------------------------------------------------- 2020-05-29 21:11:46.193 UTC [INFO ] Listing ADRCI incidents. 2020-05-29 21:11:46.256 UTC [INFO ] ADR Home = /rdsdbdata/log/diag/rdbms/orcl_a/ORCL: ************************************************************************* INCIDENT_ID PROBLEM_KEY CREATE_TIME ----------- ----------------------------------------------------------- ---------------------------------------- 53523 ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_003 2020-05-29 20:15:20.928000 +00:00 53522 ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_002 2020-05-29 20:15:15.247000 +00:00 53521 ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_001 2020-05-29 20:15:06.047000 +00:00 3 rows fetched 2020-05-29 21:11:46.256 UTC [INFO ] The ADRCI incidents were successfully listed. 2020-05-29 21:11:46.256 UTC [INFO ] The task finished successfully. 14 rows selected.

若要列出特定事件,請使用 incident_id 參數指定其 ID。在下列範例中,您只查詢事件 53523 的日誌檔案。

SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_incidents(incident_id=>53523); PL/SQL procedure successfully completed. SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log')); TEXT ------------------------------------------------------------------------------------------------------------------ 2020-05-29 21:15:25.358 UTC [INFO ] Listing ADRCI incidents. 2020-05-29 21:15:25.426 UTC [INFO ] ADR Home = /rdsdbdata/log/diag/rdbms/orcl_a/ORCL: ************************************************************************* INCIDENT_ID PROBLEM_KEY CREATE_TIME -------------------- ----------------------------------------------------------- --------------------------------- 53523 ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_003 2020-05-29 20:15:20.928000 +00:00 1 rows fetched 2020-05-29 21:15:25.427 UTC [INFO ] The ADRCI incidents were successfully listed. 2020-05-29 21:15:25.427 UTC [INFO ] The task finished successfully. 12 rows selected.

列出問題

若要列出 Oracle 的診斷問題,請使用 Amazon RDS函數 rdsadmin.rdsadmin_adrci_util.list_adrci_problems

依預設,該函數會列出 50 個最近的問題。

此函數使用一般參數problem_idlast。如需詳細資訊,請參閱診斷程序的常見參數

若要取得所有問題的任務 ID,請呼叫 rdsadmin.rdsadmin_adrci_util.list_adrci_problems函數而不使用任何引數,並將輸出儲存在SQL用戶端變數中。

SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_problems; PL/SQL procedure successfully completed.

若要讀取日誌檔案,請呼叫 rdsadmin.rds_file_util.read_text_file 函數,並提供任務 ID 做為檔案名稱的一部分。在下列輸出中,日誌檔案會顯示三個問題:1、2 和 3。

SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log')); TEXT ---------------------------------------------------------------------------------------------------------------------- 2020-05-29 21:18:50.764 UTC [INFO ] Listing ADRCI problems. 2020-05-29 21:18:50.829 UTC [INFO ] ADR Home = /rdsdbdata/log/diag/rdbms/orcl_a/ORCL: ************************************************************************* PROBLEM_ID PROBLEM_KEY LAST_INCIDENT LASTINC_TIME ---------- ----------------------------------------------------------- ------------- --------------------------------- 2 ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_003 53523 2020-05-29 20:15:20.928000 +00:00 3 ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_002 53522 2020-05-29 20:15:15.247000 +00:00 1 ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_001 53521 2020-05-29 20:15:06.047000 +00:00 3 rows fetched 2020-05-29 21:18:50.829 UTC [INFO ] The ADRCI problems were successfully listed. 2020-05-29 21:18:50.829 UTC [INFO ] The task finished successfully. 14 rows selected.

在下列範例中,您只列出問題 3。

SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_problems(problem_id=>3); PL/SQL procedure successfully completed.

若要讀取問題 3 的日誌檔案,請呼叫 rdsadmin.rds_file_util.read_text_file。提供任務 ID 做為檔案名稱的一部分。

SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log')); TEXT ------------------------------------------------------------------------- 2020-05-29 21:19:42.533 UTC [INFO ] Listing ADRCI problems. 2020-05-29 21:19:42.599 UTC [INFO ] ADR Home = /rdsdbdata/log/diag/rdbms/orcl_a/ORCL: ************************************************************************* PROBLEM_ID PROBLEM_KEY LAST_INCIDENT LASTINC_TIME ---------- ----------------------------------------------------------- ------------- --------------------------------- 3 ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_002 53522 2020-05-29 20:15:15.247000 +00:00 1 rows fetched 2020-05-29 21:19:42.599 UTC [INFO ] The ADRCI problems were successfully listed. 2020-05-29 21:19:42.599 UTC [INFO ] The task finished successfully. 12 rows selected.

建立事件套件

您可以使用 Amazon RDS函數 建立事件套件rdsadmin.rdsadmin_adrci_util.create_adrci_package。該輸出是一個您可以提供給 Oracle 支援的 .zip 檔案。

此函數使用下列一般參數:

  • problem_id

  • incident_id

請務必指定上述其中一個參數。如果您同時指定兩個參數,則 incident_id 會覆寫 problem_id。如需詳細資訊,請參閱診斷程序的常見參數

若要為特定事件建立套件,請使用 rdsadmin.rdsadmin_adrci_util.create_adrci_package incident_id 參數呼叫 Amazon RDS函數。下列範例會為事件 53523 建立套件。

SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.create_adrci_package(incident_id=>53523); PL/SQL procedure successfully completed.

若要讀取日誌檔案,請呼叫 rdsadmin.rds_file_util.read_text_file。您可以提供任務 ID 做為檔案名稱的一部分。該輸出會顯示您產生的事件套件 ORA700EVE_20200529212043_COM_1.zip

SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log')); TEXT -------------------------------------------------------------------------------------------------------------------------------------- 2020-05-29 21:20:43.031 UTC [INFO ] The ADRCI package is being created. 2020-05-29 21:20:47.641 UTC [INFO ] Generated package 1 in file /rdsdbdata/log/trace/ORA700EVE_20200529212043_COM_1.zip, mode complete 2020-05-29 21:20:47.642 UTC [INFO ] The ADRCI package was successfully created. 2020-05-29 21:20:47.642 UTC [INFO ] The task finished successfully.

若要封裝特定問題的診斷資料,請使用 problem_id 參數指定其 ID。在下列範例中,您只封裝問題 3 的資料。

SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.create_adrci_package(problem_id=>3); PL/SQL procedure successfully completed.

若要讀取任務輸出,請呼叫 rdsadmin.rds_file_util.read_text_file,提供任務 ID 做為檔案名稱的一部分。該輸出會顯示您產生的事件套件 ORA700EVE_20200529212111_COM_1.zip

SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log')); TEXT ------------------------------------------------------------------------------------------------------------------------------------------------------------ 2020-05-29 21:21:11.050 UTC [INFO ] The ADRCI package is being created. 2020-05-29 21:21:15.646 UTC [INFO ] Generated package 2 in file /rdsdbdata/log/trace/ORA700EVE_20200529212111_COM_1.zip, mode complete 2020-05-29 21:21:15.646 UTC [INFO ] The ADRCI package was successfully created. 2020-05-29 21:21:15.646 UTC [INFO ] The task finished successfully.

您也可以下載日誌檔案。如需詳細資訊,請參閱下載資料庫日誌檔案

顯示追蹤檔案

您可以使用 Amazon RDS函數rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile,在追蹤目錄下列出追蹤檔案,並在目前ADR首頁下列出所有事件目錄。您也可以顯示追蹤檔案和事件追蹤檔案的內容。

此函數使用下列參數。

參數名稱 資料類型 有效值 預設 必要 描述

filename

varchar2

有效的追蹤檔案名稱

Null

如果值為 null,函數會顯示所有追蹤檔案。如果它不是 null,該函數顯示指定的檔案。

若要顯示追蹤檔案,請呼叫 Amazon RDS函數 rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile

SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile; PL/SQL procedure successfully completed.

若要列出追蹤檔案名稱,請呼叫 Amazon RDS 程序 rdsadmin.rds_file_util.read_text_file,並提供任務 ID 作為檔案名稱的一部分。

SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log')) WHERE TEXT LIKE '%/alert_%'; TEXT --------------------------------------------------------------- diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-28 diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-27 diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-26 diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-25 diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-24 diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-23 diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-22 diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-21 diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log 9 rows selected.

在下列範例中,您會為 產生輸出alert_ORCL.log

SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile('diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log'); PL/SQL procedure successfully completed.

若要讀取日誌檔案,請呼叫 rdsadmin.rds_file_util.read_text_file。提供任務 ID 做為檔案名稱的一部分。輸出顯示 alert_ORCL.log 的前 10 行。

SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log')) WHERE ROWNUM <= 10; TEXT ----------------------------------------------------------------------------------------- 2020-05-29 21:24:02.083 UTC [INFO ] The trace files are being displayed. 2020-05-29 21:24:02.128 UTC [INFO ] Thu May 28 23:59:10 2020 Thread 1 advanced to log sequence 2048 (LGWR switch) Current log# 3 seq# 2048 mem# 0: /rdsdbdata/db/ORCL_A/onlinelog/o1_mf_3_hbl2p8xs_.log Thu May 28 23:59:10 2020 Archived Log entry 2037 added for thread 1 sequence 2047 ID 0x5d62ce43 dest 1: Fri May 29 00:04:10 2020 Thread 1 advanced to log sequence 2049 (LGWR switch) Current log# 4 seq# 2049 mem# 0: /rdsdbdata/db/ORCL_A/onlinelog/o1_mf_4_hbl2qgmh_.log Fri May 29 00:04:10 2020 10 rows selected.

您也可以下載日誌檔案。如需詳細資訊,請參閱下載資料庫日誌檔案