一般通过执行计划可以得到sql的性能,但是想了解语句执行的整个过程可以通过生成trace文件来查看。以下是生成sql-trace和10046事件生成trace文件的过程。
-- 可以帮助你找到影响sql语句引起性能问题的原因
--sql_trace 的执行
begin
execute dbms_system.set_sql_trace_in_session('id','serial#',true);
--sql语句
select * from user_tables;
execute dbms_system.set_sql_trace_in_session('di','serial#',false);
end ;
--10046 的执行
begin
--启动trace
execute dbms_monitor.session_trace_enable('id','serial#',waits=>true,binds=>true);
--sql语句
select * from user_tables;
execute dbms_monitor.session_trace_disable('di','serial#');
end ;
个人认为看完以后感觉这块一般不会用到,顶多我重新分析下表,这个trace文件里sql的执行过程没办法改变吧 都是oracle的cbo优化器指定的。