第
不使用綁定變量將增加語句分析
顯示會話等待的事件
CURSOR_SHARING
CURSOR_SHARING參數缺省為EXACT
優化器可供利用的信息可能減少
查詢輸出格式發生變化
查詢計劃更難評估
因此
TIMED_STATISTICS並不會對系統產生過大負擔
啟動跟蹤
SQL_TRACE可在系統或會話級激活
僅數值
數值+K/M
UNLIMITED
一般只需要設置
激活SQL_TRACE的幾種常用方式如下
ALTER SESSION SET SQL_TRACE=TRUE|FALSE
SYS
ALTER SESSION SET EVENTS
此外也可通過DBMS_SUPPORT包
隨著WEB服務方式的普及
CREATE OR REPLACE TRIGGER logon_trigger
AFTER LOGON ON DATABASE
BEGIN
IF ( USER=
EXECUTE IMMEDIATE
END IF;
END;/
使用並解析TKPROF輸出
SELECT a
WHERE a
AND b
此SPID就包含在跟蹤文件的文件名中
UNIX系統中
其他用法可以直接運行TKPROF查看
i
PARSE階段
EXECUTE階段
FETCH階段
ii
COUNT
CPU
ELAPSED
DISK
QUERY
CURRENT
ROWS
i
即執行語句時分析的次數
ii
可能沒有使用綁定變量
iii
說明花了很長時間等待一個事件
iv
沒有很好的使用批量提取
v
較難推斷
vi
SQL工作量很大
跟蹤文件中顯示的是真正執行的路徑
使用與解析原始跟蹤文件
ALTER SESSION SET EVENTS
N=
N=
N=
N=
文件頭含有時間
APPNAME mod=
mod
傳入DBMS_APPLICATION_INFO的模塊名
mh
模塊哈希值
act
傳入DBMS_APPLICATION_INFO的動作
ah
動作哈希值
Parsing in Cursor #%d dep=%d uid=%ld oct=%d lid=%ld tim=%ld hv=%ld ad=
Cursor #
游標號
len
下面SQL語句的長度
dep
SQL語句的遞歸(recursive)深度
uid
當前方案的用戶ID
alter session set current_schema來修改分析時的方案
oct
Oracle命令類型(Oracle Command Type)
lid
用於安全性檢查訪問權限的用戶ID
tim
定時器
ha
SQL語句的哈希ID
ad
V$SQLAREA中此SQL語句的ADDR列
EXEC Cursor#
Cursor #
游標號
c
CPU時間
e
流逝(Elapsed)時間
p
物理讀
cr
一致(QUERY模式)讀(邏輯I/O)
cu
當前(Current)模式讀(邏輯I/O)
mis
字典緩存中的游標不命中數
r
處理的行數
dep
SQL語句的遞歸深度
og
優化器目標
tim
定時器
與EXEC段類似的還有(即取代
PARSE
分析一個語句
FETCH
從一個游標取出數據行
UNMAP
用於顯示在不需要時從中間結果釋放臨時段
SORT UMAP
同UNMAP
WAIT Cursor#
Cursor#
游標號
nam
等待事件名
ela
流逝時間
p
等待事件特定的參數
以上為文件頭與ALTER SESSION出現的跟蹤信息
BIND段
cursor#
游標號
bind N
綁定位置
dty
數據類型
mxl
綁定變量最大長度
mal
最大數組長度(當使用數組綁定或BULK操作時)
scl
數值范圍(scale)
pre
精度(precision)
oacflg
內部標記
oacfl
內部標記續
size
緩沖區大小
offset
用於逐片(piecewise)綁定
bfp
綁定地址
bln
綁定緩沖區大小
avl
真實值長度
flag
內部標記
value
綁定值的字符串表示(如果可能
其中dty
此後我們可以看到WAIT段
對於ENQUEUE事件
CREATE OR REPLACE FUNCTION enqueue_decode(l_p
AS
l_str varchar
BEGIN
SELECT CHR(BITAND(l_p
CHR(BITAND(l_p
DECODE(BITAND(l_p
INTO l_str
FROM DUAL;
RETURN l_str;
END;
XCTEND(事務邊界)段記錄了提交等
rlbk
回滾標記
rd_only
只讀標記
STAT段記錄了運行時SQL真正的執行計劃
cursor #
游標號
id
執行計劃行號
cnt
查詢計劃中流經此步驟的行數
pid
此步驟的父ID
pos
執行計劃中的位置
obj
訪問的對象的對象ID
op
操作的文本描述
PARSE ERROR段
len
SQL語句長度
dep
SQL語句遞歸深度
uid
分析的方案
oct
Oracle命令類型
lid
權限方案ID
tim
定時器
err
ORA錯誤代碼
ERROR段
cursor #
游標數
err
ORA錯誤代碼
tim
定時器
V$EVENT_NAME
說明事件名和p
V$FILESTAT和V$TEMPSTAT
說明系統I/O概況
V$LOCK
說明系統鎖的情況
V$MYSTAT
說明當前會話的統計信息
CREATE VIEW MY_STATS AS
SELECT a
FROM V$STATNAME a
WHERE a
V$OPEN_CURSOR
記錄所有會話打開的游標
V$PARAMETER
說明了所有的init
V$SESSION
記錄數據庫的每個會話
V$SESSION_EVENT
說明會話的事件情況
V$SESSION_LONGOPS
記錄CBO認為執行時間超過
V$SESSION_WAIT
記錄所有正在等待某事件的會話及已等待時間
V$SESSTAT
類似V$MYSTAT
V$SESS_IO
說明會話的I/O信息
V$SQL和V$SQLAREA
記錄SQL信息
V$STATNAME
說明了統計號到統計名的映射
V$SYSSTAT
記錄實例層面的統計信息
V$SYSTEM_EVENT
記錄實例層面的等待事件信息
From:http://tw.wingwit.com/Article/program/Oracle/201311/16750.html