在 SAP 系統裡,「Trace(追蹤)」主要是用來:
記錄系統執行過程中的細節,用來除錯、效能分析、問題定位。
有點像:
- Windows 的 Event Log
- SQL Server Profiler
- Oracle Trace
- Linux strace / logs
但 SAP 的 Trace 種類非常多,因為 SAP 本身分成:
- ABAP
- HANA DB
- RFC
- Gateway
- ICM
- Work Process
- SQL
- Authorization
- Update
- Enqueue
- ST05 / ST12 / SAT 等工具
常見 SAP Trace 用途
1. 查效能問題
例如:
- 為何某交易碼很慢?
- 哪個 SQL 很慢?
- 是否 Full Table Scan?
- RFC 卡住?
常用:
- ST05 SQL Trace
- ST12
- SAT
2. 查 ABAP 程式問題
例如:
- 哪個 FUNCTION 被呼叫?
- LOOP 太多?
- SELECT * 太重?
- 程式邏輯跑太久?
常用:
- SAT Runtime Analysis
- SE30
3. 查權限問題
例如:
- 為何使用者被拒絕?
- 缺哪個 Authorization Object?
常用:
- SU53
- ST01 Authorization Trace
4. 查 RFC / 外部連線問題
例如:
- SAP 與外部系統連不上
- RFC timeout
- IDoc 失敗
常用:
- SM59 Trace
- dev_rfc trace
5. 查 HANA SQL 問題
例如:
- 哪個 SQL 吃 CPU?
- 哪個 Query 爆 Memory?
- Column Store 慢?
常用:
- HANA Expensive Statements
- SQL Trace
- PlanViz
你常看到的 Trace 類型
ST05 — SQL Trace
最經典。
可以看到:
- SQL 語句
- 執行時間
- 使用索引
- Table Scan
- RFC
- Buffer 使用情況
SAP BASIS / ABAP 很常用。
ST12
ST05 + ABAP Trace 整合版。
很強。
通常正式分析都用這個。
SAT
ABAP Runtime Analysis。
分析:
- 哪個 method 最慢
- 哪個 function 花最多時間
- internal table 問題
ST01
System Trace。
可追:
- Authorization
- RFC
- Kernel call
但很吃資源。
HANA Trace
在 SAP HANA Studio 或 HANA Cockpit 裡面也很多:
- Indexserver trace
- Nameserver trace
- SQL trace
- Performance trace
trace file 通常在:
/usr/sap/<SID>/HDB<instance>/<host>/trace/
常見:
indexserver_alert_<SID>.trc
indexserver_<host>.trc
為何不要長時間開 Trace?
因為:
- 很吃 CPU
- 很吃 IO
- trace 檔會爆大
- 可能影響正式系統效能
所以通常:
- 開 trace
- 重現問題
- 關 trace
- 分析 log
BASIS 常見情境
使用者說:
「VA03 很慢」
BASIS 可能:
- ST12 開 trace
- 請使用者重跑
- 分析:
- SQL
- RFC
- ABAP
- Lock
- Buffer
你現在學 HANA/BASIS 的話
你之後一定會碰:
- ST05
- ST12
- SAT
- SM50
- dev_w0
- indexserver trace
- HDB info
- expensive statement trace
這些幾乎是 BASIS 日常。