ITPub博客

首页 > 数据库 > Oracle > 如何查询占用系统资源较高的进程及系统进程对应的sql语句及会话id的方法

如何查询占用系统资源较高的进程及系统进程对应的sql语句及会话id的方法

原创 Oracle 作者:始于脚下 时间:2017-05-02 16:26:21 0 删除 编辑
如何查询占用系统资源较高的进程及系统进程对应的sql语句及会话id的方法


查询占用数据库cpu资源使用率较高进程信息


ps -e -o pcpu,pid,user,tty,args | sort -n -k 1 -r | head 


查询占用数据库内存资源使用率较高的Oracle进程信息


ps -e -o pmem,pid,user,tty,args | grep -i oracle | sort -n -k 1-r | head 


当然,还可以利用top、vmstat、sar等其他方式定位占用资源比较高的进程及其id,查询到系统进程id后,便可以通过以下语句查询其在数据库中对应的会话id及其sql语句。


SELECT sql_id,sql_text FROM v$sqltext a WHERE a.hash_value=(SELECT sql_hash_value FROM v$session b,v$process c WHERE b.paddr=c.addr AND c.spid=&pid) ORDER BY piece ASC ; 


直接粘贴在sql命令行运行,输入相应的操作系统进程id即可。


进一步可以根据以上查询到的sql_id,来查询详细的sql执行计划,详细分析问题出现的原因。


SELECT * FROM TABLE(dbms_xplan.display_awr('&sql_id'));


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31403259/viewspace-2138296/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
拥有多年电信行业Oracle数据库管理经验,拥有Oracle OCP、OCM证书,擅长各个场景下的数据库备份与恢复、性能分析管理、上线规划及部署实施、架构设计、自动化运维等。

注册时间:2016-10-18

  • 博文量
    106
  • 访问量
    561503