Amazon RDS for Oracle 資料庫日誌檔案 - Amazon Relational Database Service

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

Amazon RDS for Oracle 資料庫日誌檔案

您可以使用 Amazon RDS主控台或 存取 Oracle 警示日誌、稽核檔案和追蹤檔案API。如需關於檢視、下載與查看資料庫日誌檔案的資訊,請參閱監控 Amazon RDS Amazon 日誌檔

所提供的 Oracle 稽核檔案為標準 Oracle 稽核檔案。Amazon RDS支援 Oracle 精細稽核 (FGA) 功能。不過,日誌存取不會提供對儲存在SYS.FGA_LOG$資料表中,且可透過DBA_FGA_AUDIT_TRAIL檢視存取FGA的事件的存取權。

列出可供資料庫執行個體使用的 Oracle 日誌檔案DescribeDBLogFilesAPI的操作會忽略 MaxRecords 參數,並傳回最多 1,000 筆記錄。呼叫會以毫秒為單位傳回LastWritten為POSIX日期。

保留排程

若日誌檔案變得過大,Oracle 資料庫引擎可能會輪換這些檔案。欲保留稽核或追蹤檔案,請下載這些檔案。如果您在本機存放檔案,可以降低 Amazon RDS儲存成本,並為資料提供更多可用空間。

下表顯示 Oracle 警示日誌、稽核檔案和 Amazon 上追蹤檔案的保留排程RDS。

日誌類型 保留排程

提醒日誌

文字提醒日誌每日輪換,保留 30 天由 Amazon 管理RDS。XML 警示日誌會保留至少七天。您可使用 ALERTLOG 畫面來存取此記錄。

稽核檔案

預設稽核檔案的保留時間為 7 日。Amazon RDS可能會刪除超過七天的稽核檔案。

追蹤檔案

預設的追蹤檔案保留時間為 7 日。Amazon RDS可能會刪除超過七天的追蹤檔案。

接聽程式日誌

預設接聽程式記錄的保留時間為 7 日。Amazon RDS可能會刪除超過七天的接聽程式日誌。

注意

稽核檔案和追蹤檔案共享相同的保留組態。

使用 Oracle 追蹤檔案

接下來,您可以找到建立、重新整理、存取和刪除追蹤檔案的 Amazon RDS 程序說明。

列出檔案

您可使用這兩個程序之一來存取 background_dump_dest 路徑上的檔案。第一個程序會重新整理畫面,其中內含 background_dump_dest 中現有的所有檔案。

EXEC rdsadmin.manage_tracefiles.refresh_tracefile_listing;

重新整理畫面後,請查詢下列畫面來存取結果。

SELECT * FROM rdsadmin.tracefile_listing;

上述程序的替代做法是使用 FROM table,採用類似資料表的格式來串流非關聯式資料,以列出資料庫目錄內容。

SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('BDUMP'));

下列查詢顯示日誌檔案的文字。

SELECT text FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP','alert_dbname.log.date'));

在僅供讀取複本上,查詢 以取得BDUMP目錄的名稱V$DATABASE.DB_UNIQUE_NAME。如果唯一名稱為 DATABASE_B,則BDUMP目錄為 BDUMP_B。下列範例會在複本上查詢BDUMP名稱,然後使用此名稱來查詢 的內容alert_DATABASE.log.2020-06-23

SELECT 'BDUMP' || (SELECT regexp_replace(DB_UNIQUE_NAME,'.*(_[A-Z])', '\1') FROM V$DATABASE) AS BDUMP_VARIABLE FROM DUAL; BDUMP_VARIABLE -------------- BDUMP_B SELECT TEXT FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP_B','alert_DATABASE.log.2020-06-23'));

產生追蹤檔案並追蹤工作階段

由於 沒有限制ALTER SESSION,許多在 Oracle 中產生追蹤檔案的標準方法仍可供 Amazon RDS 資料庫執行個體使用。需要更多存取權限的追蹤檔案,可參考下列程序。

Oracle 方法 Amazon RDS方法

oradebug hanganalyze 3

EXEC rdsadmin.manage_tracefiles.hanganalyze;

oradebug dump systemstate 266

EXEC rdsadmin.manage_tracefiles.dump_systemstate;

您可以使用許多標準方法來追蹤連線至 Amazon 中 Oracle 資料庫執行個體的個別工作階段RDS。若要啟用工作階段的追蹤,您可以在 Oracle 提供的 PL/SQL 套件中執行子程式,例如 DBMS_SESSIONDBMS_MONITOR。如需詳細資訊,請參閱 Oracle 文件中的為工作階段啟用追蹤

擷取追蹤檔案

您可以使用 background_dump_dest Amazon RDS受管外部資料表上的標準SQL查詢,在 中擷取任何追蹤檔案。欲使用此方法,務必執行此程序,為此資料表設定特定追蹤檔案的位置。

例如,您可以使用上述的 rdsadmin.tracefile_listing 畫面,之後即可列出系統上的所有追蹤檔案。接著,請使用下列程序,將 tracefile_table 畫面設定為指向特定追蹤檔案。

EXEC rdsadmin.manage_tracefiles.set_tracefile_table_location('CUST01_ora_3260_SYSTEMSTATE.trc');

下列範例會在目前的結構描述內建立外部資料表,其位置則設定為所提供的文件。您可以使用SQL查詢將內容擷取至本機檔案。

SPOOL /tmp/tracefile.txt SELECT * FROM tracefile_table; SPOOL OFF;

清除追蹤檔案

追蹤檔案可能會累積和耗用磁碟空間。Amazon 預設會RDS清除追蹤檔案,以及超過七天的日誌檔案。您可使用 show_configuration 程序來檢視並設定追蹤檔案保留期間。您應執行命令 SET SERVEROUTPUT ON 以檢視組態結果。

下列範例顯示目前的追蹤檔案保留期間,然後設定為新的追蹤檔案保留期間。

# Show the current tracefile retention SQL> EXEC rdsadmin.rdsadmin_util.show_configuration; NAME:tracefile retention VALUE:10080 DESCRIPTION:tracefile expiration specifies the duration in minutes before tracefiles in bdump are automatically deleted. # Set the tracefile retention to 24 hours: SQL> EXEC rdsadmin.rdsadmin_util.set_configuration('tracefile retention',1440); SQL> commit; #show the new tracefile retention SQL> EXEC rdsadmin.rdsadmin_util.show_configuration; NAME:tracefile retention VALUE:1440 DESCRIPTION:tracefile expiration specifies the duration in minutes before tracefiles in bdump are automatically deleted.

除了定期的清除程序,您也可透過 background_dump_dest 手動移除檔案。下列範例說明如何清除超過五分鐘的所有檔案。

EXEC rdsadmin.manage_tracefiles.purge_tracefiles(5);

您亦可清除符合特定模式的所有檔案 (如果這樣做,請勿包含副檔名,例如 .trc)。下列範例說明如何清除以 SCHPOC1_ora_5935 為開頭的所有檔案。

EXEC rdsadmin.manage_tracefiles.purge_tracefiles('SCHPOC1_ora_5935');

將 Oracle 日誌發佈至 Amazon CloudWatch Logs

您可以設定 RDS for Oracle 資料庫執行個體,將日誌資料發佈至 Amazon CloudWatch Logs 中的日誌群組。透過 CloudWatch Logs,您可以分析日誌資料,並使用 CloudWatch 建立警示和檢視指標。您可以使用 CloudWatch Logs 將日誌記錄存放在高度耐用的儲存體中。

Amazon RDS 會將每個 Oracle 資料庫日誌發佈為日誌群組中的個別資料庫串流。例如,若您將匯出功能設定為包含稽核日誌,則稽核資料會存放在 /aws/rds/instance/my_instance/audit 日誌群組內的稽核日誌流中。下表摘要說明 RDS Oracle 將日誌發佈至 Amazon CloudWatch Logs 的要求。

日誌名稱 需求 預設

警示日誌

無。您無法停用此日誌。

已啟用

追蹤日誌

trace_enabled 參數設定為 TRUE,或將其保留為預設值。

TRUE

稽核日誌

audit_trail 參數設定為下列任何允許的值:

{ none | os | db [, extended] | xml [, extended] }

none

接聽程式日誌

無。您無法停用此日誌。

已啟用

Oracle Management Agent 日誌

無。您無法停用此日誌。

已啟用

此 Oracle Management Agent 日誌包含下表所示的日誌群組。

日誌名稱 CloudWatch 日誌群組
emctl.log oemagent-emctl
emdctlj.log oemagent-emdctlj
gcagent.log oemagent-gcagent
gcagent_errors.log oemagent-gcagent-errors
emagent.nohup oemagent-emagent-nohup
secure.log oemagent-secure

如需詳細資訊,請參閱 Oracle 文件中的尋找 Management Agent 日誌和追蹤檔案

從 將 Oracle 資料庫日誌發佈至 CloudWatch 日誌 AWS Management Console
  1. 在 開啟 Amazon RDS主控台https://console.aws.amazon.com/rds/

  2. 在導覽窗格中選擇 Databases (資料庫),然後選擇您要修改的資料庫執行個體。

  3. 選擇 Modify (修改)

  4. 日誌匯出區段中,選擇您要開始發佈至日誌的 CloudWatch 日誌。

  5. 選擇 Continue (繼續),然後在摘要頁面上選擇 Modify DB Instance (修改資料庫執行個體)

欲發佈 Oracle 日誌,您可搭配下列參數使用 modify-db-instance 命令:

  • --db-instance-identifier

  • --cloudwatch-logs-export-configuration

注意

--cloudwatch-logs-export-configuration 選項的變更一律立即套用到資料庫執行個體。因此,--apply-immediately--no-apply-immediately 選項沒有效果。

您亦可使用下列命令來發佈 Oracle 日誌:

範例

下列範例會在啟用 CloudWatch 日誌發佈的情況下建立 Oracle 資料庫執行個體。該--cloudwatch-logs-export-configuration值是字串JSON陣列。字串可以是 alertauditlistener 以及 trace 的任意組合。

用於 Linux, macOS,或 Unix:

aws rds create-db-instance \ --db-instance-identifier mydbinstance \ --cloudwatch-logs-export-configuration '["trace","audit","alert","listener","oemagent"]' \ --db-instance-class db.m5.large \ --allocated-storage 20 \ --engine oracle-ee \ --engine-version 19.0.0.0.ru-2024-04.rur-2024-04.r1 \ --license-model bring-your-own-license \ --master-username myadmin \ --manage-master-user-password

用於 Windows:

aws rds create-db-instance ^ --db-instance-identifier mydbinstance ^ --cloudwatch-logs-export-configuration trace alert audit listener oemagent ^ --db-instance-class db.m5.large ^ --allocated-storage 20 ^ --engine oracle-ee ^ --engine-version 19.0.0.0.ru-2024-04.rur-2024-04.r1 ^ --license-model bring-your-own-license ^ --master-username myadmin ^ --manage-master-user-password
範例

下列範例修改現有的 Oracle 資料庫執行個體,將日誌檔案發佈至 CloudWatch Logs。該--cloudwatch-logs-export-configuration值是JSON物件。此物件的金鑰為 EnableLogTypes,而其值為字串陣列,其中包含 alertauditlistener 以及 trace 的任意組合。

用於 Linux, macOS,或 Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["trace","alert","audit","listener","oemagent"]}'

用於 Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --cloudwatch-logs-export-configuration EnableLogTypes=\"trace\",\"alert\",\"audit\",\"listener\",\"oemagent\"
範例

下列範例會修改現有的 Oracle 資料庫執行個體,以停用將稽核和接聽程式日誌檔案發佈至 CloudWatch Logs。該--cloudwatch-logs-export-configuration值是JSON物件。此物件的金鑰為 DisableLogTypes,而其值為字串陣列,其中包含 alertauditlistener 以及 trace 的任意組合。

用於 Linux, macOS,或 Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["audit","listener"]}'

用於 Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --cloudwatch-logs-export-configuration DisableLogTypes=\"audit\",\"listener\"

您可以使用 發佈 Oracle 資料庫日誌RDSAPI。您可以使用下列參數來呼叫 ModifyDBInstance 動作:

  • DBInstanceIdentifier

  • CloudwatchLogsExportConfiguration

注意

CloudwatchLogsExportConfiguration 參數的變更一律立即套用到資料庫執行個體。因此,ApplyImmediately 參數沒有效果。

您也可以呼叫下列RDSAPI操作來發佈 Oracle 日誌:

使用以下參數執行其中一個RDSAPI操作:

  • DBInstanceIdentifier

  • EnableCloudwatchLogsExports

  • Engine

  • DBInstanceClass

視您執行RDS的操作而定,可能需要其他參數。

存取警示日誌和接聽程式日誌

您可以使用 Amazon RDS主控台檢視警示日誌。您也可以使用下列SQL陳述式。

SELECT message_text FROM alertlog;

使用 Amazon Logs 存取接聽程式 CloudWatch 日誌。

注意

當警示和接聽程式日誌超過 10 MB 時,Oracle 會輪換警示和接聽程式日誌,此時 Amazon RDS 檢視無法使用。