工具04_SQL Trace/DBMS_SYSTEM

2014-06-25 Created By BaoXinjianweb

1、摘要sql


SQL TRACE是Oracle提供的用於進行SQL跟蹤的手段,是強有力的輔助診斷工具。在平常的數據庫問題診斷和解決中,SQL TRACE是很是經常使用的方法。數據庫

通常,一次跟蹤能夠分爲如下幾步:session

1. 界定須要跟蹤的目標範圍,並使用適當的命令啓用所需跟蹤。工具

2. 通過一段時間後,中止跟蹤。此時應該產生了一個跟蹤結果文件。spa

3. 找到跟蹤文件,並對其進行格式化,而後閱讀或分析。3d

另文已介紹了其餘的跟蹤工具DBMS_PROFILER, Form Trace, Request Trace等code

 

2、明細分析orm


案例: 跟蹤本身的Session中的SQL操做ci

Step1. 查詢本身Session的SID和Serial#

Step2. 啓動 SQL Trace節點

begin
  dbms_system.set_SQL_TRACE_in_session(497,13413,true);
end;

 Step3. 在啓動SQL Trace節點中後,進行SQL操做,系統會自動記錄該Session中全部的SQL操做記錄,直相當閉

Step4. 關閉 SQL Trace節點

begin
  dbms_system.set_sql_trace_in_session(497,13413,false);
end;

Step5. 查看所產生的Trace文件目錄


    
    
    
    
SELECT d.VALUE || '' || LOWER(RTRIM(i.instance, CHR(0))) || '_ora_' || p.spid || '.trc' trace_file_name FROM (SELECT p.spid FROM v$sesstat m, v$session s, v$process p WHERE m.statistic# = 1 AND s.sid = m.sid AND p.addr = s.paddr AND s.sid = 581) p, (SELECT t.instance FROM v$thread t, v$parameter v WHERE v.name = 'thread' AND (v.VALUE = 0 OR t.thread# = TO_NUMBER(v.VALUE))) i, (SELECT VALUE FROM v$parameter WHERE NAME = 'user_dump_dest') d;

Step6. Download該trace

Step7. 在該Trace文件中,能夠找到SQL Trace啓動和關閉節點之間的SQL,以下圖

Step8. 以後也可經過格式化工具tkprof將Trace文件進行格式轉化,變成易讀文件

tkprof VIS_ora_18295.trc VIS_ora_18295.prf EXPLAIN=jvi2/jvi2_dev SYS=NO SORT=EXECPU,FCHCPU

此步另文已介紹,略過

 

Thanks and Regards



相關文章
相關標籤/搜索