Oracle Database のログファイル - Amazon Relational Database Service

Oracle Database のログファイル

Amazon RDS コンソールまたは API を使用して、Oracle のアラートログ、監査ファイル、トレースファイルにアクセスできます。ファイルベースのデータベースログの表示、ダウンロード、モニタリングの詳細については、「Amazon RDS ログファイルのモニタリング」を参照してください。

提供される Oracle の監査ファイルは、スタンダードの Oracle 監査ファイルです。Amazon RDS は、Oracle のきめ細かな監査 (FGA) 機能をサポートしています。ただし、ログアクセスは、SYS.FGA_LOG$ テーブルに保存された FGA イベントと DBA_FGA_AUDIT_TRAIL ビューからアクセス可能な FGA イベントへのアクセスを提供しません。

DB インスタンスの使用可能な Oracle ログファイルを一覧表示する DescribeDBLogFiles API オペレーションでは、MaxRecords パラメータが無視され、最大 1,000 件のレコードが返されます。この呼び出しは、ミリ秒単位の POSIX 日付として LastWritten を返します。

保持期間スケジュール

Oracle データベースエンジンは、ログファイルが非常に大きくなるとローテーションする場合があります。監査ファイルまたはトレースファイルを保持するには、まずダウンロードします。ファイルをローカルに保存すると、Amazon RDS ストレージコストが削減され、データ用の領域が増えます。

次の表は、Amazon RDS における Oracle のアラートログ、監査ファイル、トレースファイルの保持スケジュールを示しています。

ログタイプ 保持期間スケジュール

アラートログ

テキストアラートログは、Amazon RDS による管理の 30 日の保持で毎日ローテーションされます。XML アラートのログは 7 日間以上保存されます。ALERTLOG ビューを使用してこのログにアクセスできます。

監査ファイル

監査ファイルのデフォルトの保持期間は 7 日です。Amazon RDS は 7 日を経過した監査ファイルを削除する場合があります。

トレースファイル

トレースファイルのデフォルトの保持期間は 7 日です。Amazon RDS は 7 日を経過したトレースファイルを削除する場合があります。

リスナーログ

リスナーログのデフォルトの保持期間は 7 日です。Amazon RDS は 7 日を経過したリスナーログを削除する場合があります。

注記

監査ファイルとトレースファイルは同じ保持設定を共有します。

Oracle トレースファイルを使用する

トレース ファイルを作成、更新、アクセス、削除する Amazon RDS の手順の説明を以下に示します。

ファイルのリスト化

2 つのうちいずれかの手順を使用して、background_dump_dest パスのあらゆるファイルへのアクセスを許可できます。初期の手順では、background_dump_dest 内の最新のファイルのリストをすべて含むビューを更新します。

EXEC rdsadmin.manage_tracefiles.refresh_tracefile_listing;

ビューが更新されたら、以下のビューを照会して結果にアクセスします。

SELECT * FROM rdsadmin.tracefile_listing;

2 つ目の方法では、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 DB インスタンスでも使用できます。以下に、より高度なアクセス許可の必要なトレースファイル用の手順を示します。

Oracle での方法 Amazon RDS方法

oradebug hanganalyze 3

EXEC rdsadmin.manage_tracefiles.hanganalyze;

oradebug dump systemstate 266

EXEC rdsadmin.manage_tracefiles.dump_systemstate;

Amazon RDS の Oracle DB インスタンスに接続する個々のセッションをトレースするには、複数の方法を使用できます。セッションのトレースを有効にするには、DBMS_SESSIONDBMS_MONITOR など、Oracle が提供する PL/SQL パッケージのサブプログラムを実行できます。詳細については、Oracle ドキュメントの「Enabling Tracing for a Session」を参照してください。

トレースファイルを取得する

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 から手動でファイルを削除することもできます。以下の例では、5 分を経過したすべてのファイルを消去しています。

EXEC rdsadmin.manage_tracefiles.purge_tracefiles(5);

特定のパターンと一致するすべてのファイルを消去することもできます (そうする場合は .trc などのファイル拡張子を含めないでください)。次の例は、SCHPOC1_ora_5935 で始まるすべてのファイルを消去する方法を示しています。

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

Amazon CloudWatch Logs への Oracle ログの発行

RDS for Oracle DB インスタンスを設定して、ログデータを Amazon CloudWatch Logs のロググループに発行することができます。CloudWatch Logs を使用すると、ログデータの分析や、CloudWatch を使用したアラームの作成、メトリクスの表示を行うことができます。CloudWatch Logs を使用して、耐久性の高いストレージにログレコードを格納できます。

Amazon RDS は、Oracle データベースログを、ロググループの別のデータストリーミングとしてそれぞれ発行します。例えば、エクスポート機能を設定して、監査ログを作成すると、監査データは、/aws/rds/instance/my_instance/audit ロググループの監査ログストリーミングに保存されます。次の表は、RDS for Oracle が Amazon CloudWatch Logs にログを発行するための要件をまとめたものです。

ログ名 要件 デフォルト値

アラートログ

なし。このログを無効にすることはできません。

有効

トレースログ

trace_enabled パラメータを TRUE に設定するか、デフォルトのままにします。

TRUE

[監査ログ]

audit_trail パラメータを OSXML、または 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 ログとトレースファイルの検索」を参照してください。

AWS Management Console から CloudWatch Logs に Oracle DB ログを公開するには
  1. Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[データベース] を選択し、変更する DB インスタンスを選択します。

  3. [Modify] を選択します。

  4. [ログのエクスポート] セクションで、CloudWatch Logs に公開するログを選択します。

  5. [続行] を選択し、概要ページで [Modify DB Instance] (DB インスタンスの変更) を選択します。

Oracle ログを発行するには、以下のパラメータを指定して modify-db-instance コマンドを使用します。

  • --db-instance-identifier

  • --cloudwatch-logs-export-configuration

注記

--cloudwatch-logs-export-configuration オプションへの変更は常に DB インスタンスに即時適用されます。それで、--apply-immediately--no-apply-immediately オプションは効果がありません。

以下のコマンドを使用して Oracle ログを発行することもできます。

次の例では、CloudWatch Logs の発行を有効にした Oracle DB インスタンスを作成します。--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 12.1.0.2.v18 \ --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 12.1.0.2.v18 ^ --license-model bring-your-own-license ^ --master-username myadmin ^ --manage-master-user-password

次の例では、ログファイルが CloudWatch Logs に発行されるよう既存の Oracle DB インスタンスを変更します。--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\"

次の例では、CloudWatch Logs への監査およびリスナーログファイルの発行が無効になるよう既存の Oracle DB インスタンスを変更します。--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 DB ログは、RDS API を使用して発行することができます。以下のパラメータを使用して、ModifyDBInstance アクションを呼び出せます。

  • DBInstanceIdentifier

  • CloudwatchLogsExportConfiguration

注記

CloudwatchLogsExportConfiguration パラメータへの変更は常に DB インスタンスに即時適用されます。それで、ApplyImmediately パラメータは効果がありません。

以下の RDS API オペレーションを呼び出すことで Oracle ログを発行することもできます。

以下のパラメータでこの RDS API オペレーションの 1 つを実行します。

  • DBInstanceIdentifier

  • EnableCloudwatchLogsExports

  • Engine

  • DBInstanceClass

実行する RDS オペレーションに応じて、他のパラメータが必要となる場合があります。

アラートログとリスナーログにアクセスするための以前の方法

Amazon RDS コンソールを使用してアラートログを表示できます。次の SQL ステートメントを使用してアラートログにアクセスすることもできます。

SELECT message_text FROM alertlog;

この listenerlog ビューには、Oracle Databaseバージョン 12.1.0.2 以前のエントリが含まれています。これらのデータベースバージョンのリスナーログにアクセスするには、次のクエリを使用します。

SELECT message_text FROM listenerlog;

Oracle Database バージョン 12.2.0.1 以降の場合は、Amazon CloudWatch Logs を使用してリスナーログにアクセスします。

注記

Oracle では、アラートログとリスナーログは 10 MB を超えるとローテーションされます。その時点で、Amazon RDS のビューからは使用できなくなります。