我使用sql server,但我必须迁移到带有Oracle DB的应用程序。 用于跟踪我的应用程序查询,在Sql Server中我使用了美妙的Profiler工具。对于Oracle来说有没有相同的东西?Oracle:是否有跟踪查询的工具,如用于sql server的Profiler?
回答
甲骨文,与其他数据库一起,分析给定的查询,以创建执行计划。该计划是检索数据的最有效方式。
Oracle提供'explain plan
'语句,它分析查询但不运行它,而是填充可以查询的特殊表(计划表)。
的语法(简单的版本,还有其他的选项,例如在计划表中的行与一个特殊的ID标记,或者使用不同的计划表)是:
explain plan for <sql query>
该数据的分析留给另一个问题,或者你的进一步研究。
这是Oracle文档,说明如何跟踪SQL查询,其中包括一对夫妇的工具(SQL跟踪和TKPROF)
您可以使用Oracle企业管理器监视活动的会话,与正在执行的查询,执行计划,锁定,一些统计数据甚至是长期任务的进度条。
参见: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
,当然你也可以使用解释计划,跟踪工具和大量的工具化的其他方式:企业经理只是漂亮的颜色是什么样的记录在这里特别的观点已经可以提出。企业管理器中有一些关于最昂贵的SQL查询的报告。您还可以搜索保存在缓存中的最近查询。
试试这个(它也是免费的): http://www.aboves.com/Statement_Tracer_for_Oracle.exe
我试图使用这个软件,但我看不到配置连接字符串的方法。谁能帮忙? – 2014-02-21 15:33:13
太棒了!工程很漂亮......但据我只能告诉数据库的本地主机。 – vmassuchetto 2014-09-22 15:58:46
这是一个可执行文件的链接 - 非常不错! – 2015-08-24 22:35:36
尝试PL/SQL开发人员具有良好的用户友好的GUI界面,以探查。尝试一下这个试验很不错。在Oracle数据库上工作时,我发誓这个工具。
http://www.allroundautomations.com/plsqldev.html?gclid=CM6pz8e04p0CFQjyDAodNXqPDw
看到,因为我刚刚投了最近的问题是重复的,并在此指明方向。 。 。
更夫妇 - 在SQL * Plus - SET AUTOTRACE ON - 将给予解释计划和统计,每条语句执行。
蟾蜍还允许客户端分析。
这两个的缺点是,他们只告诉你该语句的执行计划,但不知道如何到达该计划优化器 - 为您将需要较低级别的服务器端跟踪。
另一个重要的理解是Statspack快照 - 它们是查看整个数据库性能的好方法。解释计划等,善于发现个别的SQL语句是瓶颈。 Statspack擅长识别你的问题,即一个简单的声明和一个良好的执行计划在一分钟内被称为100万次。
有一个商业工具FlexTracer可用于跟踪的Oracle SQL查询
美中不足的是捕获两个点之间的所有SQL运行时间。像SQL Server一样。
在某些情况下,捕获特定用户在数据库中运行的SQL很有用。通常您只需为该用户启用会话跟踪,但该方法存在两个潜在问题。
- 第一个是许多基于Web的应用程序维护一个持久数据库连接池,它在多个用户之间共享。
- 第二个是有些应用程序连接,运行某些SQL并且很快断开连接,使得根本无法启用会话跟踪(当然,在这种情况下,您可以使用登录触发器来启用会话跟踪)。
该问题的一个快速和肮脏的解决方案是捕获在两个时间点之间运行的所有SQL语句。
以下过程将创建两个表格,每个表格包含特定点上的数据库快照。然后将查询这些表以生成在此期间所有SQL运行的列表。
如果可能,您应该在安静的开发系统上执行此操作,否则您可能会冒太大的风险。
先取快照 运行以下SQL创建第一个快照:
create table sql_exec_before as select executions,hash_value from v$sqlarea /
获取用户在应用程序内执行他们的任务。
取第二个快照。
create table sql_exec_after as select executions, hash_value from v$sqlarea /
检查结果 现在你已经捕获的SQL是时候来查询结果。
这第一个查询将列出所有已执行的查询哈希:
select aft.hash_value
from sql_exec_after aft
left outer join sql_exec_before bef
on aft.hash_value = bef.hash_value
where aft.executions > bef.executions
or bef.executions is null;
/
这一次将显示哈希和SQL本身: 集页999线100 突破上HASH_VALUE
select hash_value, sql_text
from v$sqltext
where hash_value in (
select aft.hash_value
from sql_exec_after aft
left outer join sql_exec_before bef
on aft.hash_value = bef.hash_value
where aft.executions > bef.executions
or bef.executions is null;
)
order by
hash_value, piece
/
5。 收拾一下,不要忘记删除快照表一旦你已经完成:
drop table sql_exec_before
/
drop table sql_exec_after
/
alter system set timed_statistics=true
--or
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 - 最低水平。就像设置SQL_TRACE = TRUE 4 - 添加绑定变量的值来跟踪文件 8 - 等待加入 12 - 无论是绑定变量值和等待事件被添加 */
如果你想跟踪--same你自己的会话与更大级别:
alter session set events '10046 trace name context forever, level 12';
- 转向关:
alter session set events '10046 trace name context off';
--file与原始跟踪信息将位于:
01 (*。TRC)select value from v$parameter p
where name='user_dump_dest'
文件的--name将包含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';
--finally,使用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>
--to视图TRA的状态CE文件使用:
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原来是更全面的,但无论如何,这是比别人贴恕我直言
我发现了一个简单的解决方案
第一步更好。使用PLSQL或的SQLDeveloper或任何其他查询接口
第二步管理员用户连接到DB。波纹管运行脚本;在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中运行并且没有使用特定工具的顺序。
这是一个工具甲骨文捕捉到类似SQL Server事件探查执行的查询。 维护使用此数据库服务器的应用程序不可或缺的工具。
你可以从官方网站下载iacosoft.com它
显然有不小的简单廉价的工具,这将有助于执行此任务。然而,以复杂和不方便的方式来做到这一点。
以下文章介绍了几种。可能有几十个...... http://www.petefinnigan.com/ramblings/how_to_set_trace.htm
- 1. 是否有工具用于跟踪在Oracle上执行的SQL
- 2. SQL Server Profiler如何检查创建SQL Server Profiler跟踪的用户ID?
- 3. 如何使用SQL Server Profiler跟踪
- 4. 是否有SQL Server Express的SQL Server Profiler?
- 5. 是否有SQL Server的查询优化工具?
- 6. Oracle 10g的SQL Server跟踪等效吗?
- 7. 是否有可用于SQL Server 2005的数据调整工具?
- 8. SQL Profiler 2008中重复SQL Server 2000跟踪
- 9. 有没有像Cassandra的SQL Server Profiler的工具?
- 10. 如何跟踪Oracle 12c中的SQL查询?
- 11. 如何跟踪从应用服务器提交给Oracle DB的所有查询?
- 12. 是否有Microsoft SQL Server Profiler等效于Progress OpenEdge ABL?
- 13. 是否pycharm有时间跟踪的任何工具
- 14. 是否有从数据库表跟踪到java类的工具?
- 15. 是否有用于java/java IDE的语义查询工具?
- 16. SQL Server Profiler - 查看Dynamic Sql
- 17. 是否有(静态)JavaScript函数调用跟踪工具?
- 18. 用于比较SQL Server查询计划的工具?
- 19. 用于显示分层数据的SQL Server查询或工具
- 20. MS SQL Server相当于oracle查询
- 21. 具有多个表的Oracle sql查询
- 22. 具有多个子查询的ORACLE SQL
- 23. 是否有用于Oracle Database Express的免费GUI管理工具?
- 24. 积极跟踪Oracle查询性能
- 25. Oracle的查询工具9
- 26. 来自链接服务器的SQL Server跟踪查询
- 27. 用于跟踪最近活动的循环SQL查询表
- 28. SQL Server Profiler - 如何过滤跟踪以仅显示包含DELETE语句的TSQL?
- 29. 是否有与Oracle相关的Microsoft SQL Profiler
- 30. 哪些是可用于NetBeans 7.0的错误跟踪工具?
你为什么接受错误的答案?解释计划不会做分析器的工作。这完全没有关系。 – Jasmine 2013-05-07 20:46:04
你有没有找到像`sql server profiler`这样的最佳工具?你现在在用什么? – 2015-09-18 09:43:55
我写了一本关于跟踪Oracle应用程序的书。它可以通过http://method-r.com以PDF格式获得。 – 2016-02-11 16:26:21