오라클 시퀀스는 한 개인데 NEXTVAL이 다르게 올라간 날

정우씨 2024. 3. 9. 10:39

▶개요

최근 원래는 개별 테이블의 시퀀스를 사용하던 시스템을 늘 사용하다가 이번에 시스템이 개편되면서 모든 테이블이 한 개의 시퀀스를 바라보게 되었어요.

이런 경우에는 특정 개발자가 데이터를 적재할 때 NEXTVAL로 적재하면 문제가 생길 수 있었습니다.

어느 날 데이터가 들어가는데 시퀀스 때문에 오류가 나서 모니터링을 하던 도중 고객의 시퀀스가 저의 PC에서 올라가는 시퀀스보다 훨씬 높게 올라가고 있더라고요.

이게 말이 되는 건가 선배님들한테 물어보고 다니던 도중 어떤 부장님이 오셔서 알려주셨어요.

▶ 시퀀스 NEXTVAL이 다르게 올라감

해당 현상은 시퀀스에 설정된 캐시 때문이었습니다.

만약 시퀀스에 캐시가 100이 설정되어 있다면 오라클의 멀티 인스턴스 환경에서 [인스턴스 1]은 1부터, [인스턴스 2]는 100부터 채번이 진행되는 거죠.

캐시를 왜 사용하나도 찾아봤는데 속도면에서 유리하다고 합니다.

 

▶ 오류현상 해결법

저 같은 경우는 제가 임의로 NEXTVAL로 데이터를 수만 건 적재한 상황에 특정 인스턴스에서 오류가 확인되었습니다.

(정확히 이 사유 때문에 났는지는 모르겠음, 사용자 NEXTVAL과 기존 키값의 중복현상 확인)

시퀀스를 10만 건 증가하여 중간에 있는 시퀀스와 중첩되지 않도록 증가시켜 해당 현상을 해결했습니다.

이상으로 오라클 시퀀스는 한 개인데 NEXTVAL이 다르게 올라간 날 포스팅을 마칩니다.