728x90
반응형
1. 시퀀스
순차적으로 유일한 번호값을 매겨주는 오라클의 객체
2. 생성 방법
일단 생성 쿼리.각 옵션에 대한 설명은 3번을 참조한다.
CREATE SEQUENCE 시퀀스명
[START WITH n]
[INCREMENT BY n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE | NOCACHE]
[ORDER | NOORDER]
초간단하게 생성하기. 아무 옵션없이 생성
CREATE SEQUENCE TEST_SEQ;
SELECT TEST_SEQ.NEXTVAL FROM DUAL; --1
시작 번호 지정해주기
CREATE SEQUENCE TEST_SEQ_2 START WITH 100;
SELECT TEST_SEQ_2.NEXTVAL FROM DUAL; --100. 100부터 시작한다.
3. 오라클 - sql 탭 까보기
내가 말하는 SQL 탭은 여기를 말한다.
여기를 눌러보면 해당 객체에 대한 쿼리가 나오게 되는데, TEST_SEQ의 경우 아래처럼 나오는 것을 확인할 수 있다.
CREATE SEQUENCE "스키마"."TEST_SEQ" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 21 CACHE 20 NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ;
난 나머지 옵션을 준 적이 없는데 들어가있는 걸 보면 기본 옵션값이라는 얘기인데.. 각 옵션값을 뜯어보면
- MINVALUE : 시퀀스 최소값
- MAXVALUE : 시퀀스 최대값
- INCREMENT BY n : 시퀀스 값 n씩 증가
0 외의 정수(양수/음수 둘다 가능) 지정 - START WITH 21 : 다음 시작값
아무 숫자나 지정해줘도 상관 없음. 아무것도 지정안해주면 21로 되어있다.
다음 시작값이라는 뜻은, 메모리에 20까지 시퀀스값을 저장해두고 있는데
예를들어 시퀀스를 5번까지 실행하다가 비정상적으로 DB가 종료되었을 때 다시 DB를 실행시켜서 NEXTVAL을 확인해보면 21이 찍히게 된다고 한다. - CACHE 20 : (CACHE / NOCACHE) 메모리 캐쉬 사이즈
빠른 접근을 위해 메모리에 미리 시퀀스 저장해둔다.
SELECT TEST_SEQ.NEXTVAL FROM DUAL; 로 20까지 실행 한 뒤, 한번 더 실행해보면
START WITH의 값이 41로 늘어나있는 것을 확인할 수 있음 (CACHE가 20이니까 기존 21 + 20 = 41) - NOORDER(ORDER / NOORDER) : 시퀀스 값 보증 여부
오라클을 병렬 모드로 사용시 시퀀스가 제대로 할당되지 않을 수 있음. 여러 세션에서 데이터가 들어올 때, 요청 순서에 따라서 정확하게 시퀀스 값을 제공하고 싶다면 OREDER 옵션을 지정 - NOCYCLE(CYCLE / NOCYCLE) : 시퀀스 순환 여부
시퀀스가 MAXVALUE(최대값)에 도달하면 다시 최소값부터 CYCLE(순환) 할 것인지 혹은 에러발생시켜서 NOCYCLE 할 것인지 선택 - NOKEEP(KEEP / NOKEEP) : 시퀀스 값 보호 여부
프로그램 테스트 혹은 성능 시험을 하는 동안 현재값을 보호함. (DBA 권한 -> 이라는데 무슨 뜻인지 이해 X) - NOSCALE(SCALE / NOSCALE) : 시퀀스 확장가능 여부
확장가능한 시퀀스인지 지정.인데 이해 X - GLOBAL(SESSION / GLOBAL) : 시퀀스 기준. 세션인지 GLOBAL인지
세션을 기준으로 각각 시퀀스 번호가 생성되도록 할 수 있음. GLOBAL 지정 시 여러사용자가 같은 시퀀스 번호를 사용함.
음.. NOKEEP, NOSCALE 이 두 옵션은 구글링 해도 잘 나오지를 않더라
예를 들어
시퀀스를 클릭해서 시퀀스의 SQL 확인했을 때
A 시퀀스 SQL 은 START WITH 41
B 시퀀스 SQL 은 START WITH 1000146
이면,
A시퀀스.NEXTVAL -> 41
B시퀀스.NEXTVAL -> 1000146
이 의미인 줄 알았는데 아니었네 😁
ORDER 속성 참조 - http://egloos.zum.com/elindreams/v/882841
SCALE 속성 참조 - https://fordeveloper2.tistory.com/9614
4. 시퀀스 관련 설정함수 참조 블로그
[Oracle/SQL] 시퀸스(Sequence)와 초기화하는 방법
시퀸스(Sequence) 시퀸스는 유일한 값을 생성해주는 오라클의 객체로서 순서대로 나열되는 정수의 목록입니다. 테이블에 넣는 데이터들에게 순서대로 번호 값을 매기는 칼럼에 사용하기 좋습니다
lasbe.tistory.com
728x90
반응형
'study_db' 카테고리의 다른 글
MERGE INTO 오류 - ORA-38101: INSERT VALUES 절에 부적합한 열이 있음 (0) | 2023.06.27 |
---|---|
오라클 요일 정보 가져오기 (0) | 2023.05.19 |
DB 변경 이력 조회하기. 프로시저 수정 이력 확인하기 (0) | 2022.12.26 |
오라클 & 치환/끄기, 대체 변수 입력 창 (0) | 2022.10.21 |
ROWNUM 이해하기 (0) | 2021.04.17 |