Grande problema com persistencia em banco de dados DB2

Olá pessoal estou enfrentando um grande problema aqui, por favor se alguem poder me ajudar.

Tenho uma aplicação que que inserir milhoes de registros, são muitos inserts ao mesmo tempo, ou seja digamos que um for de 10000 vezes fazendo inserts, parece que o meu drive não esta suportando isso e esta gerando um erro, gostaria de saber se alguem sabe como me ajudar, o banco de DB2 e o servidor de aplciações é Apache Tom Cat 5, por favor amigos isso esta em produção e tudo esta parado devido esses inserts, Obrigado novamente.

Erro:

BD: java.sql.SQLException: Limit on number of statements exceeded. BD: java.sql.SQLException: Limit on number of statements exceeded. BD: java.sql.SQLException: Limit on number of statements exceeded. java.lang.Exception: java.lang.Exception: java.sql.SQLException: Limit on number of statements exceeded. at sng.action.adm.CronogramaAction.OrganizerCronogramaAreas(CronogramaAction.java:1350) at sng.action.adm.CronogramaAction.XML_createCronogramaTreinamentoFerias(CronogramaAction.java:1200) at sng.action.adm.CronogramaAction.execute(CronogramaAction.java:259) at sng.Wrapper.execute(Wrapper.java:34) at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58) at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67) at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51) at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304) at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.Exception: java.sql.SQLException: Limit on number of statements exceeded. at sng.tools.ConnDB.prepare(ConnDB.java:50) at sng.action.adm.CronogramaAction.OrganizerCronogramaAreas(CronogramaAction.java:1333) ... 28 more Caused by: java.sql.SQLException: Limit on number of statements exceeded. at com.ibm.as400.access.JDError.throwSQLException(JDError.java:389) at com.ibm.as400.access.AS400JDBCConnection.getUnusedId(AS400JDBCConnection.java:1300) at com.ibm.as400.access.AS400JDBCConnection.prepareStatement(AS400JDBCConnection.java:2024) at com.ibm.as400.access.AS400JDBCConnection.prepareStatement(AS400JDBCConnection.java:1824) at sng.tools.ConnDB.prepare(ConnDB.java:45) ... 29 more

ngm consegue salvar a minha vida? kkkk por favor galera ajuda ai kkk

Se você está usando o DB2 em um AS400, talvez sua empresa tenha algum contrato de suporte da IBM. Você vai ter de pedir algum help ou pelo menos procurar no “knowledge base” do DB2 (no site da IBM).

Provavelmente vocês venham a ter de fazer algum trabalho de detetive nessa história toda.

Essa mensagem de erro “Limit on …” não é muito elucidativa, provavelmente vocês venham a ter de procurar em algum log do DB2 o que realmente ocorreu (por exemplo, excesso de preparedStatements com strings diferentes - o que costuma ocorrer quando você monta um PreparedStatement concatenando algumas strings em vez de passar todos os parâmetros ? via setAlgumaCoisa. É que o DB2 tenta montar um cache de PreparedStatements para que as consultas fiquem bem mais rápidas, mas se você montar a string do PreparedStatement em vez de conservá-la sempre igual, você simplesmente frita com o banco.

Então eu ate mando via prepared com os ? mas o problema e que sao muitas inserções , sera que existe uma maneira de preparar uma String enorme e mandar de uma vez só para o banco?

Olá pessoal, comecei a desenvolver um aplicativo usando formularios metre/detalhe da IDE Netbeans… configurei o banco de dados PostGres, consegui gerar o formulario mas na hora de copilar ou executar ele dá o seguinte erro!!!

Internal Exception: org.postgresql.util.PSQLException: ERROR: cross-database references are not implemented: “sae.public.tipo_ci”

alguem já passou por esse problema ? Agradeço toda e qualquer ajuda valeu!!!

O problema não é ter excesso de inserções; isso nunca foi problema. É montar a string em vez de ter uma string fixa para o PreparedStatement.

// Vai dar problema
String sql = "Insert " + bla + ble + bli + blo + blu + "";
PreparedStatement ps = .... (sql);
// Deve dar menos problemas
String sql = "Insert bla, ble, bli values (?, ?, ?)" ; // valor fixo, não montado
PreparedStatement ps = .... (sql);
ps.setString (1, ....);

E de modo geral, dê uma procuradinha em um fórum de DB2. Pode ser que você esteja fazendo alguma coisa que não se possa fazer em DB2 impunemente.

passei pelo mesmo problema aqui na empresa…
tive que quebrar as inserções em 4.
deu uma trabalheira infernal
:frowning:

entao cara o problema e que minhas inserções estao mais ou menos relacionadas exemplo, uma depende da outra manja?

Tipo ao inserir 5 registros o 5 depende do 4 que depende do 3 que depende do 2 que depende do 1 manja? isso que lasca td…