alter system set timed_statistics=true
--hoặc là
alter session set timed_statistics=true
- phải đủ lớn:
select value from v$parameter p
where name='max_dump_file_size'
- Tìm hiểu sid và số serial của phiên bạn quan tâm:
select sid, serial
where ...your_search_params...
--bạn có thể bắt đầu theo dõi với sự kiện 10046, tham số thứ tư đặt mức theo dõi (12 là mức lớn nhất):
begin
sys.dbms_system.set_ev(sid, serial
end;
- tắt theo dõi với cài đặt mức 0:
begin
sys.dbms_system.set_ev(sid, serial
end;
/ * mức có thể: 0 - tắt 1 - mức tối thiểu. Giống như set sql_trace = true 4 - giá trị biến ràng buộc được thêm vào tệp theo dõi 8 - lượt chờ được thêm 12 - cả giá trị biến ràng buộc và sự kiện chờ đều được thêm * /
--same nếu bạn muốn theo dõi phiên của riêng mình với cấp độ lớn hơn:
alter session set events '10046 trace name context forever, level 12';
--tắt:
alter session set events '10046 trace name context off';
--tệp với thông tin theo dõi thô sẽ được định vị:
select value from v$parameter p
where name='user_dump_dest'
--name của tệp (*. trc) sẽ chứa spid:
select p.spid from v$session s, v$process p
where s.paddr=p.addr
and ...your_search_params...
- ngoài ra bạn có thể tự đặt tên:
alter session set tracefile_identifier='UniqueString';
- cuối cùng, sử dụng TKPROF
để làm cho tệp theo dõi dễ đọc hơn:
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>
--để xem trạng thái sử dụng tệp theo dõi:
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;
/
Chỉ là bản dịch http://www.sql.ru/faq/faq_topic.aspx?fid=389 Bản gốc đầy đủ hơn, nhưng dù sao thì bản này cũng hay hơn những gì người khác đã đăng trên IMHO