出现CPU占有率过高,情况可能有很多:
1. 比如大数量的DELETE FROM TABLE,大数量的表DROP,CREATE或者DROP很大的索引
2. Oracle可能的bug,比如突然间大量的session连接Oracle,结果导致lsnrctl Hang。
3. 数据库连接做非常耗资源的SQL查询
4. SMON作清除临时段(比如非正常关闭后的OPEN)
具体还是要根据具体进程和alert中的信息来判断
估计是第三条原因导致的,于是查了一下数据库的游标
select count(*) from v$open_cursor;
发现有六百多条
再详细查:
select * from v$open_cursor;
分组查详细:
select sql_text, user_name,count(*) counts from v$open_cursor group by sql_text,user_name order by cn asc;
最终找到出现频率最多的语句,查程序,解决问题.
![](https://img2024.cnblogs.com/blog/35695/202408/35695-20240826070647288-243310440.jpg)