今天一网友咨询数据库宕机了,当时数据库出现用户无法登录的症状,为了了解起因,去查看了网友的告警日志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视图来了解实例生命周期内是否发生过进程总数暴满的情况:
我们可以看到进程的 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.