本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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-
。日誌檔案位於 BDUMP目錄中。您可以按照中所述的程序下載日誌檔案下載資料庫日誌檔案。task_id
.log
診斷程序的常見參數
若要執行診斷任務,請使用 Amazon RDS套件 中的 函數rdsadmin.rdsadmin_adrci_util
。以下即為該套件的常見參數。
參數名稱 | 資料類型 | 有效值 | 預設 | 必要 | 描述 |
---|---|---|---|---|---|
|
數字 |
有效的事件 ID 或 null |
Null |
否 |
如果值為 null,則函數會顯示所有事件。如果值不是 null 且代表有效的事件 ID,則函數會顯示指定的事件。 |
|
數字 |
有效的問題 ID 或 null |
Null |
否 |
如果該值為 null,該函數會顯示所有問題。如果值不為 null 且代表有效的問題 ID,則函數會顯示指定的問題。 |
|
數字 |
大於 0 或 null 的有效整數 |
Null |
否 |
如果該值為空,則該函數最多顯示 50 個項目。如果該值不為 null,函數會顯示指定的數字。 |
列出事件
若要列出 Oracle 的診斷事件,請使用 Amazon RDS函數 rdsadmin.rdsadmin_adrci_util.list_adrci_incidents
。您可以在基本或詳細模式中列出事件。依預設,此函數會列出最近 50 個事件。
此函數使用下列一般參數:
-
incident_id
-
problem_id
-
last
如果您指定 incident_id
和 problem_id
,則 incident_id
會覆寫 problem_id
。如需詳細資訊,請參閱診斷程序的常見參數。
此函數使用以下附加參數。
參數名稱 | 資料類型 | 有效值 | 預設 | 必要 | 描述 |
---|---|---|---|---|---|
|
布林值 |
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_id
和 last
。如需詳細資訊,請參閱診斷程序的常見參數。
若要取得所有問題的任務 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首頁下列出所有事件目錄。您也可以顯示追蹤檔案和事件追蹤檔案的內容。
此函數使用下列參數。
參數名稱 | 資料類型 | 有效值 | 預設 | 必要 | 描述 |
---|---|---|---|---|---|
|
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.
您也可以下載日誌檔案。如需詳細資訊,請參閱下載資料庫日誌檔案。