国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

了解raw trace文件的各項內容

2024-07-21 02:33:20
字體:
來源:轉載
供稿:網友

  今天瀏覽metalink,看到這篇InterPReting Raw SQL_TRACE,比較老的一篇文章了,但是確實很有用,所以決定大略翻譯一下吧。
  
  我們知道有幾種方法可以得到一個SQL語句執行時后臺的trace文件,一個是用SQL_TRACE,一個是用DBMS_SUPPORT包或者DBMS_SYSTEM包,還有一種就是直接使用10046 event。
  
  使用10046 event的方法大致如下:
  
  alter session set events '10046 trace name context forever, level 12';
  
  your sql statement...
  
  alter session set events '10046 trace name context off';
  
  其中的level有1,4,8,12幾個選項,其中1相當于設置SQL_TRACE=TRUE之后的結果,4包括1的結果和綁定變量的實際值,8包括1的結果和等待事件的情況,12則同時包含1的結果,綁定變量的實際值和等待事件情況,所以可以說level 12是最為具體的trace了。
  
  同時我們也知道,對于trace結果,Oracle提供了tkprof實用程序用來格式化trace文件,提供一份更輕易讀懂的trace結果。
  
  那么為什么還要直接讀取trace文件呢?最重要的是tkprof的結果是不包含綁定變量值的,同時也不包括真正的SQL執行順序,而trace文件中我們則可以看到按照時間排列的parse,binds,executes,fetch等等,這在某西場合下是很有用處的。還有就是,假如你能夠直接讀取這些讓人看得眼暈的trace,是不是會有一種很爽,很大師的感覺:-)
  
  當然假如我們要根據一些標準(比如CPU時長,磁盤讀取量等)進行trace中的SQL排序,那么tkprof是我們唯一的選擇,可以參看coolyl(丫現在迷戀WOW,已經不理朝政了:-D)的Tkprof工具介紹和分析。
  
  下面是metalink中的這篇文章的大體翻譯,大部分名詞用英文反而更好,就不強加翻譯了,相信大家都看得懂。當然也是比較懶的原因:-)
  
  文本總結了trace結果原始輸出文件中的內容。
  
  ----------------------------------------------------------------------------
  APPNAME mod='%s' mh=%lu act='%s' ah=%lu
  ----------------------------------------------------------------------------
  
  APPNAME:application name setting。在Oracle 7.2和以上版本中出現。這個名稱可以由DBMS_APPLICATION_INFO包來設定。
  mod:Module name
  mh:Module hash value
  act:Action
  ah:Action hash value
  
  比如:APPNAME mod='SQL*Plus' mh=3669949024 act='' ah=4029777240
  
  ----------------------------------------------------------------------------
  PARSING IN CURSOR # len=X dep=X uid=X oct=X lid=X tim=X hv=X ad='X'
  statement....
  END OF STMT
  ----------------------------------------------------------------------------
  
  CURSOR:Cursor number
  len :Length of SQL statement,SQL語句的長度
  dep :Recursive depth of the cursor,當前SQL語句的遞規深度,假如為0則表示是用戶提交的SQL,為1則是由于用戶SQL而導致Oracle后臺自己執行的SQL,為2則是由1級SQL繼續誘發的下一級SQL。
  uid :Schema user id of parsing user
  oct :Oracle command type.
  lid :Privilege user id.
  tim :Timestamp。在Oracle9i之前單位是1/100秒,9i則是1/1,000,000秒。利用這個值可以計算一個SQL執行了到底多長時間。這個值就是當前行被寫入trace文件時數據庫V$TIMER視圖的值。
  hv :Hash id.
  ad :SQLTEXT address,SQLTEXT的地址,跟V$SQLAREA和V$SQLTEXT視圖中的ADDRESS字段值相等。
  statement :The actual SQL statement being parsed.
  
  ----------------------------------------------------------------------------
  PARSE ERROR #%d:len=%ld dep=%d uid=%ld oct=%d lid=%ld tim=%lu err=%d
  statement....
  ----------------------------------------------------------------------------
  
  PARSE ERROR :在Oracle 7.2以上版本中解析的錯誤會寫入trace文件中。

  len :Length of SQL statement.
  dep :Recursive depth of the statement
  uid :User id.
  oct :Oracle command type (if known).
  lid :Privilege user id.
  tim :Timestamp.
  err :Oracle error code (e.g. ORA-XXXXX) reported
  statement :The SQL statement that errored.
  
  ----------------------------------------------------------------------------
  PARSE #:c=0,e=0,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,tim=0
  EXEC #:c=0,e=0,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,tim=0
  FETCH #:c=0,e=0,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,tim=0
  UNMAP #:c=0,e=0,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,tim=0
  ----------------------------------------------------------------------------
  
  PARSE :Parse a statement. 解析一個SQL
  EXEC :Execute a pre-parsed statement. 執行已經解析完畢的SQL
  FETCH :Fetch rows from a cursor. 從游標中得到數據,通常指select返回記錄
  UNMAP :假如游標使用了臨時表(temporary table), 當游標關閉的時候將會看到UNMAP
  c :CPU time (100th's of a second in Oracle7 ,8 and 9).
  e :Elapsed time (100th's of a second Oracle7, 8. Microseconds in Oracle 9 onwards).
  p :Number of physical reads.
  cr :Number of buffers retrieved for CR reads.
  cu :Number of buffers retrieved in current mode.
  mis :Cursor missed in the cache.
  r :Number of rows processed.
  dep :Recursive call depth (0 = user SQL, >0 = recursive).
  og :Optimizer goal: 1=All_Rows, 2=First_Rows, 3=Rule, 4=Choose
  tim :Timestamp (large number in 100ths of a second).
  
  比如:FETCH #2:c=0,e=106,p=0,cr=3,cu=0,mis=0,r=1,dep=1,og=4,tim=6005498548671
  
  ----------------------------------------------------------------------------
  ERROR #%d:err=%d tim=%lu
  ----------------------------------------------------------------------------
  
  執行或者fetch之后出現的SQL Error
  err :Oracle error code (e.g. ORA-XXXXX) at the top of the stack.
  tim :Timestamp.
  
  ----------------------------------------------------------------------------
  STAT # id=N cnt=0 [pid=0 pos=0 obj=0 op='SORT AGGREGATE ']
  ----------------------------------------------------------------------------
  
  CURSOR的執行計劃.
  CURSOR :Cursor which the statistics apply to.
  id :Line of the eXPlain plan which the row count applies to (從1開始).
  cnt :Number of rows for this row source.
  pid :Parent id of this row source.
  pos :Position in explain plan.
  obj :Object id of row source (if this is a base object).
  op : The row source access Operation.
  
  比如:
  
  STAT #2 id=2 cnt=0 pid=1 pos=1 obj=510 op='TABLE ACCESS BY INDEX ROWID OBJECT_USAGE (cr=2 r=0 w=0 time=83 us)'
  STAT #2 id=3 cnt=1 pid=2 pos=1 obj=511 op='INDEX RANGE SCAN I_STATS_OBJ# (cr=1 r=0 w=0 time=43 us)'
  
  ----------------------------------------------------------------------------
  XCTEND rlbk=%d rd_only=%d
  ----------------------------------------------------------------------------
  
  XCTEND是事務結束的標志.
  rlbk :1 if a rollback was performed,
0 if no rollback (commit).
  rd_only :1 if transaction was read only, 0 if changes occurred.
  
  ----------------------------------------------------------------------------
  BINDS #%d:
  bind 0: dty=2 mxl=22(22) mal=00 scl=00 pre=00 oacflg=03 oacfl2=0 size=24 offset=0
  bfp=02fedb44 bln=22 avl=00 flg=05
  value=10
  ----------------------------------------------------------------------------
  
  BIND :Variables bound to a cursor.
  bind N :The bind position being bound.
  dty :Data type.
  mxl :Maximum length of the bind variable (private max len in paren).
  mal :Array length.
  scl :Scale.
  pre :Precision.
  oacflg :Special flag indicating bind options
  oacflg2 :Continuation of oacflg
  size :Amount of memory to be allocated for this chunk
  offset :Offset into this chunk for this bind buffer
  bfp :Bind address.
  bln :Bind buffer length.
  avl :Actual value length (array length too).
  flg :Special flag indicating bind status
  value :The actual value of the bind variable.
  
  比如:
  
  BINDS #4:
  bind 0: dty=2 mxl=22(22) mal=00 scl=

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沽源县| 顺平县| 山东| 怀安县| 龙州县| 阿拉尔市| 甘泉县| 绩溪县| 尼木县| 余庆县| 平顺县| 深州市| 延安市| 太谷县| 泸定县| 余干县| 滁州市| 五峰| 常宁市| 绥芬河市| 石柱| 霍城县| 同江市| 韶山市| 尼木县| 蒲城县| 莱阳市| 泾川县| 疏附县| 宁城县| 陕西省| 汕头市| 兰西县| 贵定县| 阳谷县| 遵义县| 永寿县| 柳州市| 新龙县| 聊城市| 盖州市|