새싹 DBA/Scripts

[오라클] 시퀀스 생성 쿼리 Sequence , synonym 생성

LIMMI 2024. 7. 26. 17:16

1. 시퀀스 생성

---- 1. 시퀀스 생성
---- DROP SEQUENCE IGWOWN.SQ_FB_ABC;

/***** 여기에 시퀀스 생성 요청 양식 넣고 작업하기 ******/
1. 사용할 테이블명 : FB_ABC
2. 사용할 컬럼명   : FMCFD_APLY_SN
3. 시퀀스명        : SQ_FB_ABC
4. 시작/종료값	  : 1 - 9999999
5. 순환/비순환     : 비순환
6. 배치 대량건 생성: N (동시에 대량건 채번할경우 = Y)
/*****************************************************/

CREATE SEQUENCE IGWOWN.SQ_FB_ABC
	 START WITH 1                -- 시작번호
      INCREMENT BY 1             -- 증가값
       MAXVALUE 999999           -- 최대값
       MINVALUE 1				 -- 최솟값
        NOCYCLE                  -- 순환여부 CYCLE/NOCYCLE
          CACHE 20               -- 대량(배치) 작업시 크기 키워야함
        NOORDER                  -- 순서 (1,2,3,4--) NOORDER/ORDER
         NOKEEP					 -- KEEP/NOKEEP
         GLOBAL					 -- SESSION (세션별)
;

 

2. 시노님 생성 및 권한 부여

-- 2. 시노님 생성

CREATE OR REPLACE PUBLIC SYNONYM SQ_FB_ABC FOR IGWOWN.SQ_FB_ABC;

--3. 권한 부여 ( SYNONYM은 SELECT 만 )

GRANT SELECT ON IGWOWN.SQ_FB_ABC TO RL_IGWALL;
GRANT SELECT ON IGWOWN.SQ_FB_ABC TO RL_IGWSEL;

 

3. 생성결과 조회

-- 4. 생성 결과 조회

SELECT * FROM DBA_SEQUENCES
 WHERE SEQUENCE_OWNER = 'IGWOWN'
   AND SEQUENCE_NAME LIKE 'SQ_FB%'
 ORDER BY 1,2;
 
 -- 시노님 생성 체크
 
 SELECT *
   FROM DBA_SYNONYMS
  WHERE SYNONYM_NAME IN (
        SELECT SEQUENCE_NAME 
          FROM DBA_SEQUENCES
         WHERE SEQUENCE_OWNER = 'IGWOWN'
           AND SEQUENCE_NAME LIKE 'SQ_FB%')
 ;

 

4. 사용자별 시퀀스 생성

SELECT 'ALTER SEQUENCE ' || SEQUENCE_OWNER ||'.'||SEQUENCE_NAME||' INCREMENT BY '||LAST_NUMBER||';' DDL
     , 'SELECT ' || SEQUENCE_OWNER ||'.'||SEQUENCE_NAME||'.NEXTVAL FROM DUAL' SEQ_NEXT_VAL
     , 'ALTER SEQUENCE ' || SEQUENCE_OWNER ||'.'||SEQUENCE_NAME||' INCREMENT BY 1'||LAST_NUMBER||';' SEQ_ADD1
     , 'DROP SEQUENCE ' || SEQUENCE_OWNER ||'.'||SEQUENCE_NAME||';
     	CREATE SEQUENCE '||SEQUENCE_OWNER||'.'||SEQUENCE_NAME||'
        	  INCREMENT BY 1
             START WITH '||MIN_VALUE||'
               MAXVALUE '||MAX_VALUE||'
               MINVALUE '||MIN_VALUE||'
        '||DECODE(CYCLE_FLAG,'Y','CYCLE','NOCYCLE')||' CACHE '||CACHE_SIZE||'
        			NOORDER
                     NOKEEP
                     GLOBAL;
              '
     , A.*
  FROM DBA_SEQUENCES A
 WHERE SEQUENCE_OWNER = 'IGWOWN';