문서유형ㅣ기술정보
분야ㅣ관리/환경설정
적용제품버전ㅣTibero6, Tibero7
문서번호ㅣTADTI131
개요
SEQUENCE 사용하는 과정에서 START WITH 값을 변경하고 싶은 경우 DROP SEQUENCE / CREATE SEQUENCE를 통해 초기화하는 방법을 사용하는 경우 외에 아래의 다양한 방법을 통해 SEQUENCE를 초기화하는 방법에 대해 기술하였습니다.
방법
방안1: SEQUENCE CYCLE 적용을 통한 초기화
SEQUENCE의 값이 일정 숫자에 도달하면, CYCLE 옵션에 따라 1부터 다시 채번 되도록 하는 방법입니다.
주의
MAXVALUE에 도달해야 NEXT_VAL 초기 값으로 돌아갑니다.
-- MAXVALUE 도달 시 1부터 다시 채번 되도록 CYCLE 옵션 사용 CREATE SEQUENCE TEST_SEQ INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 9999 CYCLE;
방안2: SYNONYM을 이용한 SEQUENCE 삭제/생성을 통한 초기화
SYNONYM 객체를 통해 연결된 SEQUENCE를 재생성하여, 초기화 하는 방법입니다.
주의
주기적으로 SEQUENCE 생성/삭제 스케줄링이 필요합니다.
-- SEQUENCE 날짜별 생성 CREATE SEQUENCE TEST_SEQ_20260629 INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 9999; -- SYNONYM을 신규 SEQUENCE로 교체 CREATE OR REPLACE SYNONYM TEST_SEQ FOR TEST_SEQ_20260629; -- 새로운 SEQUENCE 생성 및 SYNONYM 연결 CREATE OR REPLACE SYNONYM TEST_SEQ FOR TEST_SEQ_20260630; -- 구 SEQUENCE 삭제 (스케줄링 권장) DROP SEQUENCE TEST_SEQ_20260629; DROP SEQUENCE TEST_SEQ_20260630;
방안3: SEQUENCE의 INCREMENT BY 조정을 통한 초기화
SEQUENCE의 현재 채번 값을 확인 후 INCREMENT BY 변경을 통해 초기화 합니다.
주의
SEQUENCE 초기화를 위한 절차 복잡, 프로시저 또는 스케줄링 작업이 필요합니다.
-- SEQUENCE 생성 CREATE SEQUENCE TEST_SEQ INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 9999; SELECT TEST_SEQ.NEXTVAL FROM DUAL; SELECT TEST_SEQ.NEXTVAL FROM DUAL; -- SEQUENCE 현재 값 확인 SELECT NEXT_VAL FROM SYS._DD_SEQ WHERE OBJ_ID = (SELECT OBJECT_ID FROM DBA_OBJECTS WHERE OBJECT_NAME='TEST_SEQ'); -- INCREMENT BY 조정 ALTER SEQUENCE TEST_SEQ INCREMENT BY - (NEXT_VAL - 1); ex) NEXT_VAL=20, ALTER SEQUENCE TEST_SEQ INCREMENT BY -20); -- INCREMENT BY 값으로 NEXT_VAL 값 조정 SELECT TEST_SEQ.NEXTVAL FROM DUAL; -- SEQUENCE 채번 값을 다시 1부터 시작 되도록 설정 ALTER SEQUENCE TEST_SEQ INCREMENT BY 1;
방안4: 293704 패치 적용을 통해 내부 _DD_SEQ 업데이트를 통한 초기화
_DD_SEQ 내부 테이블의 값을 UPDATE하여 SEQUENCE의 채번 값을 초기화 합니다.
주의
내부 SEQUENCE 테이블 제어 및 시스템 파라미터 사용, SEQUENCE CACHE 사이즈만큼 적용된 후 변경된 NEXT_VAL부터 채번을 시작합니다.
참고
Tibero 6.7.1, 7.2.1 이상 기본 사용 가능
-- SEQUENCE 생성 CREATE SEQUENCE TEST_SEQ INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 9999; -- _DD_SEQ UPDATE 값을 적용하기 위해 파라미터 활성화 ALTER SYSTEM SET _SEQ_GET_NEXTVAL_FROM_DD_TABLE = 'Y'; -- 현재 NEXT_VAL 확인 SELECT NEXT_VAL FROM SYS._DD_SEQ WHERE OBJ_ID = (SELECT OBJECT_ID FROM DBA_OBJECTS WHERE OBJECT_NAME='TEST_SEQ'); -- 변경 하고자 하는 채번 초기 값 설정 UPDATE SYS._DD_SEQ SET NEXT_VAL=100 WHERE OBJ_ID = (SELECT OBJECT_ID FROM DBA_OBJECTS WHERE OBJECT_NAME='TEST_SEQ'); -- 파라미터 원복 ALTER SYSTEM SET _SEQ_GET_NEXTVAL_FROM_DD_TABLE = 'N';
방안5: 316049 패치 적용을 통해 SEQUENCE의 RESTART START WITH %d 사용을 통한 초기화
ALTER SEQUENCE %s RESTART START WITH %d; 공식 기능을 적용하여, 초기화하는 방법입니다.
참고
Tibero 6.7.4, 7.2.4 이상 기본 사용 가능
-- SEQUENCE 생성 CREATE SEQUENCE TEST_SEQ INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 999; -- SEQUENCE 초기화 DDL 수행 ALTER SEQUENCE TEST_SEQ RESTART START WITH 1 ;