问题现像:oracle主机cpu过高,95%, 导至加接掉线或无法连接,时通时断。
快速处理就是重启数据库,然后通过ash 和awr查找问题:
ASH查询
SQL> @?/rdbms/admin/ashrpt.sql
AWR查询:
SQL> @?/rdbms/admin/awrrpt.sql
ADD报告
SQL> @?/rdbms/admin/addmrpt.sql
实时查看:
1.先topas再c,查看哪些进程耗cpu,找出pid
如查到 10879036 这个pid耗cpu
2.通过下面方法查,系统的pid在oracle里叫spid
--查v$process,查看addr 和消耗的pga
select SPID,pid,addr,PGA_USED_MEM,PGA_ALLOC_MEM,PGA_FREEABLE_MEM,PGA_MAX_MEM from gv$process where spid in (10879036);
--通过spid查sid
select s.sid,p.spid from v$session s,v$process p where s.paddr=p.addr and p.spid=11534438;
--通过sid查询sql_text
select sql_text from v$session s,v$sqltext q where s.sql_hash_value =q.hash_value and s.sql_address=q.address and s.sid=1584;
看看哪些语句耗cpu