오라클에서 시퀀스로 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;

 

이렇게 하면 시퀀스가 초기화 된다.

시퀀스를 삭제하는 것보다는 변경을 추천한다. 시스템의 영향도 때문이다.

사용자의 실수로 시퀀스의 권한 설정과 같은 부분은 누락 시킬 수 도 있기 때문이다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기