alter system set timed_statistics=true
--หรือ
alter session set timed_statistics=true
- ต้องใหญ่พอ:
select value from v$parameter p
where name='max_dump_file_size'
- ค้นหา sid และ serial # ของเซสชันที่คุณสนใจ:
select sid, serial
where ...your_search_params...
- คุณสามารถเริ่มการติดตามด้วยเหตุการณ์ 10046 พารามิเตอร์ที่สี่ตั้งค่าระดับการติดตาม (12 คือค่าที่ใหญ่ที่สุด):
begin
sys.dbms_system.set_ev(sid, serial
end;
- ปิดการติดตามด้วยการตั้งค่าระดับศูนย์:
begin
sys.dbms_system.set_ev(sid, serial
end;
/ * ระดับที่เป็นไปได้: 0 - ปิด 1 - ระดับต่ำสุด เช่นเดียวกับ set sql_trace = true 4 - เพิ่มค่าตัวแปรการโยงในไฟล์การติดตาม 8 - รอเพิ่ม 12 - เพิ่มทั้งค่าตัวแปรการผูกและรอเหตุการณ์ * /
- เช่นเดียวกันหากคุณต้องการติดตามเซสชันของคุณเองด้วยระดับที่ใหญ่กว่า:
alter session set events '10046 trace name context forever, level 12';
--ปิด:
alter session set events '10046 trace name context off';
- ไฟล์ที่มีข้อมูลการติดตามดิบจะอยู่:
select value from v$parameter p
where name='user_dump_dest'
- ชื่อไฟล์ (*. trc) จะมี spid:
select p.spid from v$session s, v$process p
where s.paddr=p.addr
and ...your_search_params...
- นอกจากนี้คุณสามารถตั้งชื่อด้วยตัวเอง:
alter session set tracefile_identifier='UniqueString';
- สุดท้ายใช้TKPROF
เพื่อทำให้ไฟล์การติดตามอ่านง่ายขึ้น:
C:\ORACLE\admin\databaseSID\udump>
C:\ORACLE\admin\databaseSID\udump>tkprof my_trace_file.trc output=my_file.prf
TKPROF: Release 9.2.0.1.0 - Production on Wed Sep 22 18:05:00 2004
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
C:\ORACLE\admin\databaseSID\udump>
- เพื่อดูสถานะของการใช้ไฟล์ติดตาม:
set serveroutput on size 30000;
declare
ALevel binary_integer;
begin
SYS.DBMS_SYSTEM.Read_Ev(10046, ALevel);
if ALevel = 0 then
DBMS_OUTPUT.Put_Line('sql_trace is off');
else
DBMS_OUTPUT.Put_Line('sql_trace is on');
end if;
end;
/
เพียงแค่ชนิดของการแปลhttp://www.sql.ru/faq/faq_topic.aspx?fid=389เดิมคือฟูลเลอร์ แต่อย่างไรก็ตามนี้จะดีกว่าสิ่งที่คนอื่นโพสต์ IMHO