SAP
SAP ST05の使い方:SQLトレースの取得方法と結果の確認手順
SAP GUIのトランザクションST05を使ってSQLトレースを取得し、対象ユーザーの処理時間やSQL文を確認する手順を解説します。トレース条件、開始・停止、結果分析、負荷を抑える運用上の注意点をまとめています。
SAPの処理が遅いとき、原因がABAPプログラム、データベースアクセス、不要な検索条件のいずれにあるかを切り分けるには、処理中に実行されたSQLを確認します。トランザクションST05は、指定したユーザーや処理に対するSQLトレースを取得するための代表的な手段です。
ST05では、トレースの開始、対象の限定、停止、結果表示までをSAP GUI上で実施できます。対象を適切に絞り込むことで、SQL文、実行回数、処理時間、取得レコード数などを調査できます。特に本番環境では、短時間かつ明確な再現手順で取得することが重要です。
ST05で確認できること
ST05は、ユーザー操作やバッチ処理に伴うデータベースアクセスを記録します。結果には、実行されたSQL文、処理時間、実行回数、読み取られたレコード数などが表示されます。これらを使うと、同じSQLが大量に繰り返されていないか、検索範囲が広すぎないか、時間のかかる処理がどこにあるかを確認できます。
主な用途は次のとおりです。
- トランザクション実行時のSQL処理を確認する
- 特定ユーザーの処理だけを対象にする
- SQLの実行回数と合計時間を調べる
- テーブルアクセスや検索条件を確認する
- ABAP処理とデータベース処理の切り分けを行う
ST05は、画面上の応答が遅いという現象を、データベースアクセスの観点から調べるときに役立ちます。アプリケーションの処理全体を確認したい場合は、関連するABAP処理やワークプロセスの情報も併せて確認します。
事前に決めるトレース条件
トレースを開始する前に、対象ユーザー、再現操作、開始時刻、終了条件を決めます。対象が曖昧なまま全体トレースを取得すると、結果が大量になり、目的のSQLを見つけにくくなります。
最初に次の情報を整理してください。
| 確認項目 | 内容 |
|---|---|
| 対象ユーザー | 問題を再現するSAPユーザー |
| 対象処理 | トランザクション、帳票、保存処理など |
| 再現手順 | 検索条件や画面操作を含む具体的な手順 |
| 取得時間 | トレース開始から停止までの時間 |
| 比較条件 | 正常時と異常時の操作や検索条件 |
トレース対象のユーザーが明確なら、そのユーザーを指定して取得します。複数の利用者が同じ時間帯に処理する環境では、ユーザー指定が特に有効です。バッチ処理を調べる場合は、対象ジョブの実行時間と実行ユーザーを確認してから取得します。
トレースは、問題が発生する操作の直前に開始し、操作が完了した直後に停止します。検索画面を開いた状態で開始し、対象操作を一度だけ再現すると、結果を整理しやすくなります。
ST05でSQLトレースを開始する
- SAP GUIでトランザクションコード
ST05を実行します。 - SQLトレースの画面で、対象ユーザーや必要なトレース条件を指定します。
- トレース対象を確認し、トレースを開始します。
- 別のセッション、または対象ユーザーのセッションで問題の操作を再現します。
- 操作が完了したら、ST05に戻ってトレースを停止します。
対象ユーザーを指定する場合は、実際に処理を実行するユーザーを選びます。自分のユーザーで操作を再現するなら、自分のユーザーを対象にすると結果を分離しやすくなります。対象を指定しない広範囲の取得は、検証環境や短時間の調査に限定します。
トレース開始後に、対象処理以外の検索、一覧表示、保存操作を行うと、それらのSQLも結果に含まれます。記録された内容を簡潔にするため、トレース中の操作を再現手順に限定してください。
SAPトランザクションコード一覧では、ST05を含むトランザクションコードの用途を一覧で確認できます。運用手順書に調査用コードを整理するときにも利用できます。
トレース結果を表示する
トレースを停止した後、ST05の結果表示機能から取得内容を開きます。結果一覧では、SQL文や処理時間を確認し、時間の大きい処理、実行回数の多い処理、取得レコード数が多い処理を優先して調べます。
表示時は、次の観点で絞り込みます。
- 処理時間が大きいSQL
- 実行回数が多いSQL
- 大量のレコードを読み取るSQL
- 同じテーブルに対して繰り返し実行されるSQL
- 問題の操作と同じ時刻に実行されたSQL
合計時間だけでなく、1回あたりの時間と実行回数を分けて確認します。1回の処理が重いSQLと、短時間のSQLを何度も実行する処理では、改善の方向が異なります。
結果を保存できる場合は、取得日時、対象ユーザー、再現手順、検索条件をファイル名や記録票に残します。正常時と異常時の結果を比較すると、SQLの実行回数や処理時間の差を説明しやすくなります。
SQLトレース結果の読み方
SQL文を確認するときは、まず対象テーブルとWHERE条件を見ます。条件が十分に限定されているか、同じテーブルへのアクセスが繰り返されていないか、処理の目的に対して不要な列や行を取得していないかを確認します。
次に、実行回数と処理時間を関連付けます。実行回数が多い場合は、ABAP側のループ処理や同一データの繰り返し取得が関係している可能性があります。1回の処理時間が大きい場合は、検索条件、データ量、インデックス、結合処理などを調査します。
SQLの結果だけで改善策を決めず、次の情報と照合します。
- 対象ABAPプログラムや処理ステップ
- 実行した選択条件
- データ量と対象期間
- 正常時との実行回数の差
- 同じ時間帯のシステム負荷
ST05はSQLアクセスの事実を確認するためのトレースです。SQLの変更、インデックスの追加、ABAPコードの修正は、開発・検証環境で影響を確認してから本番環境へ適用します。
SE16Nの使い方を参照すると、対象テーブルのデータ量や値を確認する際の補助になります。テーブル定義や項目の意味を確認する場合は、SE11の使い方も関連します。
トレース取得時の負荷を抑える
SQLトレースは、対象処理の調査に必要な範囲で短時間だけ取得します。広い範囲を長時間記録すると、トレースデータが増加し、結果の解析やシステム負荷に影響します。
本番環境では、次の運用を基本にします。
- 利用者と業務担当者に取得時間を共有する。
- 再現手順を事前に確認する。
- 対象ユーザーを限定する。
- 操作を一度だけ再現する。
- 完了直後にトレースを停止する。
- 取得後に不要なトレースデータを整理する。
トレース開始後に処理が長時間停止した場合は、業務影響を確認し、必要に応じて速やかに停止します。調査目的が達成できる最小の範囲で取得することが、安定した運用につながります。
ST05で問題を切り分ける
画面操作が遅い場合、ST05でSQL処理時間が大きいかを確認します。SQL処理が短いにもかかわらず画面応答が遅い場合は、ABAP処理、アプリケーションサーバー、ネットワーク、ロック、外部連携など別の要因を調べます。
SQL処理時間が大きい場合は、対象SQLの実行回数、検索条件、テーブルのデータ量を整理します。単一のSQLだけでなく、処理全体で発生しているSQLの組み合わせを見ることも重要です。
トレース結果をチームへ共有するときは、少なくとも次の項目を添付します。
- 取得日時とシステム識別情報
- 対象ユーザー
- 実行したトランザクションまたは処理名
- 再現手順と選択条件
- 問題が発生した時刻
- 処理時間と実行回数が大きいSQL
- 正常時との比較結果
SU53の使い方は権限エラーの確認に関する記事です。ST05でSQLアクセスが確認できても、業務処理が失敗している原因が権限にある場合は、権限チェック結果も併せて確認します。
よくある取得ミスと対処
トレースを開始したが対象処理が記録されない
対象ユーザーと実際の実行ユーザーが一致しているか確認します。複数のSAP GUIセッションを開いている場合は、どのセッションでトレース対象の処理を実行したかを確認します。開始後に対象処理を再実行することも必要です。
結果が多すぎてSQLを特定できない
対象ユーザーを限定し、トレース時間を短くします。問題の操作以外の画面遷移や検索を避け、再現手順を一つの処理に絞ります。結果表示では処理時間と実行回数を基準に並べ替えます。
SQLの時間が大きいが原因を判断できない
SQL単体の時間、実行回数、読み取り量、対象データの範囲を分けて確認します。正常時の同じ操作と比較し、選択条件やデータ量が変わっていないかを調べます。必要に応じてABAP担当者やデータベース担当者と結果を共有します。
トレース停止を忘れた
ST05を開き、対象のトレースが継続していないか確認して停止します。停止後は取得結果を必要な期間だけ保管し、運用ルールに従って不要なデータを整理します。
実務で使う確認チェックリスト
ST05を使う前後で、次の項目を確認します。
- 問題が発生する操作を再現できる
- 対象ユーザーが明確になっている
- トレース開始前に時刻を記録している
- 対象操作以外の操作を避けている
- 操作直後にトレースを停止している
- SQLの処理時間と実行回数を確認している
- 正常時との比較条件をそろえている
- 本番環境での変更を結果確認後に判断している
ST05の結果は、単なるSQL一覧ではなく、処理のどの部分で時間が使われているかを判断する材料です。対象を絞り、再現条件をそろえ、SQLの時間と回数を分けて確認すると、原因調査を効率化できます。