代码改变世界

12C -- ORA-12850: 无法在所有指定实例上分配从属进程: 需要 2, 已分配 1

2017-11-06 11:04  abce  阅读(3741)  评论(0编辑  收藏  举报

使用客户端连接到oracle 12.2.0.1 rac数据库,报以下错误信息:

ORA-12850: 无法在所有指定实例上分配从属进程: 需要 2, 已分配 1

 

因为没有mos账号,只好谷歌一下了。找到了一个类似的错误:

http://blog.itpub.net/25923810/viewspace-2144072/

 

解决方法:

SQL> alter system set "_report_capture_cycle_time"=0; /* Default is 60 seconds */  
  
注意:_report_capture_cycle_time=0 /* This is system modifiable with immediate */  

 设置该参数后,重启pdb后再次尝试连接,不再有报错信息出现。

 

注:因为没有mos账号,没法看mos文章的具体内容,生产环境的话还是最好进mos确认一下!

 

补充:

Oracle 12C -- Automatic Report Capturing Feature

自动报告捕捉特性

如果是升级到12c,可能会检测到mmon_slave模块使用了大量的cpu。这跟12c的新特性:自动报告捕捉特性有关。

在oracle 11g中引入了real-time sql monitor,用来实时监控sql的性能。

在12c中加强了对历史sql的监控功能,有点类似ash对历史信息的管理,自动报告捕捉特性使用后台进程mmon_slave去执行一些监控SQL,以辨别资源敏感型的SQL,并自动为这些SQL生成SQL Monitoring report。
这些SQL可以从(G)V$SQLSTATS得到。

监控SQL,mmon消耗了一点CPU,对于新特性来说,这是正常的行为。但是如果消耗cpu太多就需要关注了。当消耗过高的cpu时会报ORA-12850。

该特性可以用如下的语句来禁用:

SQL> alter system set "_report_capture_cycle_time"=0; /* Default is 60 seconds */  
  
注意:_report_capture_cycle_time=0 /* This is system modifiable with immediate */