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 日間以上保存されます。 |
監査ファイル |
監査ファイルのデフォルトの保持期間は 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方法 |
---|---|
|
|
|
|
Amazon RDS の Oracle DB インスタンスに接続する個々のセッションをトレースするには、複数の方法を使用できます。セッションのトレースを有効にするには、DBMS_SESSION
や DBMS_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 にログを発行するための要件をまとめたものです。
ログ名 | 要件 | デフォルト値 |
---|---|---|
アラートログ |
なし。このログを無効にすることはできません。 |
有効 |
トレースログ |
|
|
[監査ログ] |
|
|
リスナーログ |
なし。このログを無効にすることはできません。 |
有効 |
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 ログを公開するには
Amazon RDS コンソール (https://console.aws.amazon.com/rds/
) を開きます。 -
ナビゲーションペインで、[データベース] を選択し、変更する DB インスタンスを選択します。
-
[Modify] を選択します。
-
[ログのエクスポート] セクションで、CloudWatch Logs に公開するログを選択します。
-
[続行] を選択し、概要ページで [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 形式の文字列の配列です。この文字列は 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
例
次の例では、ログファイルが CloudWatch Logs に発行されるよう既存の Oracle DB インスタンスを変更します。--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\"
例
次の例では、CloudWatch Logs への監査およびリスナーログファイルの発行が無効になるよう既存の Oracle DB インスタンスを変更します。--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\"
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;
Amazon CloudWatch Logs を使用してリスナーログにアクセスします。
注記
Oracle では、アラートログとリスナーログは 10 MB を超えるとローテーションされます。その時点で、Amazon RDS のビューからは使用できなくなります。