oracle性能调整工具sql_trace 之一

来源:互联网 发布:网络的服务 编辑:程序博客网 时间:2024/04/28 23:55

Sql_trace ,timed_statistic,tkprofOracle性能调整中的重要工具,sql_trace可以记录应用程序中每一个sql的执行情况数据统计,timed_statistic能够告诉我们每一个执行步骤花费的cpu时间,tkprof可以将sql_trace生成的跟踪文件转换成更便于我们阅读的格式。

 

Timed_statistics可以设置成系统级别的也可以针对单个会话进行设置,可以在init.ora参数文件中添加

Timed_statistics = true重启数据库即生效、

 

针对单个会话设置

 

Alter session set timed_statistics = true;

 

针对整个系统设置,和在参数文件中设置等效

 

Alter system set timed_statistics = true;

 

Sql_trace也可针对整个数据库和单个会话进行跟踪生成跟踪文件,路径为

 

%oracle_home%\admin\oracle_sid\udump

 

Alter session set sql_trace=true|false

 

Sys.dbms_system.set_sql_trace_in_session该方法需要配置三个参数sid,serial#,这两个参数可以通过v$session视图获得,选择我们要跟踪的会话的sid,serial#参数,

例如

//exec dbms_system.set_sql_trace_in_session(sid,serial#,true)

 //exec dbms_monitor.session_trace_enable(267,996,waits=>true,binds=>true)//可以获取更多信息

exec dbms_system.set_sql_trace_in_session(9,437,true)

 

停止跟踪

 

exec sys.dbms_system.set_sql_trace_in_session(9,437,false)

 

 

还可以通过设置事件的方式

 

Alter session set events ‘10046 trace name context forever,level 12’;

 

关闭跟踪

 

Alter session set events ‘10046 trace name context off’;

如何得到跟踪文件名

 

如果会话取得自己的跟踪文件

可以用下面的方法获得

select

d.value||'/'||lower(rtrim(i.instance,chr(0)))||'_ora_'||p.spid||'.trc' trace_file_name 

from 

( select p.spid 

from sys.v$mystat m,sys.v$session s,sys.v$process p 

where m.statistic# =1and s.sid = m.sidand p.addr = s.paddr) p, 

( select t.instancefrom sys.v$thread t,sys.v$parameter  v 

where v.name ='thread'and (v.value =0or t.thread# = to_number(v.value))) i,

( selectvaluefrom sys.v$parameter wherename ='user_dump_dest') d

/

如果以sys账户登录oracle并用

exec dbms_system.set_sql_trace_in_session(9,437,true)

跟踪其它会话时跟踪文件可以用下面的语句得到跟踪文件名

select a.spid from v$process a,v$session b

where a.addr=b.paddr  and

b.username='其它会话用户名(要大写)'

/

得到结果是

 SPID

----------

3220

跟踪文件路径上面已经提到

 

                       

原创粉丝点击