您的位置:首页 > 数据库 > Oracle

oracle性能调整工具sql_trace 之一

2012-05-30 18:57 447 查看
Sql_trace ,timed_statistic,tkprof是Oracle性能调整中的重要工具,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

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

 

                       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息