데이터베이스 연구실.log

시퀀스와 동의어

중복되지 않는 번호를 만들어 주는 시퀀스의 생성, 사용, 변경과 캐시 설정, 다른 사용자의 객체를 스키마 이름 없이 부르게 하는 동의어

SEQUENCENEXTVALNOCACHEALTER SEQUENCEUSER_SEQUENCESSYNONYMPUBLIC SYNONYM

#핵심 요약

시퀀스는 테이블에 중복되지 않는 유일한 번호가 항상 들어가도록 하는 DB 객체임
주문번호처럼 중복되면 안 되는 번호에 씀

CREATE SEQUENCE 이름 START WITH n INCREMENT BY n MAXVALUE n으로 만들고 이름.NEXTVAL로 다음 값을 받음

ALTER SEQUENCE로 MAXVALUE, INCREMENT BY를 바꿀 수 있지만 START WITH는 바꿀 수 없음

동의어는 CREATE SYNONYM emp FOR scott.emp처럼 다른 스키마 객체에 짧은 이름을 붙임
PUBLIC SYNONYM은 모든 사용자가 쓸 수 있음

#개념과 동작 원리

실습(캐시): NOCACHE로 만든 시퀀스 seq8에서 1, 2, 3을 받은 뒤 SHUTDOWN ABORT와 STARTUP을 하고 다시 받으니 4가 나왔음
실습 속성 메모에는 "DB 내릴 때 조심(캐시)"라고 적혀 있음
캐시를 쓰는 시퀀스는 인스턴스가 비정상 종료되면 캐시에 있던 번호를 잃어 번호가 건너뛸 수 있다는 뜻으로 보이나, 캐시 시퀀스 쪽 결과는 기재 없음

시퀀스의 CACHE, ORDER와 RAC 채번 성능은 시퀀스와 채번 성능에서 다룸

#필수 명령어 또는 SQL

#시퀀스

SQL Developer 또는 SQL*Plus객체 또는 설정을 변경함
CREATE SEQUENCE dept_seq
  START WITH 50
  INCREMENT BY 10
  MAXVALUE 200;

INSERT INTO dept (deptno, dname, loc)
VALUES (dept_seq.NEXTVAL, 'aaa', 'bbb');
SQL Developer 또는 SQL*Plus객체 또는 설정을 변경함
SELECT * FROM user_sequences;
SELECT seq1.NEXTVAL FROM dual;

결과 해석: NEXTVAL을 부를 때마다 50, 60, 70 ... 순으로 다음 값이 나옴
조회에서 NEXTVAL을 불러도 번호는 소비됨

SQL Developer 또는 SQL*Plus객체 또는 설정을 변경함
CREATE SEQUENCE seq8
  START WITH 1
  INCREMENT BY 1
  MAXVALUE 100
  NOCACHE;

ALTER SEQUENCE seq1 MAXVALUE 1000;

결과 해석:

실습 기록: seq8은 1, 2, 3 다음 인스턴스 비정상 종료와 재시작 뒤 4였음
실습에서는 SYS로 SHUTDOWN ABORT를 실행했음
이 작업은 인스턴스를 즉시 내리는 운영 중단 작업이라 실습 DB에서만 함

#동의어

다른 계정 (SQL*Plus)객체 또는 설정을 변경함
CREATE SYNONYM emp FOR scott.emp;

결과 해석:

실습에서는 SCOTT의 모든 테이블에 동의어를 만들려고, SCOTT에서 생성 문장을 만들어 다른 계정에서 실행했음

SQL Developer 또는 SQL*Plus (SCOTT)조회만 함
SELECT 'CREATE SYNONYM ' || LOWER(table_name) ||
       ' FOR SCOTT.' || LOWER(table_name) || ';'
  FROM user_tables;
다른 계정 (SQL*Plus)조회만 함
SELECT COUNT(*) FROM user_synonyms;

결과 해석:

실습 기록: 만든 동의어는 69개였음
동의어로 조회하려면 원래 객체의 조회 권한도 있어야 함(권한 부여 문장 확인 불가)
실습 이수자 평가 과제: 새 계정에서 SCOTT의 모든 테이블을 scott. 접두어 없이 조회하게 하기

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기