今天公司一大早收到通知,昨天数据库数据未生成。当时查看跑批的日志,发现平常只需运行半个小时的过程,今天整整运行了7个小时(明显存在问题),导致后续数据正常时间读取失败。为了了解起因,查看了oracle 的告警日志,发现在早上1点半左右出现了错误 ORA-00020: No more process state objects available,进程p062在执行的过程中被告知无可用的进程状态 导致进程hang在哪里,知道有连接断开才继续,具体日志信息如下:

  Current log# 5 seq# 9361 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo05.log
Sat Mar 26 01:31:31 2016
Thread 1 advanced to log sequence 9362 (LGWR switch)
Current log# 6 seq# 9362 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo06.log
Thread 1 advanced to log sequence 9363 (LGWR switch)
Current log# 9 seq# 9363 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo09.log
Thread 1 advanced to log sequence 9364 (LGWR switch)
Current log# 10 seq# 9364 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo10.log
Thread 1 advanced to log sequence 9365 (LGWR switch)
Current log# 3 seq# 9365 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo03.log
Sat Mar 26 01:37:13 2016
ORA-00020: No more process state objects available
ORA-20 errors will not be written to the alert log for
the next minute. Please look at trace files to see all
the ORA-20 errors.
Process P062 submission failed with error = 20
Sat Mar 26 01:40:46 2016
ORA-00020: No more process state objects available
ORA-20 errors will not be written to the alert log for
the next minute. Please look at trace files to see all
the ORA-20 errors.
Process P062 submission failed with error = 20
Sat Mar 26 01:46:17 2016
ORA-00020: No more process state objects available
ORA-20 errors will not be written to the alert log for
the next minute. Please look at trace files to see all
the ORA-20 errors.
Process m000 submission failed with error = 20
Sat Mar 26 01:48:45 2016
Thread 1 advanced to log sequence 9366 (LGWR switch)
Current log# 11 seq# 9366 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo11.log
Sat Mar 26 01:55:33 2016
Thread 1 advanced to log sequence 9367 (LGWR switch)
Current log# 12 seq# 9367 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo12.log
Thread 1 advanced to log sequence 9368 (LGWR switch)
Current log# 4 seq# 9368 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo04.log
Sat Mar 26 01:56:39 2016
Thread 1 advanced to log sequence 9369 (LGWR switch)
Current log# 1 seq# 9369 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo01.log
Sat Mar 26 02:00:15 2016
Thread 1 advanced to log sequence 9370 (LGWR switch)
Current log# 2 seq# 9370 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo02.log
Sat Mar 26 02:04:33 2016
Thread 1 advanced to log sequence 9371 (LGWR switch)
Current log# 7 seq# 9371 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo07.log
Thread 1 advanced to log sequence 9372 (LGWR switch)
Current log# 8 seq# 9372 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo08.log
Thread 1 advanced to log sequence 9373 (LGWR switch)
Current log# 5 seq# 9373 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo05.log
Sat Mar 26 02:04:43 2016
Thread 1 advanced to log sequence 9374 (LGWR switch)
Current log# 6 seq# 9374 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo06.log
Thread 1 advanced to log sequence 9375 (LGWR switch)
Current log# 9 seq# 9375 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo09.log
Sat Mar 26 02:26:22 2016
Thread 1 advanced to log sequence 9376 (LGWR switch)
Current log# 10 seq# 9376 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo10.log
Sat Mar 26 04:00:04 2016
DM00 started with pid=39, OS id=33332, job ETLUSER.NBIFULLDUMP
Sat Mar 26 04:00:05 2016
DW00 started with pid=37, OS id=33334, wid=1, job ETLUSER.NBIFULLDUMP
Sat Mar 26 04:00:14 2016
Thread 1 advanced to log sequence 9377 (LGWR switch)
Current log# 3 seq# 9377 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo03.log
Sat Mar 26 04:00:23 2016
DW01 started with pid=41, OS id=33342, wid=2, job ETLUSER.NBIFULLDUMP
Sat Mar 26 04:00:23 2016
DW02 started with pid=42, OS id=33344, wid=3, job ETLUSER.NBIFULLDUMP
Sat Mar 26 04:00:23 2016
DW03 started with pid=43, OS id=33346, wid=4, job ETLUSER.NBIFULLDUMP
Sat Mar 26 04:00:23 2016
DW04 started with pid=44, OS id=33348, wid=5, job ETLUSER.NBIFULLDUMP
Sat Mar 26 04:00:23 2016
DW05 started with pid=45, OS id=33350, wid=6, job ETLUSER.NBIFULLDUMP
Sat Mar 26 04:00:23 2016
DW06 started with pid=46, OS id=33352, wid=7, job ETLUSER.NBIFULLDUMP
Sat Mar 26 04:00:23 2016
DW07 started with pid=47, OS id=33354, wid=8, job ETLUSER.NBIFULLDUMP
Sat Mar 26 04:03:57 2016
Thread 1 advanced to log sequence 9378 (LGWR switch)
Current log# 11 seq# 9378 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo11.log
Sat Mar 26 04:04:18 2016
Thread 1 advanced to log sequence 9379 (LGWR switch)
Current log# 12 seq# 9379 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo12.log
Sat Mar 26 04:04:42 2016
Thread 1 advanced to log sequence 9380 (LGWR switch)
Current log# 4 seq# 9380 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo04.log
Sat Mar 26 04:05:06 2016
Thread 1 advanced to log sequence 9381 (LGWR switch)
Current log# 1 seq# 9381 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo01.log
Sat Mar 26 04:05:51 2016
Thread 1 advanced to log sequence 9382 (LGWR switch)
Current log# 2 seq# 9382 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo02.log
Sat Mar 26 04:51:01 2016
Thread 1 cannot allocate new log, sequence 9383
Private strand flush not complete
Current log# 2 seq# 9382 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo02.log
Thread 1 advanced to log sequence 9383 (LGWR switch)
Current log# 7 seq# 9383 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo07.log
Sat Mar 26 04:52:37 2016
Thread 1 cannot allocate new log, sequence 9384
Private strand flush not complete
Current log# 7 seq# 9383 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo07.log
Thread 1 advanced to log sequence 9384 (LGWR switch)
Current log# 8 seq# 9384 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo08.log
Sat Mar 26 08:28:51 2016
Thread 1 advanced to log sequence 9385 (LGWR switch)
Current log# 5 seq# 9385 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo05.log
Sat Mar 26 12:00:28 2016
Thread 1 advanced to log sequence 9386 (LGWR switch)
Current log# 6 seq# 9386 mem# 0: /u01/app/oracle/oradata/ORCL/ORCL/onlinelog/redo06.log

该错误信息一般在Oracle实例在创建一些辅助后台进程(如mmon的子进程m00x或者子进程W00x等)时出现进程启动失败时出现,而造成该错误的可能性有多种,包括Oracle实例资源不足、操作系统资源不足等等。其中较为常见的是实例instance的process使用达到上限,可以通过查询v$resource_limit视图来了解实例生命周期内是否发生过process总数暴满的情况:

我们可以看到processes的MAX_UTILIZATION最大使用数目曾到过LIMIT_VALUE限定的100,

sessions是126

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

[oracle@db trace]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1. Production on Sat Mar  :: 

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

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1. - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options SQL> show parameter processes NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer
db_writer_processes integer
gcs_server_processes integer
global_txn_processes integer
job_queue_processes integer
log_archive_max_processes integer
processes integer
SQL>

以上我们可以清楚地了解到是因为数据库在实际运行中出现了processes进程总数达到参数设定上限从而导致问题出现。

那么可以合理增加初始化参数processes来解决该问题。

ORA-00020: No more process state objects available故障一例的更多相关文章

  1. Linux进程状态 ( Linux Process State Codes)

    进程状态代码及说明: STATE代码 说明 D 不可中断的睡眠. 通常是处于I/O之中. R 运行中/可运行. 正处于运行队列中. S 可中断的睡眠. 等待某事件发生. T 已停止. 可能是因为she ...

  2. Linux process state codes

    Here are the different values that the s, stat and state output specifiers (header "STAT" ...

  3. Linux 进程状态 概念 Process State Definition

    From : http://www.linfo.org/process_state.html 进程状态是指在进程描述符中状态位的值. 进程,也可被称为任务,是指一个程序运行的实例. 一个进程描述符是一 ...

  4. Linux 进程状态标识 Process State Definition

    From : http://www.linfo.org/process_state.html 译者:李秋豪 进程状态标识是指在进程描述符中状态位的值. 进程,也可被称为任务,是指一个程序运行的实例. ...

  5. linux 常用命令-ps(process state)

    ps -ef | grep 端口号:查看某个端口的占用情况 ps -tunlp | grep 端口号:查看占用端口的进程名称

  6. Oracle异常汇总

    持续更新中,可参见https://hnuhell.gitbooks.io/oracle_errmg/content/或https://hnuhell.github.io/Oracle_ERRMG/上的 ...

  7. Oracle中session和processes的设置

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  8. 【翻译自mos文章】在10g中,当发生ORA-00020时,sqlplus登陆会报“connected to an idle instance”

    在10g中.当发生ORA-00020时,sqlplus登陆会报"connected to an idle instance" 来源于: Sqlplus Logon Reports ...

  9. Oracle 中session和processes的初始设置

    http://blog.163.com/succu/blog/static/193917174201252911727149/ 1.sessions   在初始化参数所设定的限制中,最为人所知的估计就 ...

随机推荐

  1. C#中委托实现的异步编程

    所谓同步:如果在代码中调用了一个方法,则必须等待该方法所有的代码执行完毕之后,才能回到原来的地方执行下一行代码. 异步:如果不等待调用的方法执行完,就执行下一行代码. 1.0 同步例子: class ...

  2. ASP.NET登录控件login。

    1.Login控件.通常情况下会出现3个核心元素.用户名文本框.密码输入框.提交凭证的按钮. 1>.比较重要的属性:CreateUserText属性:包含站点注册页的链接文本.CreateUse ...

  3. angular源码分析:angular源代码的获取与编译环境安装

    一.安装git客户端 1.windows环境推荐使用TortoiseGit. 官网地址:http://tortoisegit.org 下载地址:http://tortoisegit.org/downl ...

  4. JavaScript数组与对象的关系

    JavaScript的数组,相比其他语言,是比较特殊的.数组是Object类型,只不过,有几个比较特殊的地方: 有索引下标 有默认的length属性 是有序的(注意,对象是无序的) 可以使用一些特殊的 ...

  5. SAP用户权限解剖及自修改

    通常BASIS会使用PFCG做权限管理,时你保存时会产生一个系统外的profile name,记得SU01时用户有profile 和role两栏位吗?它们的关系如何呢? 首先明白几个概念.1.acti ...

  6. SAP中删除假脱机请求

    好几次公司的SAP都碰到所有的SMARTFORM都打印不了的情况.查了一下原因原来是假脱机请求太多了.清了一下,问题就解决了.    删除假脱机请求的一些方法:    1.避免经常出现此类错误,最好还 ...

  7. Client JQuery invoke NetSuite Suitelet

    Please indicate the source if you need to repost. Client jQuery could initialize a cross-domain requ ...

  8. Android高级模糊技术[转]

    今天我们来更深入了解一下Android开发上的模糊技术.我读过几篇有关的文章,也在StackOverFlow上看过一些相关教程的帖子,所以我想在这里总结一下学到的东西. 为什么学习这个模糊技术? 现在 ...

  9. 操作系统开发系列—13.i.进程调度 ●

    上面的三个进程都是延迟相同的时间,让我们修改一下,尝试让它们延迟不同的时间. void TestA() { int i = 0; while (1) { disp_str("A." ...

  10. spring.net (2)环境搭建 对(1)例子的解释和扩充

    在上文中的例子实现了spring.net 控制反转的简单例子: 但是不免其中会有一些疑问. 例子中的配置文件是什么意思: app.config的配置规则可以参考web.config的配置详情 < ...