Amazon Relational Database Service
用户指南 (API 版本 2014-10-31)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

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 个记录。

保留计划

如果日志文件变得非常大,则 Oracle 数据库引擎可能会轮换这些文件。要保留审核文件或跟踪文件,请下载这些文件。将文件存储在本地可降低 Amazon RDS 存储成本,并为您的数据留出更多空间。

以下是 Amazon RDS 上的 Oracle 警报日志、审核文件和跟踪文件的保留计划。

日志类型 保留计划

警报日志

文本警报日志每天轮换,并具有由 Amazon RDS 管理的 30 天保留期。XML 警报日志至少保留七天。可以使用 ALERTLOG 视图访问此日志。

审核文件

审核文件的默认保留期为七天。Amazon RDS 可能会删除超过七天的审核文件。

跟踪文件

跟踪文件的默认保留期为七天。Amazon RDS 可能会删除超过七天的跟踪文件。

侦听器日志

侦听器日志的默认保留期为七天。Amazon RDS 可能会删除超过七天的侦听器日志。

注意

审核文件和跟踪文件共享相同的保留配置。

切换联机日志文件

可以使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.switch_logfile 切换联机日志文件。有关更多信息,请参阅 切换联机日志文件

检索存档重做日志

您可以保留存档的重做日志。有关更多信息,请参阅 保留存档重做日志

使用 Oracle 跟踪文件

下面介绍用于创建、刷新、访问和删除跟踪文件的 Amazon RDS 过程。

列出文件

可以使用两个过程中的任意一个过程来允许访问 background_dump_dest 路径中的任意文件。第一个过程可刷新视图(其中包含当前 background_dump_dest 中所有文件的列表)。

exec rdsadmin.manage_tracefiles.refresh_tracefile_listing;

刷新视图后,请使用以下视图访问结果。

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_xxx.log'));

生成跟踪文件并跟踪会话

由于没有任何 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 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 查询将内容检索到本地文件中。

# eg: send the contents of the tracefile to a local file: sqlplus user/password@TNS alias << EOF > /tmp/tracefile.txt select * from tracefile_table; EOF

清除跟踪文件

跟踪文件可以积累和占用磁盘空间。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); #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

您可以配置 Amazon RDS Oracle 数据库实例以将日志数据发布到 Amazon CloudWatch Logs 中的日志组。利用 CloudWatch Logs,可以对日志数据进行分析并使用 CloudWatch 创建警报和查看指标。您可以使用 CloudWatch Logs 在高持久性存储中存储日志记录。

Amazon RDS 将每个 Oracle 数据库日志作为日志组中的单独数据库流进行发布。例如,如果将导出功能配置为包括审核日志,则审核数据将存储在 /aws/rds/instance/my_instance/audit 日志组中的审核日志流中。

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 将日志发布到 CloudWatch Logs。

使用 AWS 管理控制台将日志发布到 CloudWatch Logs

从控制台将 Oracle 数据库日志发布到 CloudWatch Logs

  1. 通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 在导航窗格中,选择实例,然后选择要修改的数据库实例。

  3. 对于实例操作,请选择修改

  4. 日志导出部分中,选择要开始发布到 CloudWatch Logs 的日志。

  5. 选择继续,然后选择摘要页面上的修改数据库实例

使用 AWS CLI 将日志发布到 CloudWatch Logs

您可以使用 AWS CLI 来发布 Oracle 日志。您可以调用带以下参数的 modify-db-instance 命令:

  • --db-instance-identifier

  • --cloudwatch-logs-export-configuration

  • --apply-immediately

还可以通过调用以下 AWS CLI 命令来发布 Oracle 日志:

通过以下选项运行上述 AWS CLI 命令之一:

  • --db-instance-identifier

  • --enable-cloudwatch-logs-exports

  • --db-instance-class

  • --engine

根据您运行的 AWS CLI 命令,可能需要其他选项。

以下命令修改现有的 Oracle 数据库实例以将日志文件发布到 CloudWatch Logs。

针对 Linux、OS X 或 Unix:

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

对于 Windows:

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

以下命令创建 Oracle 数据库实例以将日志文件发布到 CloudWatch Logs。

针对 Linux、OS X 或 Unix:

aws rds create-db-instance \ --db-instance-identifier mydbinstance \ --enable-cloudwatch-logs-exports '["trace","audit","alert","listener"]' \ --db-instance-class db.m1.small \ --engine oracle-se1

对于 Windows:

aws rds create-db-instance ^ --db-instance-identifier mydbinstance ^ --enable-cloudwatch-logs-exports '["trace","audit","alert","listener"]' ^ --db-instance-class db.m1.small ^ --engine oracle-se1

以下命令修改现有的 Oracle 数据库实例以禁用将审核和侦听器日志文件发布到 CloudWatch Logs 的功能。

针对 Linux、OS X 或 Unix:

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

对于 Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["audit","listener"]}' ^ --apply-immediately
使用 RDS API 将日志发布到 CloudWatch Logs

您可以使用 RDS API 来发布 Oracle 数据库日志。您可以使用以下参数调用 ModifyDBInstance 操作:

  • DBInstanceIdentifier

  • CloudwatchLogsExportConfiguration

  • ApplyImmediately

您还可以通过调用以下 RDS API 操作来发布 Oracle 日志:

通过以下参数运行上述一个 RDS API 操作:

  • DBInstanceIdentifier

  • EnableCloudwatchLogsExports

  • Engine

  • DBInstanceClass

根据您运行的 AWS CLI 命令,可能需要其他参数。

以前用于访问警报日志和侦听器日志的方法

您可以使用 Amazon RDS 控制台查看警告日志。您还可以使用以下 SQL 语句访问警报日志。

select message_text from alertlog;

要访问侦听器日志,请使用以下 SQL 语句。

select message_text from listenerlog;

注意

当警报和侦听器日志超过 10MB 时,Oracle 会轮换这些日志,此时它们不会显示在 Amazon RDS 视图中。