Oracle: 有没有跟踪查询的工具,比如SQL服务器的探查器?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (84)

我使用SQL服务器,但我必须迁移到Oracle DB的应用程序。为了跟踪我的应用程序查询,我在SQLServer中使用了极好的Profiler工具。

提问于
用户回答回答于
alter system set timed_statistics=true

---或

alter session set timed_statistics=true --if want to trace your own session

-必须足够大:

select value from v$parameter p
where name='max_dump_file_size' 

-找出你感兴趣的SID和系列课程#:

 select sid, serial# from v$session
 where ...your_search_params...

-您可以使用10046事件开始跟踪,第四参数设置跟踪级别(12是最大的):

 begin
    sys.dbms_system.set_ev(sid, serial#, 10046, 12, '');
 end;

-关闭设置零电平的跟踪:

begin
   sys.dbms_system.set_ev(sid, serial#, 10046, 0, '');
end;

/*可能的级别:0-关闭1-最低水平。很像SET SQL_TRACE=True 4-将绑定变量值添加到跟踪文件中8--添加了12--同时添加了绑定变量值和等待事件。*/

-如果你想用更大的层次追踪你自己的会议,也是一样的:

alter session set events '10046 trace name context forever, level 12';

-关闭:

alter session set events '10046 trace name context off';

-带有原始跟踪信息的文件将被找到:

 select value from v$parameter p
 where name='user_dump_dest'

-档案名称(*.trc)将包含SPID:

 select p.spid from v$session s, v$process p
 where s.paddr=p.addr
 and ...your_search_params...

-你也可以自己定名字:

alter session set tracefile_identifier='UniqueString'; 

-最后,使用TKPROF为了使跟踪文件更易读:

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>

-查看跟踪文件的使用状态:

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;
/
用户回答回答于

您可以使用Oracle Enterprise Manager监视活动会话,执行的查询、执行计划、锁、一些统计信息,甚至是较长任务的进度条。

见:http://Dowload.oracle.com/docs/cd/B 10501_01/em.920/a96674/db_行政管理#1013955

转到实例->会话,并查看每个会话的SQL选项卡。

当然,您也可以使用解释计划、跟踪工具和大量其他工具。企业管理器中有一些用于最昂贵的SQL查询的报告。您还可以在缓存上搜索最近的查询。

扫码关注云+社区

领取腾讯云代金券