今天接到了一个报警信息,提示oracle数据库服务器活动会话超出阈值。
首先登陆监控系统,查看了下监控数据信息如下:
可以看到从14:40左右开始连接数不断增加,从下面的资源使用情况可以看出,在连接数突增的这段时间,cpu,内存等使用率也较平常显著增加。
内存使用情况:
Cpu使用情况:
登录数据库查看活动会话数:
SELECT COUNT(*)
FROM V$SESSION
WHERE STATUS = 'ACTIVE'
AND TYPE <> 'BACKGROUND';
SELECT SID,
SERIAL#,
USERNAME,
STATUS,
PROCESS,
MACHINE,
PORT,
TYPE,
SQL_EXEC_START,
EVENT
FROM V$SESSION
WHERE STATUS = 'ACTIVE'
AND TYPE <> 'BACKGROUND';
生成awr报告,查看awr报告信息
通过这个信息我们可以发现awr报告时间段(60分钟),数据库在起点和终点的会话数
说明:可以看到16点这会会话说达到了6百多个。初步可以判断可能是由于会话数目突增,导致数据库负载升高。
Time Model Statistics中的connection management call elapsed time就是建立会话花费的时间。
结合我在数据库通过v$session查看的详细信息,awr报告信息以及监听日志和alert日志的信息可以发现某一台machine的连接数会很多,通过和该机器业务负责人沟通,该业务机器在下午两点半左右重启过应用服务。因此可以判断该数据库服务器负载高是由于会话数突增导致,而会话增加是由于程序业务服务重启,数据库上层缓存失效,大量并发请求导致。