找到oracle进程调用者

最近在使用基于aix的oracle,通过topas发现cpu使用率过高,在90%以上,一直是两个oracle的进程在工作。

因为外部程序访问oracle最终都体现在oracle的进程,而不能发现最终的使用用户是谁,无法准确定位问题。找到一个sql,通过oracle的v$session,和v$process。

 

select  b.MACHINE, b.PROGRAM,b.OSUSER, b.USERNAME  , a.spid,b.sid

from v$process a, v$session b

where a.ADDR = b.PADDR and  b.USERNAME is not null  

 

通过这个sql,spid就是操作系统的进程id,sid是oracle 的sessionid,username就是数据库的schema,osname是操作系统用户。

 

 

  再通过这个sid可以通过下列的sql,找到正在执行的slq_id

  select sql_id from v$active_session_history where session_id ='22' order by sql_exec_start desc

 

  再通过这个sql_id最终找到正在执行的sql

  select * from v$sql where sql_id = 'fvvhhvzapqnjx' 

 

或者合并成一个sql

select b.* from v$active_session_history a,v$sql b where  a.session_id ='22' and a.sql_id=b.sql_id order by a.sql_exec_start desc

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值