Oracle:是否有一个跟踪查询的工具,比如Profiler for sql server?

ste*_*o m 81 sql-server oracle profiler

我使用sql server,但我必须迁移到Oracle DB的应用程序.为了跟踪我的应用程序查询,在Sql Server中我使用了精彩的Profiler工具.是否有类似于Oracle的东西?

bor*_*jab 22

您可以使用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查询.您还可以搜索缓存中保留的最近查询.


ser*_*giu 16

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

步骤1.使用PLSQL或sqldeveloper或任何其他查询接口与admin用户连接到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;
Run Code Online (Sandbox Code Playgroud)

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

  • 如果查询文本超过1000个字符,则可以添加S.SQL_FULLTEXT,因为SQL_TEXT在此时被截断. (2认同)
  • 您不应该按LAST_ACTIVE_TIME排序,因为它是VARCHAR2(19).请改用:ORDER BY TO_DATE(S.LAST_LOAD_TIME,'YYYY-MM-DD/HH24:MI:SS')desc (2认同)

小智 15

alter system set timed_statistics=true
Run Code Online (Sandbox Code Playgroud)

- 要么

alter session set timed_statistics=true --if want to trace your own session
Run Code Online (Sandbox Code Playgroud)

- 必须足够大:

select value from v$parameter p
where name='max_dump_file_size' 
Run Code Online (Sandbox Code Playgroud)

- 找出您感兴趣的会话的sid和序列号:

 select sid, serial# from v$session
 where ...your_search_params...
Run Code Online (Sandbox Code Playgroud)

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

 begin
    sys.dbms_system.set_ev(sid, serial#, 10046, 12, '');
 end;
Run Code Online (Sandbox Code Playgroud)

- 设置零级别关闭跟踪:

begin
   sys.dbms_system.set_ev(sid, serial#, 10046, 0, '');
end;
Run Code Online (Sandbox Code Playgroud)

/*可能的等级:0 - 关闭1 - 最低等级.很像set sql_trace = true 4 - 将绑定变量值添加到跟踪文件8中 - 添加等待12 - 绑定变量值和添加等待事件*/

- 如果你想用更高级别跟踪你自己的会话,那就相同:

alter session set events '10046 trace name context forever, level 12';
Run Code Online (Sandbox Code Playgroud)

- 关掉:

alter session set events '10046 trace name context off';
Run Code Online (Sandbox Code Playgroud)

- 将包含具有原始跟踪信息的文件:

 select value from v$parameter p
 where name='user_dump_dest'
Run Code Online (Sandbox Code Playgroud)

- 文件名(*.trc)将包含spid:

 select p.spid from v$session s, v$process p
 where s.paddr=p.addr
 and ...your_search_params...
Run Code Online (Sandbox Code Playgroud)

- 您也可以自己设置名称:

alter session set tracefile_identifier='UniqueString'; 
Run Code Online (Sandbox Code Playgroud)

- 最后,用于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>
Run Code Online (Sandbox Code Playgroud)

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

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;
/
Run Code Online (Sandbox Code Playgroud)

只是有点翻译http://www.sql.ru/faq/faq_topic.aspx?fid=389原创是更丰富,但无论如何这比其他人发布的更好恕我直言

  • 太复杂。没有人会使用它。 (3认同)

Kub*_*aun 6

试试PL/SQL Developer它有一个很好的用户友好的GUI界面到分析器.尝试一下这个试验非常好.在使用Oracle数据库时,我发誓这个工具.

http://www.allroundautomations.com/plsqldev.html?gclid=CM6pz8e04p0CFQjyDAodNXqPDw


pio*_*pio 6

GI Oracle Profiler v1.2

它是Oracle用来捕获与SQL Server Profiler类似执行的查询的工具。维护使用此数据库服务器的应用程序必不可少的工具。

您可以从官方网站iacosoft.com下载

  • 嗨,您必须付费才能查询v $ sqlarea?我可以输入说什么的链接? (2认同)

Jul*_*sLt 5

就像我刚刚对一个最近的问题投了重复一样,并指出了这个方向。。。

另外一些-在SQL * Plus中-SET AUTOTRACE ON-将为每个执行的语句提供解释计划和统计信息。

TOAD还允许客户端分析。

两者的缺点是它们仅告诉您该语句的执行计划,而不告诉优化器如何到达该计划的-为此,您将需要较低级别的服务器端跟踪。

另一个重要的要了解的是Statspack快照-它们是查看整个数据库性能的好方法。说明计划等擅长查找瓶颈的单个SQL语句。Statspack擅长于识别您的问题所在,即一个具有良好执行计划的简单语句在一分钟内被调用一百万次。


pax*_*blo 2

Oracle 与其他数据库一起分析给定的查询以创建执行计划。该计划是检索数据的最有效方法。

Oracle 提供了“ explain plan”语句来分析查询但不运行它,而是填充一个可以查询的特殊表(计划表)。

语法(简单版本,还有其他选项,例如使用特殊 ID 标记计划表中的行,或使用不同的计划表)是:

explain plan for <sql query>
Run Code Online (Sandbox Code Playgroud)

该数据的分析留给另一个问题或进一步的研究。