I have a Procedure:
CREATE OR REPLACE PROCEDURE COMMON.UPDATE_ANEXE (p_app_id NUMBER)
IS
BEGIN
DELETE FROM COMMON_EXT.COM_CERERE_APLICATIE_ANEXA@racdb
WHERE FK_COM_CERERE_OP = p_app_id;
INSERT INTO COMMON_EXT.COM_CERERE_APLICATIE_ANEXA@racdb
(id, fk_aplicatie_anexa, fk_com_cerere_op)
SELECT id, fk_aplicatie_anexa, fk_com_cerere_op
from COM_CERERE_APLICATIE_ANEXA
WHERE FK_COM_CERERE_OP = p_app_id;
END;
/
that I call by:
private static class UpdateAnexeProcedure extends StoredProcedure {
private static final String PROCEDURE_NAME = "UPDATE_ANEXE";
private static final String PARAM = "p_app_id";
public UpdateAnexeProcedure(DataSource dataSource) {
setDataSource(dataSource);
setFunction(false);
setQueryTimeout(300);
setSql(PROCEDURE_NAME);
declareParameter(new SqlParameter(PARAM, Types.NUMERIC));
compile();
}
}
public synchronized void syncAnexeIntToExt(Long idCerere) {
LOGGER.debug("syncAnexeIntToExt(idCerere={})...", idCerere);
UpdateAnexeProcedure procedure = new UpdateAnexeProcedure(jdbcTemplate.getDataSource());
Map<String, Long> paramMap = new HashMap<String, Long>();
paramMap.put(AddApplicationProcedure.PARAM, idCerere);
procedure.execute(paramMap);
LOGGER.debug("DONE >> syncAnexeIntToExt(idCerere={}).", idCerere);
}
and I get often an error... "Transaction timed out". The database / application is used by many people... What can I do to speed things up?