본문 바로가기
Spring/batch

Spring Batch ORA-08177

by 무대포 개발자 2020. 8. 18.
728x90
반응형

Spring Batch ORA-08177 발생 원인

  • spring batch 테이블 접근 시 isolation level 이 serialize 로 걸려있을 때 위 에러가 발생.
  • 즉, BATCH_JOB_INSTANCE, BATCH_JOB_EXECUTION 테이블 들에 동시 접근할 때 위 에러가 발생.

재연 방법

  • 같은 배치를 몇십개씩 백그라운드로 돌리면 나옴.
  • sh xxxxxx &

해결방안

@Configuration
public class JobConfiguration extends DefaultBatchConfigurer {

    @Autowired
    private DataSource dataSource;

    @Override
    protected JobRepository createJobRepository() throws Exception {
        JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
        factory.setDataSource(dataSource);
        factory.setTablePrefix("BATCH_");
        factory.setTransactionManager(new DataSourceTransactionManager(dataSource));
        factory.setIsolationLevelForCreate("ISOLATION_READ_COMMITTED");
        factory.afterPropertiesSet();
        return factory.getObject();
    }
}

reference

댓글