1.首先用TOP命令监控系统资源,如果是AIX系统,就用topas,进入TOP命令的滚动刷新数据时,发现userCPU高达98%!!

保持top的状态下,按shift+p,可以将所有进程按CPU使用率高低排序,这样可以了解消耗CPU最多的进程是哪些

 

2 现在v$process 视图中找到pid对应的地址addr,将进程号pid和oracle的session联系起来

 

SQL:select addr from v$process where spid=172928;

 

简介:v$process视图包含当前系统oracle运行的所有进程信息。常被用于将oracle或服务进程的操作系统进程ID与数据库session之间建立联系。也就是可以通过进程PID来寻找数据库的session)

 

再通过刚才的addr,在v$session表找到对应的sql_id

SQL:select sql_id from v$session where paddr='00000003CEA444C8';

再通过sql_id可以找到对应的SQL是哪条

SQL:select * from v$sql where sql_id = '00000003CEA444C8';

实际上,上面是三个SQL可以联表,

SQL如下:

select t3.SQL_TEXT

  from v$process t1

 inner join v$session t2

    on t1.ADDR = t2.PADDR

 inner join v$sql t3

    on t2.SQL_ID = t3.SQL_ID

 where t1.SPID = 172928(这个pid就是进程id);

相关文章:

  • 2022-12-23
  • 2021-09-22
  • 2021-05-04
  • 2021-12-16
  • 2021-05-31
  • 2021-10-29
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-08-03
  • 2021-12-06
相关资源
相似解决方案