728x90
회사에서 백앤드 개발자로 업무를 하면서..
DB와 연관된 이슈가 발생했을 때 내가 직접 해결하지는 않지만
DBA에게 지원을 요청해야 할 경우가 종종 있다.
이번에도 내가 운영을 맏은 서비스가 Http Status 500 Error가 계속 발생하고 있다는 문의를 받고
검토를 한 결과 아래와 같은 원인을 확인했다.
SQL Error : 1502, SQLState: 72000
HHH000010: On release of batch it still contained JDBC statements
- 위의 코드를 해석하면 아래와 같다.
- Application 에서 SQL 작업 중 1502 에러가 발생하여, JDBC문이 정상적으로 작동되지 않은 것을 볼 수 있다.
이에 따라 나는 1502 Error에 대해 확인을 하게 되었다.
ORA-01502란?
ORA-01502는 테이블에서 사용중인 인덱스 Key, 혹은 인덱스 분할 영역에 대해서 사용이 불가능한 상태일 때 발생된다.
다양한 이유들이 있을 수 있지만, 결론적으로는 인덱스가 손상되어 특정 인덱스를 사용할 수 없을 때 발생하게 된다.
- 아마 추측하기로는 어플리케이션 내 비동기 처리 시 같은 트랜잭션이 동일한 값에 대해 저장/수정 작업을 진행하면서 인덱스가 충돌되어 손상된 것이 아닐까 싶다.
문제 해결 방안
문제 해결 방안은 간단하다.
말 그대로 인덱스를 재 구성해주면 해결되게 된다.
ALTER INDEX [손상된 인덱스 명] REBUILD;
비록 나의 경우 DBA의 지원을 받아 처리하였으나,
DBA가 없는 조직 혹은 개인 공부 시 위와 같은 이슈가 발생한다면
인덱스를 재 구성해주면 문제는 해결된다.
728x90