问题的根源:资源的操作不当引起该问题,没用的资源没有及时释放
在oralce的OCCI接口操作过程中,每个conn.createStatement都会打开一个cursor,一般数据库的默认最大cursor数据量是1000。所以,在创建了1000个statement之后,就再也打不开statement。
解决方法之一,可以调节oracle数据库的默认cursor上限,虽然这样可以暂时解决该问题,但并不是长久之计。
解决方法之二,合理的释放statement。在每次createStatement之后,一般在循环里进行操作,都会忘记将没有的cursor释放掉。这里可以通过conn.terminateStatement来释放掉没有用的statement。