首页 >数据库 >mysql教程 >ORA-00020: No more process state objects available故障一例

ORA-00020: No more process state objects available故障一例

WBOY
WBOY原创
2016-06-07 16:00:282183浏览

今天一网友咨询数据库宕机了,当时数据库出现用户无法登录的症状,为了了解起因,去查看了网友的告警日志alert.log,发现在晚上1

今天一网友咨询数据库宕机了,当时数据库出现用户无法登录的症状,为了了解起因,去查看了网友的告警日志alert.log,发现在晚上10:00左右出现大量的ORA-00020: No more process state objects available 错误,具体错误日志如下:

Fatal NI connect error 12170.

 版本信息:
 适用于 Linux 的 TNS:版本 11.2.0.2.0 - 生产
 适用于 Linux 的 Oracle Bequeath NT 协议适配器:版本 11.2.0.2.0 - 生产
 TCP/IP NT 协议适配器Linux:版本 11.2.0.2.0 - 生产
时间:2015 年 5 月 11 日 14:28:28
  跟踪未打开。
  Tns 错误结构:
    ns 主要错误代码:12535
   
 TNS-12535:TNS:操作超时
    ns 次要错误代码:12560
    nt 主要错误代码:505
   
 TNS-00505:操作超时
    nt 次要错误错误代码:110
    nt 操作系统错误代码:0
  客户端地址:(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.102.150)(PORT=50069))
 5 月 11 日星期一 16:21: 14 2015
 线程 1 无法分配新日志,序列 1728
 私有链刷新未完成
 当前日志# 4 seq# 1727 mem# 0:/oradata/orcl/redo4.log
 线程 1 高级记录序列 1728(LGWR 开关)
 当前日志# 3 seq# 1728 mem# 0: /oradata/orcl/redo3.log
 Mon May 11 22:00:00 2015
 设置资源管理器计划调度程序[0x3107]:DEFAULT_MAINTENANCE_PLAN 通过调度程序窗口
 通过参数设置资源管理器计划 DEFAULT_MAINTENANCE_PLAN
 2015 年 5 月 11 日星期一 22:00:00
 启动后台进程 VKRM
 2015 年 5 月 11 日星期一 22:00:00
 VKRM 以 pid=83 启动,操作系统 id=27195
 2015 年 5 月 12 日星期二 00:56:23
 线程 1 无法分配新日志,序列 1729
 私有链刷新未完成
 当前日志# 3 seq# 1728 mem# 0: /oradata/orcl/redo3.log
 线程 1 前进到日志序列 1729(LGWR 开关)
 当前日志# 1 seq# 1729 mem# 0: /oradata/orcl/ redo01.log
 2015 年 5 月 12 日星期二 02:00:00
 关闭调度程序窗口
 通过调度程序窗口关闭资源管理器计划
 通过参数清除资源管理器计划
 5 月 12 日星期二 10:46: 48 2015
 线程 1 无法分配新日志,序列 1730
 私有链刷新未完成
 当前日志# 1 seq# 1729 mem# 0: /oradata/orcl/redo01.log
 线程 1 高级记录序列 1730(LGWR 开关)
 当前日志# 2 seq# 1730 mem# 0: /oradata/orcl/redo2.log
 2015 年 5 月 12 日星期二 14:36:13
 线程 1 无法分配新的日志,序列 1731
 私有链刷新未完成
 当前日志# 2 seq# 1730 mem# 0:/oradata/orcl/redo2.log
 线程 1 前进到日志序列 1731(LGWR 开关)
 当前日志# 4 seq# 1731 mem# 0: /oradata/orcl/redo4.log
 2015 年 5 月 12 日星期二 16:27:07
 线程 1 无法分配新日志,序列 1732
 私有链刷新不完整
 当前日志# 4 seq# 1731 mem# 0: /oradata/orcl/redo4.log
 线程 1 前进到日志序列 1732(LGWR 开关)
 当前日志# 3 seq# 1732 mem# 0: /oradata/orcl/redo3.log
 2015 年 5 月 12 日星期二 22:00:00
 通过调度程序窗口设置资源管理器计划 SCHEDULER[0x3108]:DEFAULT_MAINTENANCE_PLAN
 通过参数设置资源管理器计划 DEFAULT_MAINTENANCE_PLAN
 2015 年 5 月 12 日星期二 22:00:00
 启动后台进程 VKRM
 2015 年 5 月 12 日星期二 22:00:00
 VKRM 启动,pid=174,操作系统 id=25804
 星期三 5 月 13 日 02 :00:00 2015
 关闭调度程序窗口
 通过调度程序窗口关闭资源管理器计划
 通过参数清除资源管理器计划
 2015 年 5 月 13 日星期三 02:45:10
 线程 1 无法分配新资源日志,序列 1733
 私有链刷新未完成
 当前日志# 3 seq# 1732 mem# 0:/oradata/orcl/redo3.log
 线程 1 前进到日志序列 1733(LGWR 开关)
 当前日志# 1 seq# 1733 mem# 0:/oradata/orcl/redo01.log
 2015 年 5 月 13 日星期三 09:05:36
 检测到时间漂移。请检查 VKTM 跟踪文件以了解更多详细信息。
 2015 年 5 月 13 日星期三 09:15:55
 DM00 启动,pid=352,操作系统 id=4784,作业 SYSTEM.SYS_EXPORT_SCHEMA_01
 5 月 13 日星期三 09:15: 56 2015
 DW00 开始,pid=353,操作系统 id=4786,wid=1,作业 SYSTEM.SYS_EXPORT_SCHEMA_01
 2015 年 5 月 13 日星期三 10:11:52
 线程 1 无法分配新日志,序列 1734
 私有链刷新未完成
 当前日志# 1 seq# 1733 mem# 0:/oradata/orcl/redo01.log
 线程 1 前进到日志序列 1734(LGWR 开关)
 当前日志# 2 seq# 1734 mem# 0: /oradata/orcl/redo2.log
 2015 年 5 月 13 日星期三 13:15:38
 线程 1 无法分配新日志,序列 1735
 私有链刷新未完成
当前日志# 2 seq# 1734 mem# 0: /oradata/orcl/redo2.log
 线程 1 前进到日志序列 1735(LGWR 开关)
 当前日志# 4 seq# 1735 mem# 0:/oradata/orcl/redo4.log
 2015 年 5 月 13 日星期三 14:54:18
 线程 1无法分配新日志,序列 1736
 私有链刷新未完成
 当前日志# 4 seq# 1735 mem# 0:/oradata/orcl/redo4.log
 线程 1 前进到日志序列 1736(LGWR 开关)
 当前日志# 3 seq# 1736 mem# 0: /oradata/orcl/redo3.log
 2015 年 5 月 13 日星期三 17:39:31
 线程 1 无法分配新日志,序列 1737
私有链刷新未完成
 当前日志# 3 seq# 1736 mem# 0: /oradata/orcl/redo3.log
 线程 1 前进到日志序列 1737(LGWR 开关)
 当前日志# 1 seq# 1737 mem# 0: /oradata/orcl/redo01.log
 2015 年 5 月 13 日星期三 20:47:10
 ORA-00020:没有更多可用的进程状态对象
 ORA-20 错误将不会写入下一分钟
的警报日志。请查看跟踪文件以查看所有
ORA-20 错误。
 进程 m000 提交失败,错误 = 20
 2015 年 5 月 13 日星期三 20:52:37
 ORA-00020:没有更多进程状态对象可用
 ORA-20 错误将不会在下一分钟写入警报日志
。请查看跟踪文件以查看所有
ORA-20 错误。
 进程 m000 提交失败,错误 = 20
 2015 年 5 月 13 日星期三 20:57:38
 ORA-00020:没有更多进程状态对象可用
 ORA-20 错误将不会在下一分钟写入警报日志
。请查看跟踪文件以查看所有
ORA-20 错误。
 进程 m000 提交失败,错误 = 20
 2015 年 5 月 13 日星期三 21:01:35
 ORA-00020:没有更多进程状态对象可用
 ORA-20 错误将不会在下一分钟写入警报日志
。请查看跟踪文件以查看所有
ORA-20 错误。
 进程 W001 提交失败,错误 = 20
 2015 年 5 月 13 日星期三 21:02:38
 ORA-00020:没有更多进程状态对象可用
 ORA-20 错误将不会在下一分钟写入警报日志
。请查看跟踪文件以查看所有
ORA-20 错误。
 进程 m001 提交失败,错误 = 20
 2015 年 5 月 13 日星期三 21:05:44
 ORA-00020:没有更多进程状态对象可用
 ORA-20 错误将不会在下一分钟写入警报日志
。请查看跟踪文件以查看所有
ORA-20 错误。
 进程 W001 提交失败,错误 = 20
 2015 年 5 月 13 日星期三 21:12:38
 ORA-00020:没有更多进程状态对象可用
 ORA-20 错误将不会在下一分钟写入警报日志
。请查看跟踪文件以查看所有
ORA-20 错误。
 进程 m000 提交失败,错误 = 20
 进程 m001 提交失败,错误 = 20
 5 月 13 日星期三 21:42:39 2015
 ORA-00020:没有更多可用的进程状态对象
 ORA-20 错误将不会在下一分钟写入警报日志
。请查看跟踪文件以查看所有
ORA-20 错误。
 进程 m000 提交失败,错误 = 20
 进程 m001 提交失败,错误 = 20
 5 月 13 日星期三 21:43:00 2015
 流程 W001 提交失败,错误 = 20
 2015 年 5 月 13 日星期三 21:51:13
 由于参数 process 的值 (400),将参数 parallel_max_servers
的默认值从 1280 调整为 385 )
 正在启动 ORACLE 实例(正常)
 2015 年 5 月 13 日星期三 21:52:40
 ORA-00020:没有更多可用的进程状态对象
 ORA-20 错误将不会写入警报日志
 下一分钟。请查看跟踪文件以查看所有
ORA-20 错误。
 进程 m000 提交失败,错误 = 20
 2015 年 5 月 13 日星期三 21:53:33
错误信息一般在 Oracle 实例中创建辅助后台进程(如常见的子进程m00x或者子进程W00x等)时出现进程启动失败时出现,而造成该错误的可能性有多种,包括Oracle实例资源不足、操作系统资源不足等等。其中常见实例的实例的进程使用达到上限,可以通过查询v$resource_limit视图来了解实例生命周期内是否发生过进程总数暴满的情况:

ORA-00020: No more process state objects available故障一例

我们可以看到进程的 MAX_UTILIZATION 最大使用次数曾达到超过 LIMIT_VALUE 限定的 400,,
 会话达到了 640。

从以上V$resource_limit视图的输出来看,极有可能是processes总数达到上限导致了新的后台辅助进程创建失败,其实我们可以很方便地验证这一点:

[oracle@bntjftest ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Thu May 14 15:28:15 2015

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn