10053 trace跟蹤文件
可以通過alter session set event 來創建,但是前提是這條SQL被真正執行過。
常見創建方法:
alter session set tracefile_identifier='mytrace';
alter session set events '10053 trace name context forever';
select * from emp where ename='scott';
alter session set events '10053 trace name context off';
到了11g 對於10053有了優化,所以以上創建方法還可以是:
alter session set tracefile_identifier='mytrace'; 創建trace標識符
alter session set events 'trace [sql_compiler.*]';
select * from emp where name='scott';
alter session set events 'trace [sql_compiler.*] off'; 退出10053 trace.
但是有的場景是不允許你執行sql的,比如sql是修改數據的,或者sql很大對性能有影響,或者沒有執行權限。這個時候我們可以使用dbms_sqldiag.dump_trace來實現,具體方法如下:
begin
dbms_sqldoag.dump_trace(p_sql_id=>'',
p_child_number=>0,
p_component=>'compiler',
p_file_id=>'mytrace');
end;
/
但是注意的是每次執行 dbms_sqldoag.dump_trace都會觸發一此硬解析,因此不能再繁忙期或者頻繁的執行。