调用了一个过程或函数,如果很慢,怎么通过session表追踪???

billlyh 2014-09-16 09:08:22
调用了一个过程或函数,如果很慢,怎么通过session表追踪,
哪位大侠能给详细的讲一下??????
...全文
340 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
bw555 2014-09-18
  • 打赏
  • 举报
回复
给我的感觉是你这个过程应该是io或是网络传输的速度慢,而查询速度不慢 8#的语句我使用过多次,可以确定没啥问题
billlyh 2014-09-18
  • 打赏
  • 举报
回复
引用 11 楼 sych888 的回复:
定位是那个较慢可以用V$SESSION,v$sqlarea来定位 如果已经知道了那个过程做个10046分析一下
能给个例子么
bw555 2014-09-17
  • 打赏
  • 举报
回复
查询正在执行的sql语句
select a.username, a.sid,b.SQL_TEXT
  from v$session a, v$sqlarea b 
where a.sql_address = b.address
billlyh 2014-09-17
  • 打赏
  • 举报
回复
引用 4 楼 z_shousi 的回复:
没有试过追踪过程或函数,好像我遇到的只有追踪sql语句
那你是怎么追踪sql语句的
  • 打赏
  • 举报
回复
没有试过追踪过程或函数,好像我遇到的只有追踪sql语句
billlyh 2014-09-17
  • 打赏
  • 举报
回复
哪位来说说呀
billlyh 2014-09-17
  • 打赏
  • 举报
回复
哪位来说说呀
billlyh 2014-09-17
  • 打赏
  • 举报
回复
哪位来说说呀
sych888 2014-09-17
  • 打赏
  • 举报
回复
定位是那个较慢可以用V$SESSION,v$sqlarea来定位 如果已经知道了那个过程做个10046分析一下
billlyh 2014-09-17
  • 打赏
  • 举报
回复
引用 8 楼 bw555 的回复:
SELECT b.sid oracleID,  
b.username 登录Oracle用户名,
b.serial#,
spid 操作系统ID,
paddr,
sql_text 正在执行的SQL,
b.machine 计算机名
FROM v$process a, v$session b, v$sqlarea c
WHERE a.addr = b.paddr
AND b.sql_hash_value = c.hash_value

根据计算机名查找,应该可以


用这种方法,找到的还是上面这一句呀,我要找的是调用过程那段sql语句的session
调用过程的语句是:
declare
t2 my_package.my_table;
begin
--t2.EXTEND;
select * into t2(1) from employee where id = 101;
my_package.pro_test(t2);
end;

billlyh 2014-09-17
  • 打赏
  • 举报
回复
引用 6 楼 bw555 的回复:
查询正在执行的sql语句
select a.username, a.sid,b.SQL_TEXT
from v$session a, v$sqlarea b
where a.sql_address = b.address



当前正在执行的sql是:
select a.username, a.sid,b.SQL_TEXT
from v$session a, v$sqlarea b
where a.sql_address = b.address
and b.SQL_TEXT like '%t2 my_package.my_table;%'

但是我调用过程的语句是:
declare
t2 my_package.my_table;
begin
--t2.EXTEND;
select * into t2(1) from employee where id = 101;
my_package.pro_test(t2);
end;
bw555 2014-09-17
  • 打赏
  • 举报
回复
SELECT b.sid oracleID,  
       b.username 登录Oracle用户名,  
       b.serial#,  
       spid 操作系统ID,  
       paddr,  
       sql_text 正在执行的SQL,  
       b.machine 计算机名  
FROM v$process a, v$session b, v$sqlarea c  
WHERE a.addr = b.paddr  
   AND b.sql_hash_value = c.hash_value
根据计算机名查找,应该可以
billlyh 2014-09-17
  • 打赏
  • 举报
回复
引用 6 楼 bw555 的回复:
查询正在执行的sql语句
select a.username, a.sid,b.SQL_TEXT
  from v$session a, v$sqlarea b 
where a.sql_address = b.address
同一个环境,有可能同时在执行几个sql语句,这种写法能保证正在执行的就是我调用的那个过程吗

3,494

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧