最近对新接手客户的一套11g的2节点的rac核心库做深度巡检,发现节点1,2都存在间断性的ORA-00020报错(信息如下),最早是从2017年9月20号开始,最近几天也有报错,收集信息,开始做分析(以下主要以1节点信息进行分析)。
******************************
MonSep 21 15:39:16 2020
ORA-00020:maximum number of processes (1500) exceeded
ORA-20errors will not be written to the alert log for
thenext minute. Please look at trace files to see all
theORA-20 errors.
********************************
Oswps文件分析
分析最近一次报错的oswps文件,业务连接600多,还达不到总连接1500的一半,大部分进程多为ora_p的并行进程。猜测进程异常可能是由于并行进程导致。

Ash报告分析
分析问题时间段的ash报告,817f8xwxv3kdc这条sql对应的是相关的并行等待事件。对语句进程排查未在语句中发现hint相关的并行。全库数据库对象上也未开启并行度。难道是在会话级别开启了并行?

Awrsqrpt报告
查看817f8xwxv3kdc该语句的历史执行计划,执行步骤确实存在并行。最重要的是底部有SQLprofile信息,说明该语句绑定了执行计划,而且这个sqlprofile是SYS开头的,基本可以确定是通过DBMS_SQLTUNE包跑出来的SQLproile,随后直接accept的。

Sqlprofile信息
查看绑定的sqlprofile信息为17年9月13号创建的(如下如图),且此类未绑定变量的语句也可以使用该sqlprofile。而ORA-00020报错也是在这个时间后才间断性的出现的。

该SQLprofile的内容中(如下图),指定了paralellel,但未执行并行度,也就是说根据当前负载自动决定并行度。

在随后的会话监控中也抓到了此类语句并行运行情况,并行度256并且是跨节点的2个slaveset。此类语句并行多跑几个,总进程基本就会跑满。

和客户沟通该sqlprofile为17年上线时操作,待维护窗口可以考虑删除及后期优化。
并行度能分配到256,说明并行参数这块未做限制,根据硬件cpu配置给客户提出了以下参数优化。
alter system set parallel_max_servers =64; alter system set parallel_servers_target=64; alter system set parallel_force_local=true; alter system set "_PX_use_large_pool"=true scope=spfile; |




