在之前做压力测试时报出ORA-12519错误,于是通过增加process这个参数的上限值暂时抑止了这个错误的产生,不过今天开发人员在进行压力测试持续10分钟左右后又报出了这个错误.这时在metalink上一篇名为" Troubleshooting Guide TNS - 12519 TNS - 12516 ORA -12519 ORA - 12516 [ID 552765.1]"的文章给了我思路。
该文章清晰的分析了出现该错误最普遍的原因是由于sessions的上限已经达到,TNS lisnter的service handler会被置为block状态。而listener会计算每个建立到instance的连接数,但是并不会立即得到已经断开的连接的信息。而只有当PMON通过service_update来更新listener的时候才能获得真实的负载情况。具该文档描述PMON对listener提供service_udpate信息的频率是根据instance的负载变化的,最大的间隔为10分钟。从以上就可以得知,在PMON并没有向listenter提供最新的service_update信息时,listener获得的当前insatnce load和实际的insatnce load是不同的。而压力测试中的java程序的实现过程是每个并发用户对oracle建立一个连接,执行一个sql接着马上关闭改连接,如此循环下去。根据以上分析通知测试人员在jiava程序中设置1~2秒的一个休眠时间,再次进行压力测试结果一直没有出现ORA-12519错误了。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/20801486/viewspace-695713/ ,如需转载,请注明出处,否则将追究法律责任。