Oracle Trace File Analyzer について

記事タイトルとURLをコピーする

こんにちは、サーバーワークス入社から1年が経ったテクニカルサポート課の 佐藤 光晃です。
本ブログは AWS から脱線してオンプレミス環境 の Oracle Database や EC2 on Oracle / RDS Custom for Oracle で利用可能な Oracle Trace File Analyzer (TFA) を紹介したいと思います。

TFA について

TFA は一言で言うと、Oracle 製品全般の診断データ収集を収集するツールとなっております。TFA には OS や Oracle Software (Database や Clusterware 等) の情報収集や 特定の ORA エラーに対する情報収集機能が備わっております。
Oracle 製品に関するトラブルシューティングにおいては有用なツールとなっており、Oracle 社や Oracle サポートベンダーに問い合わせする際に重宝します。
TFA は Oracle 社が主に ORA-600 や ORA-700、ORA-7445 などの内部エラーの調査で有効となっており、AWS の RDS for Oracle においては TFA は効果がありません。(OS ログイン自体出来ないのでそもそも使えません。)
※RDS for Oracle において ORA-600 や ORA-700、ORA-7445 などの内部エラーが発生した場合には、発生した時の状況 (特定の SQL 実行時に発生する等) と、アラートログやトレースファイルを収集し、ライセンスごとに定められているサポートにお問い合わせください。

よくある質問 - Amazon RDS for Oracle | AWS

Q: Amazon RDS for Oracle のサポート体制どのようになっていますか?
・BYOL: このモデルでは、アクティブな Oracle サポートアカウントを継続してご使用いただけます。Oracle データベースの特定のサービスリクエストに関しては、直接 Oracle にご連絡ください。アクティブな AWS Premium Support のアカウントをお持ちの場合、Amazon RDS 固有の問題については、AWS Premium Support にご連絡ください。Amazon Web Services と Oracle は、両方の組織からの援助が必要な場合のために、マルチベンダーサポートプロセスを用意しています。
・ライセンス込み: このモデルでは、アクティブな AWS プレミアムサポートのアカウントをお持ちの場合、Amazon RDS と Oracle データベースどちらの場合も、特定のサービス要望を AWS プレミアムサポートにお問い合わせいただく必要があります。

収集される情報

TFA における OS に関する情報収集は OSWatcher というツールが担っております。こちらは内部で ps, top, vmstat 等の出力結果を収集しています。AWS RDS で言うと CloudWatch や拡張モニタリングが類似しております。
DB に関する情報収集は TFA のコマンドのオプションが多岐に渡っており、必要に応じて Oracle のドキュメントを見ながらご実施頂く形となります。パフォーマンス調査では Statspack や AWR などと併せて取得すると良いでしょう。AWS RDS で言うと CloudWatch や Performance Insights が類似しております。

TFA の導入

TFA は バージョン 12.2 以降の Oracle Database や Grid Infrastructure には自動でインストールされており、デフォルトで有効化されております。
デフォルトでは入っておりますが、基本的には最新版の利用が推奨されておりますので、ご利用の際は My Oracle Support から最新版をダウンロードください。

Oracle Autonomous Health Frameworkのインストールについて

TFA による情報収集

TFA で情報収集を行う場合、いくつかコマンドの種類はありますが、目的が定まっていればコマンド 1 つで収集が完了する場合が多いです。
本ブログでは 2 点ほどコマンドを簡単に紹介させて頂きます。当該コマンドや他のコマンドの詳細については Oracle 社のドキュメントをご参照ください。

Oracle Trace File Analyzer診断収集コマンドの実行

疑似的に ORA-600 エラーを発生させます。

SQL*Plus 等で下記コマンドを実行するとアラートログやトレースファイルに ORA-600 を疑似的に出力することができます。
※今回はサンプル用として実行しております。

SQL> exec dbms_system.ksdwrt(3, 'ORA-00600: internal error code, arguments:[test1], [], [], [], [], [], [], [], [], [], [], []');  

PL/SQLプロシージャが正常に完了しました。

SQL> exec dbms_system.ksdwrt(3, 'ORA-00600: internal error code, arguments:[test2], [], [], [], [], [], [], [], [], [], [], []');  

PL/SQLプロシージャが正常に完了しました。

トラブルが発生している時間帯が分かる場合

以下のコマンドを実行することで指定した時間内で発生したイベントの情報収集をすることが可能です。

$ tfactl diagcollect -from "yyyy-mm-dd" -to "yyyy-mm-dd"  

▼実行例

$ ./tfactl diagcollect -from "2023-10-03 17:00:00" -to "2023-10-03 17:50:00"

AHF has detected following events from 2023-10-03 17:00:00.000 to 2023-10-03 17:50:00.000
All events are displayed in JST time zone

Choose an event to perform a diagnostic collection:
1  . 2023-10-03 17:49:17.000 [RDBMS.orcl.orcl] ORA-00600: internal error code, arguments:[test], [], [], [], []...
2  . Display Problem Categories
3  . Enter a different event time
X  . Exit
Choose the option [1-3]:1

Components included in this collection: OS CRS DATABASE

Preparing to execute support diagnostic scripts.

Collecting data for local node(s).

TFA is using system timezone for collection, All times shown in JST.
Scanning files from Oct/03/2023 16:49:56 to Oct/03/2023 17:49:56

Collection Id : 20231003174958test

Detailed Logging at : /ahf/diag/oracle.ahf/data/repository/srdc_internalerror_collection_Tue_Oct_03_17_50_02_JST_2023_node_local/diagcollect_20231003174958_test.log

Waiting up to 120 seconds for collection to start
2023/10/03 17:50:08 JST : NOTE : Any file or directory name containing the string .com will be renamed to replace .com with dotcom
2023/10/03 17:50:08 JST : Collection Name : tfa_srdc_internalerror_Tue_Oct_03_17_50_00_JST_2023.zip
2023/10/03 17:50:08 JST : Getting list of files satisfying time range [10/03/2023 16:49:56, 10/03/2023 17:49:56]
2023/10/03 17:50:08 JST : Collecting Additional Diagnostic Information...
2023/10/03 17:50:19 JST : Collecting ADR incident files...
2023/10/03 17:50:22 JST : Executing TFA rdahcve with timeout of 600 seconds...
2023/10/03 17:52:00 JST : Executing IPS Incident Package Collection(s)...
2023/10/03 17:52:01 JST : No ADR Incidents for orcl covering period "2023-10-03 16:49:56" to "2023-10-03 17:49:56" were generated, IPS Pack will not be collected.
2023/10/03 17:52:01 JST : Executing SQL Script db_feature_usage.sql on orcl with timeout of 600 seconds...
2023/10/03 17:52:02 JST : Executing Collection for CRS with timeout of 1800 seconds...
2023/10/03 17:52:03 JST : Executing Collection for OS with timeout of 1860 seconds...
2023/10/03 17:52:05 JST : Completed Collection of Additional Diagnostic Information...
2023/10/03 17:52:10 JST : Completed Local Collection
2023/10/03 17:52:10 JST : Not Redacting this Collection ...
2023/10/03 17:52:10 JST : Collection completed on host: test
2023/10/03 17:52:10 JST : Completed collection of zip files.

.---------------------------------.
|        Collection Summary       |
+------+-----------+-------+------+
| Host | Status    | Size  | Time |
+------+-----------+-------+------+
| test | Completed | 185kB | 122s |
'------+-----------+-------+------'

Logs are being collected to: /ahf/diag/oracle.ahf/data/repository/srdc_internalerror_collection_Tue_Oct_03_17_50_02_JST_2023_node_local
/ahf/diag/oracle.ahf/data/repository/srdc_internalerror_collection_Tue_Oct_03_17_50_02_JST_2023_node_local/test.tfa_srdc_internalerror_Tue_Oct_03_17_50_00_JST_2023.zip

★/ahf/diag/oracle.ahf/data/repository/srdc_internalerror_collection_Tue_Oct_03_17_50_02_JST_2023_node_local/test.tfa_srdc_internalerror_Tue_Oct_03_17_50_00_JST_2023.zip が生成されました。こちらのファイルを Oracle 社 / Oracle サポートベンダーに共有するようになります。

特定の ORA エラーを調査したい場合

以下のコマンドを実行することで指定した ORA エラーの情報収集をすることが可能です。

$ tfactl diagcollect -srdc <ORA エラー番号>

▼実行例

$ ./tfactl diagcollect -srdc ora600
Enter the time of the ORA-00600 [YYYY-MM-DD HH24:MI:SS,<RETURN>=ALL] :
Enter the Database Name [Required for this SRDC] :

1. Oct/03/2023 17:53:20 JST: [orcl] ORA-00600: internal error code, arguments:[test2], [], [], [], [], [], [], [], [], [], [], []
2. Oct/03/2023 17:49:17 JST: [orcl] ORA-00600: internal error code, arguments:[test1], [], [], [], [], [], [], [], [], [], [], []

Please choose the event : 1-2 [1] 1
Selected value is : 1 ( Oct/03/2023 17:53:20 )

Components included in this collection: OS DATABASE NOCHMOS

Preparing to execute support diagnostic scripts.

Collecting data for local node(s).

TFA is using system timezone for collection, All times shown in JST.
Scanning files from Oct/03/2023 16:59:45 to Oct/03/2023 17:59:45

Collection Id : 20231003175948test

Detailed Logging at : /ahf/diag/oracle.ahf/data/repository/srdc_ora600_collection_Tue_Oct_03_17_59_51_JST_2023_node_local/diagcollect_20231003175948_test.log

Waiting up to 120 seconds for collection to start
2023/10/03 17:59:57 JST : NOTE : Any file or directory name containing the string .com will be renamed to replace .com with dotcom
2023/10/03 17:59:57 JST : Collection Name : tfa_srdc_ora600_Tue_Oct_03_17_59_50_JST_2023.zip
2023/10/03 17:59:57 JST : Getting list of files satisfying time range [10/03/2023 16:59:45, 10/03/2023 17:59:45]
2023/10/03 17:59:57 JST : Collecting Additional Diagnostic Information...
2023/10/03 18:00:04 JST : Collecting ADR incident files...
2023/10/03 18:00:09 JST : Executing TFA rdahcve with timeout of 600 seconds...
2023/10/03 18:00:17 JST : Executing IPS Incident Package Collection(s)...
2023/10/03 18:00:18 JST : No ADR Incidents for orcl covering period "2023-10-03 16:59:45" to "2023-10-03 17:59:45" were generated, IPS Pack will not be collected.
2023/10/03 18:00:18 JST : Executing SQL Script db_feature_usage.sql on orcl with timeout of 600 seconds...
2023/10/03 18:00:19 JST : Executing Collection for OS with timeout of 1800 seconds...
2023/10/03 18:00:22 JST : Completed Collection of Additional Diagnostic Information...
2023/10/03 18:00:24 JST : Completed Local Collection
2023/10/03 18:00:24 JST : Not Redacting this Collection ...
2023/10/03 18:00:25 JST : Collection completed on host: test
2023/10/03 18:00:24 JST : Completed collection of zip files.

.---------------------------------.
|        Collection Summary       |
+------+-----------+-------+------+
| Host | Status    | Size  | Time |
+------+-----------+-------+------+
| test | Completed | 158kB |  27s |
'------+-----------+-------+------'

Logs are being collected to: /ahf/diag/oracle.ahf/data/repository/srdc_ora600_collection_Tue_Oct_03_17_59_51_JST_2023_node_local
/ahf/diag/oracle.ahf/data/repository/srdc_ora600_collection_Tue_Oct_03_17_59_51_JST_2023_node_local/test.tfa_srdc_ora600_Tue_Oct_03_17_59_50_JST_2023.zip

★/ahf/diag/oracle.ahf/data/repository/srdc_ora600_collection_Tue_Oct_03_17_59_51_JST_2023_node_local/test.tfa_srdc_ora600_Tue_Oct_03_17_59_50_JST_2023.zip が生成されました。こちらのファイルを Oracle 社 / Oracle サポートベンダーに共有するようになります。

まとめ

今回は Oracle 社 / Oracle サポートベンダーに問い合わせる際に有用なツールの紹介となります。
RDS Custom for Oracle でも使えるツールとなりますが、AWS や弊社にお問い合わせの際にはアラートログやトレースファイルなどと併せてご提供頂く、もしくは、サポートから要求された場合に実施頂ければと思います。

佐藤 光晃 (記事一覧)

マネージドサービス部・テクニカルサポート課

2022年10月にサーバーワークスに入社しました。
前職でもテクニカルサポートに従事しており、情報収集に役立つサービスやツールに興味があります。2024 Japan AWS All Certifications Engineers になりました。