10046事件跟蹤(10053)

2021-08-15 06:35:41 字數 1563 閱讀 3778

前提:

1)、必須確保timed_statistics為true,這個引數可以在會話級上進行修改。

2)、為了確保trace輸出能夠完整進行,還要調整此會話對trace檔案大小的限制,一般將此限制取消,即將max_dump_file_size設定為unlimited,或者設定為乙個很大的闕值。

1、跟蹤本會話:

set line 300;

set arraysize 1000;

select userenv('sid') from dual;

select p.spid, s.sid, s.serial#, p.inst_id  from gv$process p, gv$session s where s.paddr = p.addr  and s.sid = userenv('sid') and p.inst_id = s.inst_id;

set autotrace traceonly;

set timing on;

alter session set events '10046 trace name context forever ,level 12' ;

--alter session set events '10053 trace name context forever ,level 2' ;

執行sql或儲存過程

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

--alter session set events '10053 trace name context off' ;

sql> show parameter background_dump_dest

到該目錄找到生成的trc字尾的trace檔案。

tkprof   tracfilename.trc   tracfilename.txt  (格式處理為易讀格式)

2、跟蹤其他指定會話:

----指定跟蹤session的spid(os process)

oradebug setospid 20336

oradebug unlimit

oradebug event 10046 trace name context forever,level 12

經過一段時間後關閉10046

oradebug event 10046 trace name context off;

exec dbms_system.set_ev(30,24167,10046,12,'');

找出程序的sid和serial,然後對他們設定10046事件:

sql> select sid,serial# from v$session where sid in (30,37);

sid    serial#

---------- ----------

30      24167

37       2707

sql> exec dbms_system.set_ev(30,24167,10046,12,'');

sql> exec dbms_system.set_ev(37,2707,10046,12,'');

Oracle 10046跟蹤事件使用方法

1.開啟10046跟蹤事件 alter session set events 10046 trace name context forever,level 12 如果想更容易標識trace檔案,在開啟事件之前,可以先設定trace的標識 alter session set tracefile ide...

Oracle 詳解10053事件

借助oracle的10053事件event,我們可以監控到cbo對sql進行成本計算和路徑選擇的過程和方法。10053事件有兩個級別 level 2 2級是1級的乙個子集,它包含以下內容 column statistics single access paths join costs table j...

10046事件與tkprof命令

0 conn as sysdba 1 啟用10046 alter session set events 10046 trace name context forever,level 12 oradebug event 10046 trace name context forever,level 12...