转载

oracle 12.2数据库参数_cursor_obsolete_threshold导致大量等待事件cursor: mutex X

oracle 12.2.0.1.0数据库参数_cursor_obsolete_threshold默认设置不合理导致大量等待事件cursor: mutex X

1、现象

2017年年底某一天,接到电话,某业务系统突然出现异常、基本不可用,该业务系统使用的是oracle 12.2.0.1.0 RAC。 

 

2、处理

查看告警日志,发现有部分客户端连接超时的报错;

 

查看等待事件,发现两个节点上都有大量(七八百)的等待事件:

cursor: mutex X

 

通过和应用维护厂家沟通,决定通过重启数据库,优先恢复业务;

 

3、原因

后续查找原因,经查证、发现是Oracle 12.2版本的参数_cursor_obsolete_threshold默认设置不合理

 

The default value for _cursor_obsolete_threshold is 1024 pre 12.2, but has increased to 8192 in 12.2.

 

Set _cursor_obsolete_threshold=1024 in CDB level: 
example command: 
alter system set "_cursor_obsolete_threshold"=1024 scope=spfile; 
restart the database 

 

 

4、处理

已经按照oracle的建议调整了隐含参数,但这是个静态参数、要重启整个CDB才生效、因为集群环境还有其他业务系统的pdb数据库在用,所以需要协调一个维护时间窗口来重启整个CDB

5、建议

新版本的数据库上线前应该多做压力测试、功能测试等,并且尽可能优化默认参数(最好有oracle原厂的咨询和建议)


6、获取

select a.ksppinm name,b.ksppstvl value,a.ksppdesc description 
from x$ksppi a,x$ksppcv b 
where a.indx = b.indx 
and a.ksppinm like '&parameter';
_cursor_obsolete_threshold


select a.ksppinm name,b.ksppstvl value,a.ksppdesc description 
from x$ksppi a,x$ksppcv b 
where a.indx = b.indx 
and a.ksppinm like '_cursor_obsolete_threshold';

正文到此结束
Loading...