Oracle会话和进程数的监控

WBOY
发布: 2016-06-07 17:40:20
原创
1824 人浏览过

背景:先前在生产库上配置了oracle监控,每5分钟尝试连接一次数据库,若连接失败则通过nagios+fetion自动报警,此配置参考文章:http://ylw6006.blog.51cto.com/4

背景:先前在生产库上配置了oracle监控,每5分钟尝试连接一次数据库,香港虚拟主机,若连接失败则通过nagios+fetion自动报警,此配置参考文章:

早晨收到报警信息后,香港虚拟主机,登陆数据库执行ps -ef查看oracle的后台进程都在,使用conn /as sysdba的方式登陆数据库,提示连接到空闲的实例,使用easy connect 方式连接则报oracle实例无法分配内存,从报错提示上看,就像oracle数据库实例未打开的状态!分析alert日志不断出现如下错误信息:
Process J002 died, see its trace file
kkjcre1p: unable to spawn jobq slave process
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_cjq0_18577.trc:

trace文件摘要信息如下:
*** 2012-07-26 10:20:31.068
Process J002 is dead (pid=13857 req_ver=1136 cur_ver=1136 state=KSOSP_SPAWNED).

*** 2012-07-26 10:20:32.069
Process J002 is dead (pid=13876 req_ver=1594 cur_ver=1594 state=KSOSP_SPAWNED).

google查询一番后,发现大部分描述和oracle的进程数设置有关,又或者是内存不足引起!于是在oracle 10g环境下测试,线上数据库环境为11.2.0.3

一:设置processes初始化参数值为20,香港服务器,重启数据库后,已经占用19个进程

新的会话连接,则报连接到空闲的实例,alert日志则出现相应的报错

refer: ?uid=854&do=blog&id=84

二:于是想到监控oracle的进程和会话数来进一步确定问题
1:首先要对用户进行显示授权,否则后面创建存储过程编译将会报错

2:建表,用来存储结果

  • Table created. 
  • 3:创建存储过程,将数据插入表

    4:创建任务

    5:测试效果

    6:如果要删除任务,则运行下列的命令,145代表user_jobs视图中的job列

    三:使用nagios+fetion,定时去监控会话和进程数
    1:创建监控脚本,该脚本放任务计划中运行,每2分钟自动执行

    EOF

    2:创建第二脚本,用来处理前面监控脚本的日志输出,将结果返回给监控服务器

    四:实际效果
    [root@server198 ~]# /usr/local/nagios/libexec/check_nrpe -H 192.168.1.240 -c check_oracle_session
    Current session is 138,process is 153

    五:后期观察结果,估计和内存问题相关
    [oracle@server240 ~]$ sar -r |grep 10:20
    10:20:02 AM   3481492  21195164     85.89    675584  13661448   3683012    413552     10.10     
    [oracle@server240 ~]$ sar -r |grep 04:40
    04:40:01 PM   2076748  22599908     91.58    734088  14581728   4048864     47700      1.16

    本文出自 “斩月” 博客,谢绝转载!

    相关标签:
    来源:php.cn
    本站声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!