본문 바로가기

Database/Oracle

Oracle 시퀀스(Sequence) 이관

서로 다른 서버로 시퀀스를 이관할 때 기존 시퀀스 값을 그대로 이관해도 되나,

시퀀스 중복이나 문제 발생을 예방하기 위해 기존 값에 +10 정도 더해서 이관합니다. 물론 사전에 관련된 업무는 미리 중지해 놓고, 더 이상 쿼리 유입이 없는 상태여야 합니다.

 

시퀀스 삭제

-- USER01의 모든 sequence 삭제
SELECT 'DROP SEQUENCE  "'||sequence_owner||'"."'||sequence_name||'";' as "Query"
FROM DBA_SEQUENCES where SEQUENCE_OWNER='USER01';

 

CREATE SEQUENCE 구문 생성

-- create sequence 구문 생성 
SELECT 'CREATE SEQUENCE  "'||sequence_owner||'"."'||sequence_name||'"  MINVALUE '||MIN_VALUE||' MAXVALUE '|| MAX_VALUE||
' INCREMENT BY '||increment_by||' START WITH '||TO_CHAR(last_number+10)||' CACHE '||CACHE_SIZE||' '||DECODE (cycle_flag,'N','NOCYCLE','CYCLE')||';' as "Query"
FROM DBA_SEQUENCES where SEQUENCE_OWNER='USER01';

 

cycle=n, y 에 따라 시퀀스 구문이 다르게 생성됩니다.

 

 

DDL for Sequence WSSEQ cycle_flag = n

CREATE SEQUENCE “USER01”.”SEQ01″ MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 13607704 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ;

 

 

DDL for Sequence BASE_SEQ cycle_flag = y

CREATE SEQUENCE “USER01”.”SEQ02″ MINVALUE 1 MAXVALUE 999999999 INCREMENT BY 1 START WITH 69033215 CACHE 50 NOORDER CYCLE NOKEEP NOSCALE GLOBAL ;