一、oracle-04031错误
1. 没有绑定编量造成shared_pool碎片过多,同时shared_pool_size太小
在风控开发过程中由于没有使用变量绑定,导致oracle共享池溢出。Oracle共 享池一个重要作用就是将解析好的sql语句进行缓存,如果有类似的sql,直接从共享池中获取并执行,不需要再次解析。
服务器开发时,尽量通过变量绑定的方式访问数据库。
2. 过度的开CURSOR而不关闭。
在埋单服务器中,一条埋单信息对应一个线程,每个线程都调用oracle埋单存储过程来处理数据,这样与数据库交互频繁而且大量并发数据要处理,存数过程中使用了游标,游标定义好后同过
for r_wt in c_wt
loop
end loop;
方式来访问数据,这种方式游标是自动打开取数据的,结果存储过程处理完成后忘记了关闭游标了,埋单服务器启动执行过了一段时间后出现 04031错误。
解决方法:
关闭游标
if c_wt % isopen then
close c_wt
end if;
3.Large_pool,Java_pool太小造成的