最近、Sybase から Oracle 11g データベースに移行しました。私たちのアプリケーションは、Spring 3.0.3 と IBATIS 2.3.4 を使用してデータベースとやり取りします。最近、ORA-01000 Maximum open cursors exceeded 例外に直面し始めました。DBA と話をしたところ、行を挿入するたびに 1 つのカーソルを占有していることがわかりましたが、これは正しくありません。カーソル サイズは、DBA によって設定された 300 です。
ibatis の設定または Java コードを使用してこれを処理する方法を教えてください。Sybase でこの問題に直面したことはありません。
DAO クラスの現在のコード構造:
try{
sqlMapClient.startTransaction();
sqlMapClient.startBatch();
for(...){
sqlMapClient.insert(<in table 1>);
sqlMapClient.insert(<in table 2>);
}
sqlMapClient.executeBatchDetailed();
sqlMapClient.commitTransaction();
}
catch(..){
}
finally{
sqlMapClient.endTransaction();
}
注: 操作は all or none である必要があるため、中間コミットは実行できません。