Oracle & Tibero 시퀀스(Sequence) 사용법 완벽 가이드

데이터베이스에서 기본 키나 일련번호를 자동 생성할 때 많이 사용하는 기능이 바로 시퀀스(Sequence) 입니다. Oracle과 Tibero는 모두 시퀀스를 지원하며, AUTO_INCREMENT 대신 활용할 수 있습니다. 이번 글에서는 시퀀스 생성, NEXTVAL·CURRVAL 사용법, 실무에서의 주의사항까지 한 번에 정리해드립니다.

시퀀스(Sequence)란?

시퀀스는 데이터베이스 객체 중 하나로, 중복되지 않는 숫자 값을 순차적으로 생성합니다.
주로 PRIMARY KEYID 컬럼 자동 증가 값으로 사용합니다.

  • MySQL: AUTO_INCREMENT
  • Oracle/Tibero: SEQUENCE + NEXTVAL

Oracle에서 시퀀스 사용법

시퀀스 생성

CREATE SEQUENCE user_seq
    START WITH 1
    INCREMENT BY 1
    NOCACHE
    NOCYCLE;
SQL
  • START WITH: 최초 시작값 (기본 1)
  • INCREMENT BY: 증가 단위 (기본 1)
  • NOCACHE: 메모리에 미리 값 캐싱하지 않음
  • NOCYCLE: 최대값 이후 다시 시작하지 않음

값 조회

SELECT user_seq.NEXTVAL FROM dual;  -- 다음 값 생성
SELECT user_seq.CURRVAL FROM dual;  -- 마지막 생성 값
SQL

INSERT 활용

INSERT INTO users (id, name)
VALUES (user_seq.NEXTVAL, '홍길동');
SQL

Tibero에서 시퀀스 사용법

Tibero도 Oracle과 거의 동일한 문법을 지원합니다.

시퀀스 생성

CREATE SEQUENCE tb_user_seq
    START WITH 1000
    INCREMENT BY 10
    CACHE 20
    NOCYCLE;
SQL

값 조회

SELECT tb_user_seq.NEXTVAL FROM dual;
SELECT tb_user_seq.CURRVAL FROM dual;
SQL

INSERT 활용

INSERT INTO tb_users (id, username)
VALUES (tb_user_seq.NEXTVAL, 'KimTae');
SQL

실무 활용 팁

  • 캐시(Cache) 옵션: CACHE n을 주면 성능은 향상되지만 DB 재시작 시 값이 건너뛰는 경우가 있음 → 금융/정산 데이터는 NOCACHE 권장
  • PK 충돌 방지: 여러 테이블에서 공용 시퀀스를 쓰지 말 것
  • 삭제 후 재시작: 시퀀스는 기본적으로 값이 되돌아가지 않음 → ALTER SEQUENCE 또는 재생성이 필요
  • 대량 데이터 입력: NEXTVAL을 한 번 호출 후 루프에서 사용 가능 (성능 최적화)

마무리

Oracle과 Tibero에서 시퀀스는 안정적으로 유니크한 번호를 자동 생성해주는 중요한 기능입니다.
실무에서는 NEXTVAL을 활용해 PK 값을 생성하고, 캐시/순환 옵션을 상황에 맞게 조정하는 것이 핵심입니다.

관련 포스팅들

위로 스크롤