日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

cs oracle语句跟踪,Oracle执行语句跟踪 使用sql trace实现语句追踪

發布時間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cs oracle语句跟踪,Oracle执行语句跟踪 使用sql trace实现语句追踪 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、SQL_Plus自動跟蹤:

set autotrace on explain????????? // 顯示執行計劃

set autotrace traceonly explain // 僅顯示執行計劃

set autotrace on?????????????? ? ?? // 顯示執行計劃、和統計數字

set timing on???????????????????? ? ? // 顯示已用時間

set autotrace traceonly ? ? ? ?? //顯示執行計劃、和統計數字;但不顯示sql結果

2、還可以利用10046事件來跟蹤SQL,它比SQL_TRACE提供更詳細的信息.它有LEVEL 1,4,8,12四個級別.

其中Level 1 相當于 SQL_TRACE.下面是10046使用的例子

alter session set?events?'10046?trace?name?context?forever,?level?4';?--跟蹤SQL語句并顯示綁定變量

alter session set?events?'10046?trace?name?context?forever,?level?8';?--跟蹤SQL語句并顯示等待事件

10046:SQL到底是如何執行的。

10053:SQL為什么要這樣執行。

SQL> alter session set events '10046 trace name context forever,level 4';

Session altered.

.... some SQL statements

SQL> alter session set events '10046 trace name context off';

Session altered.

3、SQL> alter session set sql_trace=true;

SQL>alter session set sql_trace=false;

*************************************************************************************************

系統上的某個接口提交數據經常超時(超過3秒),而我單獨在后臺數據庫()執行insert,只需要17ms。提交數據的客戶端沒有任何的調試日志,只能通過跟蹤后臺語句記錄實際調用過程中的數據庫執行時間。從而發現問題耗時最多的階段。

安裝dbms_support包

SQL> @?\rdbms\admin\dbmssupp.sql

SQL> 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.txt

TKPROF: Release 12.1.0.1.0 - Development on 星期三 1月 6 08:30:11 2016 Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.

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

--EOF--

總結

以上是生活随笔為你收集整理的cs oracle语句跟踪,Oracle执行语句跟踪 使用sql trace实现语句追踪的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。