Spring Batch를 작업하고 처음 실행하면 만날 수 있는 오류입니다.
Spring Batch는 작업마다 로그를 Meta-Data Table에 기록합니다.
이때 해당 테이블이 없는 경우 아래 오류가 발생합니다.
Caused by: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT JOB_INSTANCE_ID, JOB_NAME from BATCH_JOB_INSTANCE where JOB_NAME = ? and JOB_KEY = ?]; nested exception is java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
해결 방법은 간단합니다. 해당 테이블을 생성하면 됩니다.
테이블은 자동으로 생성할 수도 있고, 수동으로 생성할 수도 있습니다.
application.properties 또는 application.yml 파일에 옵션을 추가하면 됩니다.
먼저 자동 생성 스키마 초기화 옵션입니다.
spring.batch.jdbc.initialize-schema=always
수동 생성은 옵션을 불가로 변경하고, 직접 디비에서 테이블을 생성하면 됩니다.
관련 테이블 스키마는 아래 참고 페이지에 있습니다.
spring.batch.jdbc.initialize-schema=never
참고로 Embeded DataSource를 사용하는 경우는 별도 옵션이 있습니다.
spring.batch.jdbc.initialize-schema=embeded