为了账号安全,请及时绑定邮箱和手机立即绑定

Oracle:是否有跟踪查询的工具,例如用于SQL Server的Profiler?

/ 猿问

Oracle:是否有跟踪查询的工具,例如用于SQL Server的Profiler?

白衣染霜花 2019-11-26 10:02:45

我使用sql server,但是我必须使用Oracle DB迁移到应用程序。为了跟踪我的应用程序查询,在Sql Server中,我使用了出色的Profiler工具。Oracle有什么等效的东西吗?



查看完整描述

3 回答

?
MMMHUHU

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


请参阅:http : //download.oracle.com/docs/cd/B10501_01/em.920/a96674/db_admin.htm#1013955


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


还有其他方法。企业管理器只是用漂亮的颜色显示特殊视图中已经可用的内容,例如此处记录的内容:http : //www.oracle.com/pls/db92/db92.catalog_views?remark=homepage


而且,当然,您也可以使用Explain PLAN FOR,TRACE工具和大量其他工具化方式。在企业管理器中,有一些报告涉及最昂贵的SQL查询。您还可以搜索缓存中保留的最近查询。


查看完整回答
反对 2019-11-26
?
胡说叔叔

我找到了一个简单的解决方案


步骤1。使用PLSQL或sqldeveloper或任何其他查询界面与管理员用户连接到DB


第2步。在下面运行脚本;在S.SQL_TEXT列中,您将看到已执行的查询


SELECT            

 S.LAST_ACTIVE_TIME,     

 S.MODULE,

 S.SQL_FULLTEXT, 

 S.SQL_PROFILE,

 S.EXECUTIONS,

 S.LAST_LOAD_TIME,

 S.PARSING_USER_ID,

 S.SERVICE                                                                       

FROM

 SYS.V_$SQL S, 

 SYS.ALL_USERS U

WHERE

 S.PARSING_USER_ID=U.USER_ID 

 AND UPPER(U.USERNAME) IN ('oracle user name here')   

ORDER BY TO_DATE(S.LAST_LOAD_TIME, 'YYYY-MM-DD/HH24:MI:SS') desc;

唯一的问题是,我找不到一种显示输入参数值(用于函数调用)的方法,但是至少我们可以看到Oracle中运行的内容及其顺序,而无需使用特定的工具。


查看完整回答
反对 2019-11-26
?
德玛西亚99

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;

/

只是翻译过的一种http://www.sql.ru/faq/faq_topic.aspx?fid=389原始版本比较完整,但是无论如何,这比其他人发布的恕我直言更好


查看完整回答
反对 2019-11-26

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信