我使用sql server,但我必须迁移到使用Oracle DB的应用程序。为了跟踪我的应用程序查询,在Sql Server中,我使用了非常棒的Profiler工具。甲骨文有没有类似的东西?
发布于 2008-09-29 14:40:36
您可以使用Oracle Enterprise Manager监视活动会话,包括正在执行的查询、其执行计划、锁、一些统计信息,甚至是较长任务的进度条。
请参阅:http://download.oracle.com/docs/cd/B10501_01/em.920/a96674/db_admin.htm#1013955
转到Instance session并查看每个会话的->选项卡。
还有其他方法。企业管理器只是把已经在特殊视图中可用的东西加上了漂亮的颜色,就像这里记录的那些:http://www.oracle.com/pls/db92/db92.catalog_views?remark=homepage
当然,您还可以使用Explain PLAN FOR、TRACE工具和大量其他的工具化方法。企业管理器中有一些针对开销最大的SQL查询的报告。您还可以搜索保存在缓存中的最新查询。
发布于 2014-06-02 15:22:19
我找到了一个简单的解决方案
Step1。使用PLSQL或sqldeveloper或任何其他查询界面,以管理员用户身份连接到数据库
Step2。运行下面的脚本;在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中运行的内容以及它的顺序,而不需要使用特定的工具。
发布于 2014-04-11 09:54:33
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和serial#:
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;
/*possible级别: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原版更完整,但无论如何这比其他人发布的要好。
https://stackoverflow.com/questions/148648
复制相似问题