Amazon RDS for Oracle 数据库日志文件
可以使用 Amazon RDS 控制台或 API 访问 Oracle 警报日志、审核文件和跟踪文件。有关查看、下载和监视基于文件的数据库日志的更多信息,请参阅 监控 Amazon RDS 日志文件。
提供的 Oracle 审核文件是标准 Oracle 审核文件。Amazon RDS 支持 Oracle 精细审核(FGA)功能。但是,日志访问不提供对存储在 SYS.FGA_LOG$
表中并且可通过 DBA_FGA_AUDIT_TRAIL
视图访问的 FGA 事件的访问权限。
DescribeDBLogFiles
API 操作列出可用于数据库实例的 Oracle 日志文件,该操作会忽略 MaxRecords
参数,最多返回 1000 个记录。该调用返回 LastWritten
作为 POSIX 日期(单位:毫秒)。
保留计划
如果日志文件变得非常大,则 Oracle 数据库引擎可能会轮换这些文件。要保留审核文件或跟踪文件,请下载这些文件。如果您将文件存储在本地,则可以降低 Amazon RDS 存储成本并为您的数据留出更多空间。
下表显示了 Amazon RDS 上的 Oracle 警报日志、审计文件和跟踪文件的保留计划。
日志类型 | 保留计划 |
---|---|
警报日志 |
文本警报日志每天轮换,并具有由 Amazon RDS 管理的 30 天保留期。XML 警报日志至少保留七天。可以使用 |
审核文件 |
审核文件默认的保留期为七天。Amazon RDS 可能会删除超过七天的审核文件。 |
跟踪文件 |
跟踪文件默认的保留期为七天。Amazon RDS 可能会删除超过七天的跟踪文件。 |
侦听器日志 |
侦听器日志默认的保留期为七天。Amazon RDS 可能会删除超过 7 天的侦听器日志。 |
注意
审核文件和跟踪文件共享相同的保留配置。
使用 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
'));
在只读副本上,通过查询 V$DATABASE.DB_UNIQUE_NAME
获取 BDUMP 目录的名称。如果唯一名称为 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 方法 |
---|---|
|
|
|
|
您可以使用很多标准方法来跟踪连接到 Amazon RDS 中的 Oracle 数据库实例的各个会话。要启用对会话的跟踪,您可以运行 Oracle 提供的 PL/SQL 程序包中的子程序,如 DBMS_SESSION
和 DBMS_MONITOR
。有关更多信息,请参阅 Oracle 文档中的启用会话跟踪
检索跟踪文件
对于 Amazon RDS 管理的外部表,您可以使用标准 SQL 查询检索 background_dump_dest
中的任何跟踪文件。要使用此方法,必须执行此程序以将此表的位置设置到指定跟踪文件。
例如,可以使用前面提到的 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 默认清除跟踪文件和超过 7 天的日志文件。可以使用 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 for Oracle 将日志发布到 Amazon CloudWatch Logs 的要求。
日志名称 | 要求 | 默认 |
---|---|---|
提醒日志 |
无。您无法禁用此日志。 |
已启用 |
跟踪日志 |
将 |
|
审计日志 |
将
|
|
侦听器日志 |
无。您无法禁用此日志。 |
已启用 |
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 日志和跟踪文件
从Amazon Web Services Management Console将 Oracle 数据库日志发布到 CloudWatch Logs
通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在导航窗格中,选择 Databases (数据库),然后选择要修改的数据库实例。
-
选择修改。
-
在 Log exports (日志导出) 部分中,选择要开始发布到 CloudWatch Logs 的日志。
-
选择继续,然后选择摘要页面上的修改数据库实例。
要发布 Oracle 日志,您可以使用具有以下参数的 modify-db-instance
命令:
-
--db-instance-identifier
-
--cloudwatch-logs-export-configuration
注意
对 --cloudwatch-logs-export-configuration
选项进行的更改始终立即应用于数据库实例。因此,--apply-immediately
和 --no-apply-immediately
选项没有影响。
您还可以使用以下命令来发布 Oracle 日志:
例
以下示例将创建一个启用了 CloudWatch Logs 发布的 Oracle 数据库实例。--cloudwatch-logs-export-configuration
值是 JSON 字符串数组。这些字符串可以是 alert
、audit
、listener
和 trace
的任意组合。
对于 Linux、macOS 或 Unix:
aws rds create-db-instance \ --db-instance-identifier
mydbinstance
\ --cloudwatch-logs-export-configuration '["trace","audit","alert","listener","oemagent"]' \ --db-instance-classdb.m5.large
\ --allocated-storage20
\ --engineoracle-ee
\ --engine-version19.0.0.0.ru-2024-04.rur-2024-04.r1
\ --license-modelbring-your-own-license
\ --master-usernamemyadmin
\ --manage-master-user-password
对于 Windows:
aws rds create-db-instance ^ --db-instance-identifier
mydbinstance
^ --cloudwatch-logs-export-configurationtrace alert audit listener oemagent
^ --db-instance-classdb.m5.large
^ --allocated-storage20
^ --engineoracle-ee
^ --engine-version19.0.0.0.ru-2024-04.rur-2024-04.r1
^ --license-modelbring-your-own-license
^ --master-usernamemyadmin
^ --manage-master-user-password
例
以下示例修改现有的 Oracle 数据库实例以将日志文件发布到 CloudWatch Logs。--cloudwatch-logs-export-configuration
值是 JSON 对象。此对象的键是 EnableLogTypes
,其值是具有 alert
、audit
、listener
和 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
,其值是具有 alert
、audit
、listener
和 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\"
您可以使用 RDS API 来发布 Oracle 数据库日志。您可以使用以下参数调用 ModifyDBInstance
操作:
-
DBInstanceIdentifier
-
CloudwatchLogsExportConfiguration
注意
对 CloudwatchLogsExportConfiguration
参数进行的更改始终立即应用于数据库实例。因此,ApplyImmediately
参数没有影响。
您还可以通过调用以下 RDS API 操作来发布 Oracle 日志:
使用以下参数运行这些 RDS API 操作之一:
-
DBInstanceIdentifier
-
EnableCloudwatchLogsExports
-
Engine
-
DBInstanceClass
根据您运行的 RDS 操作,可能需要其他参数。
访问警报日志和侦听器日志
您可以使用 Amazon RDS 控制台查看警告日志。您还可以使用以下 SQL 语句。
SELECT message_text FROM alertlog;
使用 Amazon CloudWatch Logs 访问侦听器日志。
注意
当警报和侦听器日志超过 10MB 时,Oracle 会轮换这些日志,此时它们不会显示在 Amazon RDS 视图中。