Oracle執行語句跟蹤

來源:互聯網
上載者:User

Oracle執行語句跟蹤

系統上的某個介面提交資料經常逾時(超過3秒),而我單獨在後台資料庫(Oracle)執行insert,只需要17ms。提交資料的用戶端沒有任何的調試日誌,只能通過跟蹤後台語句記錄實際調用過程中的資料庫執行時間。從而發現問題耗時最多的階段。

安裝dbms_support包
SQL> @?\rdbms\admin\dbmssupp.sqlSQL> grant execute on dbms_support to test;
找到需要跟蹤的會話,一個介面可能會建立多個會話,需要根據會話建立的時間來判斷真正需要跟蹤的會話。
SQL> alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';SQL> select sid,serial#,logon_time from v$session where username=&name and program=&program;輸入 name 的值:  'test'輸入 program 的值:  'test.exe'
使用start_trace_in_session進行跟蹤
SQL>exec dbms_support.start_trace_in_session(1157,59729,TRUE,TRUE);
開始跟蹤後,在用戶端進行對應的操作。使用stop_trace_in_session結束跟蹤
SQL> exec dbms_support.stop_trace_in_session(1157,59729);
使用以下的語句獲得trace檔案的位置。
     SELECT    d.VALUE           || '\'           || LOWER (RTRIM (i.INSTANCE, CHR (0)))           || '_ora_'           || p.spid           || '.trc' trace_file_name      FROM (SELECT p.spid              FROM v$mystat m, v$session s, v$process p             WHERE m.statistic# = 1 AND s.SID = &SID AND p.addr = s.paddr) 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 
用文字編輯器可以直接開啟trace檔案

圖中的這一段就是對一個語句的從解析到返回資料的整個過程,如果統計從開始請求到訊息返回用戶端的時間,直接將紅框中的兩個tim相減就可以了,11592216806504-11592199796058=17010446,其單位是1/1000000秒。若要單獨擷取執行時間,可以EXEC的TIM減掉PARSE的TIM,差值即為執行的時間。其它欄位的說明可以參照這個文檔。

另外也可以使用 TKPROF將trace檔案轉換成為執行計畫解析的文本。
D:\app\oracle\diag\rdbms\wxmesdb\wxmesdb\trace>tkprof wxmesdb_ora_6520.trc trace_1.txtTKPROF: Release 12.1.0.1.0 - Development on 星期三 1月 6 08:30:11 2016Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.

如所示,可以得到執行時間為17秒,與上一步中通過TIM相減的差值一致。

--EOF--

更多詳情見請繼續閱讀下一頁的精彩內容:

  • 1
  • 2
  • 下一頁
【內容導航】
第1頁:使用sql trace實現語句追蹤 第2頁:使用10046事件實現語句追蹤

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.