我有两个DB,其中我使用DB链接从Db1连接到DB2。 我正在使用JDBC,C3Po jar,oracle 11g。这是每天运行的批处理作业。
在成功运行的第一次运行中,在merge命令期间插入了约40万条记录,而在第二次运行(其日常工作)期间,我们面临问题。我猜问题是因为合并查询?合并有条件,如果存在则更新,否则插入。它很有可能会重新运行400k,并且大多数情况下都相同(目前),那么查找和更新/插入是否会导致此问题?
这就是我的逻辑样子
method(){
1.select query where DBlink involved, contains Db1 and Db2 tables
2.iterate the result and using batch updates
save (using MERGE) the result from step 1 to a table which is not used in step 1 query.
we are dealing with over 100k records here.
3. stmt.executeBatch();//This is where the sql exception is occurring
closeResultSet(rs);
clearBatch(stmt);
closePreparedStatement(stmt);
closePreparedStatement(pstmt);//select statement
}
我的代码中没有关闭DBlink。上面的逻辑将在8个(更大或更少)线程上并行运行,每个线程具有与db自己的连接的不同输入。 这是我的想法和疑问