性能瓶頸 80%+ 源自後台應用與資料庫。Spotlight/Enterprise Manager 發現慢 SQL 後,**Trace + TKPROF 是鐵證**,可量化 Parse/Execute/Fetch 各階段耗時、等待事件、I/O 統計,指導精準優化。
sqlplus /nolog → CONN / AS SYSDBASHOW PARAMETER sql_trace 確認現狀 (預設 FALSE)。ALTER SESSION SET SQL_TRACE = TRUE (Session 級) 或 ALTER SYSTEM SET SQL_TRACE = TRUE (全庫,慎用)。TIMED_STATISTICS=TRUE (收集耗時) → MAX_DUMP_FILE_SIZE=UNLIMITED (防截斷) → USER_DUMP_DEST 確認輸出目錄。SHOW PARAMETER user_dump_dest 定位 .trc 檔案 (命名格式 SID_ora_PID.trc)。ALTER SESSION SET SQL_TRACE = FALSE **立即關閉**,避免持續開銷。tkprof input.trc output.txt [EXPLAIN=user/pass] [TABLE=schema.temp_table] [SYS=NO] [SORT=EXEELA]
關鍵參數:
EXPLAIN:在輸出中附帶執行計畫。TABLE:指定暫存表用於 EXPLAIN PLAN,避免污染業務表。SYS=NO:過濾 SYS 遞迴 SQL,聚焦應用 SQL。SORT:排序欄位,常用 EXEELA (執行經過時間降序)、FCHELA (Fetch 經過時間)、PRSELA (解析經過時間)。| 欄位 | 含義 |
|---|---|
| COUNT | OCI 呼叫次數 (Parse/Execute/Fetch) |
| CPU | CPU 耗時 (秒) |
| ELAPSED | 牆鐘時間 (秒) = 用戶響應時間 |
| DISK | 物理讀區塊數 |
| QUERY | 一致性獲取 (邏輯讀) |
| CURRENT | 當前模式獲取 (DML 相關) |
| ROWS | 處理行數 |