国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
SQL_TRACE的基本用法

SQL_TRACE的基本用法

(2007-08-27 11:44:15)
標(biāo)簽:

IT/科技

分類: 知識天下

   scott用戶獲取會話權(quán)限:

grant alter session to scott;

sql_trace是oracle提供的一個非常好的跟蹤工具,主要用來檢查數(shù)據(jù)庫的異常情況,通過跟蹤數(shù)據(jù)庫的活動,找到有問題的語句。

一、概述:
   SQL_TRACE是Oracle的一個非常強大的工具。打開SQL_TRACE就可以逐步捕獲任何一個會話的數(shù)據(jù)庫活動,或者捕獲整個數(shù)據(jù)庫的活動,并將數(shù)據(jù)庫活動記錄成跟蹤文件。每次使用完之后需要關(guān)閉跟蹤,否則會降低系統(tǒng)的性能。
   SQL_TRACE可以幫助診斷許多問題,其中包括:

二、用法:
   1、文件跟蹤的分類:
     跟蹤DBA可以采用兩種方式進行跟蹤:
    .跟蹤整個數(shù)據(jù)庫實例。只需要簡單的修改參數(shù)文件(pfile/spfile)參數(shù)SQL_TRACE = TRUE,然后重新啟動數(shù)據(jù)庫即可。在全局啟用SQL_TRACE會導(dǎo)致所有進程的活動被跟蹤,包括后臺進程及所有用戶進程,這樣也會數(shù)據(jù)庫導(dǎo)致性能下降比較明顯。
    .會話級跟蹤。SQL_TRACE的通常使用方式是僅跟蹤一個會話。被跟蹤的會話可以是您自己的,也可以是其它用戶的會話。如果是自己的會話,只需要在SQL*PLUS中運行一下命令即可:
     SQL> alter session set sql_trace = true;
     類似的如果取消對會話的跟蹤,運行一下命令:
     SQL> alter session set sql_trace = false;
     
     如果需要跟蹤一個特定的會話,首先需要獲取會話的SID和Serial#,這些信息可以在視圖V$SESSION中獲得,一旦知道了這兩個參數(shù),就可以運行一下命令:
     SQL> executeSYS.dbms_system.set_sql_trace_in_session(13,9,true);
     同樣也可以使用這個過程關(guān)閉會話跟蹤:
    SQL>execute SYS.dbms_system.set_sql_trace_in_session(13,9,false);
 
  2、跟蹤文件的位置:
    一旦為會話激活了SQL_TRACE,ORACLE就會在udump管理區(qū)創(chuàng)建跟蹤文件,文件的目標(biāo)位置由參數(shù)user_dump_dest來確定。每個操作都不會覆蓋原來的文件,新的跟蹤記錄將會被追加到文件末尾。通常情況下,可以根據(jù)文件的修改時間判斷目錄下哪個文件是最新的文件。
   SQL> show parameteruser_dump_dest;
  
  NAME                                TYPE       VALUE
  ------------------------------------ -----------------------------------------
  user_dump_dest                      string     d:oracleadminora9iudump
  
  也可以通過以下SQL來確定文件名:
    
    select d.value||''||lower(rtrim(i.instance,chr(0)))||'_ora_'||p.spid||'.trc'trace_file_name 
   from 
   (
    selectp.spid     
     from sys.v$mystat m,sys.v$session s,sys.v$process p
    where m.statistic# = 1
      and s.sid = m.sid
      and p.addr = s.paddr
   ) p,
   (
   select t.instance
    from sys.v$thread t,sys.v$parameter 
    where v.name= 'thread'
     and ( v.value = 0 or t.thread# = to_number(v.value) )
   ) i, 
   (
   select value fromsys.v$parameter where name = 'user_dump_dest'
   ) d ;

  TRACE_FILE_NAME
  --------------------------------------------------------------------------------
  
  d:oracleadminora9iudumpora9i_ora_2060.trc  
 
 3、計時信息:
   為了最大限度的利用跟蹤文件,應(yīng)該打開計時標(biāo)志,通過參數(shù)TIMED_STATISTICTS=TRUE進行設(shè)置,這樣可以對每個SQL語句的執(zhí)行時間等進行記錄,這個功能對系統(tǒng)性能的負擔(dān)很小。
   打開會話的計時信息:
    SQL>alter session set timed_statistics = true ;
   打開數(shù)據(jù)庫系統(tǒng)的計時信息
    SQL>alter system set timed_statistics = true ;
 
 4、TKPROF:
   通過前三步的設(shè)置已經(jīng)知道如何生成SQL跟蹤文件了,ORACLE生成的跟蹤文件閱讀起來很困難(也就是易讀性很差),可以看跟蹤文件的一部分,執(zhí)行以下SQL語句:
   SQL> select count(*) fromsys_dept;
  
   COUNT(*)
   ----------
         16   
  執(zhí)行完后,查看跟蹤文件中這個語句的內(nèi)容如下:
   
    PARSING INCURSOR #1 len=31 dep=0 uid=62 oct=3 lid=62 tim=14727407741hv=2200985491 ad='128e3820'
   select count(*) fromsys_dept
   END OF STMT
   PARSE#1:c=0,e=16348,p=1,cr=31,cu=0,mis=1,r=0,dep=0,og=4,tim=14727407735
   EXEC#1:c=0,e=24,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,tim=14727407814
   FETCH#1:c=0,e=15641,p=5,cr=7,cu=0,mis=0,r=1,dep=0,og=4,tim=14727423807
   =====================
   PARSING IN CURSOR #2 len=61dep=0 uid=62 oct=47 lid=62 tim=14727508742 hv=3517412409ad='12bbcff4'
   begin :id :=sys.dbms_transaction.local_transaction_id; end;
   END OF STMT
   PARSE#2:c=0,e=122,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,tim=14727508735
   EXEC#2:c=0,e=144,p=0,cr=0,cu=0,mis=0,r=1,dep=0,og=4,tim=14727508945
   =====================
   PARSING IN CURSOR #2 len=61dep=0 uid=62 oct=47 lid=62 tim=14727587562 hv=3517412409ad='12bbcff4'
   begin :id :=sys.dbms_transaction.local_transaction_id; end;
   END OF STMT
   PARSE#2:c=0,e=121,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,tim=14727587556
   EXEC#2:c=0,e=97,p=0,cr=0,cu=0,mis=0,r=1,dep=0,og=4,tim=14727587721
  
  這樣不僅閱讀麻煩,并且也有很多內(nèi)容難以理解。ORACLE提供了一個格式化跟蹤文件的工具- TKPROF( Transient Kernel Profiler),通過這個工具能將SQL文件轉(zhuǎn)化為分析人員容易理解的格式。
   
   一般TKPROF工具的使用的簡單方法,只用到了兩個關(guān)鍵字:跟蹤文件名和輸出文件名(TKPROF的具體請參閱其他資料):
    TKPROF<trace file> <output file>
   
   在命令行模式下運行(數(shù)據(jù)庫在window2000下安裝的)
    C:>tkprofD:oracleadminora9iudumpora9i_ora_2060.trc d:report.txt
   
   執(zhí)行完后,在reprot.txt中查詢剛才的語句內(nèi)容如下:
    selectcount(*)
   from
   sys_dept
 
 
  call    count      cpu   elapsed      disk     query   current       rows
   -------------  -------- ---------- ---------- --------------------  ----------
  Parse           0.00      0.01                31                  0
  Execute         0.00      0.00                                  0
  Fetch           0.00      0.01                                  1
   -------------  -------- ---------- ---------- --------------------  ----------
  total           0.00      0.03                38                  1
  
   Misses in library cache duringparse: 1
   Optimizer goal: CHOOSE
   Parsing user id:62     
 
   通過設(shè)置tkprof的關(guān)鍵字[EXPLAIN=<username/password>],也可以在跟蹤文件中增加SQL語句的執(zhí)行計劃:
  C:>tkprofD:oracleadminora9iudumpora9i_ora_2060.trc d:report.txtexplain=test/test;  
  
 ********************************************************************************
 
  select count(*)
  from
   sys_dept
 
 
 call    count      cpu   elapsed      disk     query   current       rows
  ------- ------  ------------------ ---------- ---------- ---------- ----------
 Parse           0.00      0.01                31                  0
 Execute         0.00      0.00                                  0
 Fetch           0.00      0.01                14                  2
  ------- ------  ------------------ ---------- ---------- ---------- ----------
 total           0.00      0.03                45                  2
 
  Misses in library cache during parse: 1
  Optimizer goal: CHOOSE
  Parsing user id: 62 
 
 Rows    Row Source Operation
  ------- ---------------------------------------------------
        SORT AGGREGATE
      16   TABLE ACCESS FULLSYS_DEPT
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
如何跟蹤某應(yīng)用下發(fā)生的sql操作細節(jié)
sql trace基礎(chǔ)
Oracle 10046跟蹤事件使用方法
使用SQL TRACE 實用工具和TKPROF
如何做trace 每一步 每一行
了解raw trace文件的各項內(nèi)容
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服