[오라클]DDL-시퀀스의 LAST값 변경
이관 및 시스템을 구축하다보면
테이블의 컬럼에 시퀀스를 사용하였는데 테이블에 들어있는 MAX값이
시퀀스의 Last값과 차이가 있을 때 중복이 발생하거나 시퀀스의 Last값을 줄여 놓아야
할 필요가 있을 때가 있다. 다음과 같이 사용하면 시퀀스를 Drop하지 않고도 시퀀스의
Last값을 조정할 수 있다.(Alter Sequence 명령이 있다면 좋을텐데...)
-----------------------------------------------------------------------------
1. 시퀀스Last값과 컬럼MAX값의 갭이 크지 않으면서 시퀀스Last값을 증가시킬
필요가 있을 경우 다음과 같이 nextval을 증가시킨다.
SQL> select 시퀀스명.nextval
from dual connect by level <= (12514 - 10001);
----- -----
컬럼MAX값 시퀀스Last값
2. 시퀀스Last값과 컬럼MAX값의 갭이 크다면 increment값으로 증가/감소 시키기
2-1. 시퀀스 정보 조회
SQL> select * from user_sequences
where sequence_name ='시퀀스명';
2-2. 차이값 구하기
SQL> select 컬럼MAX값 - 시퀀스Last값 from dual;
-- 결과
1671677-169
-----------
-19882
3. 차이값만큼 increment를 setting
SQL> alter sequence 시퀀스명 increment by -19882;
4. increment를 setting한 만큼의 값으로 Nextval을 이용하여 증가시킴
SQL> select 시퀀스명.nextval from dual;
5. increment를 다시 원래의 증가값으로 setting
SQL> alter sequence 시퀀스명 increment by 1;
'01.오라클 > 001.DB 관리' 카테고리의 다른 글
[오라클]사용자별 오브젝트 갯수 조회 (0) | 2012.12.19 |
---|---|
[오라클]LOB를 가진 테이블의 관리 (0) | 2012.12.19 |
[오라클]RAC 리스너 / TNS / JDBC(OCI, THIN) 설정 (0) | 2012.12.19 |
[오라클]Redo Log Resize 방법 (0) | 2012.12.19 |
[오라클]테이블스페이스 생성 및 관리 (0) | 2012.12.19 |