오라클에서 시퀀스로 PK 를 설정하는 경우도 있고,
시퀀스와 다른 컬럼의 조합으로 PK 를 구성하는 경우도 있다.
그런데 타 시스템 또는 타 시스템 DB 와 인터페이스를 할 때 시퀀스의 길이가 초과 되는 경우가
발생하기도 하고, 데이터 마이그레이션 할 때 시퀀스를 초기화 해야 하는 경우도 있다.
이 때 시퀀스의 현재값을 확인하고 시퀀스를 초기화 해야 하는데, 그 방법을 알아보겠다.
1. 현재 시퀀스 값을 확인한다.
SELECT LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME = 'ORDER_SEQ'
2. 현재의 시퀀스 값 만큼 INCREMENT 를 뺀다.
--현재 SEQ가 1000 이라고 가정
ALTER SEQUENCE ORDER_SEQ INCREMENT BY -1000;
3. 시퀀스의 다음 값을 가져오면 -1000 이 된다.
SELECT ORDER_SEQ.NEXTVAL FROM DUAL;
4. 다시 시퀀스의 INCREMENT 를 1로 설정한다.
ALTER SEQUENCE ORDER_SEQ INCREMENT BY 1;
이렇게 하면 시퀀스가 초기화 된다.
시퀀스를 삭제하는 것보다는 변경을 추천한다. 시스템의 영향도 때문이다.
사용자의 실수로 시퀀스의 권한 설정과 같은 부분은 누락 시킬 수 도 있기 때문이다.