본문 바로가기
Develops/SQL

[ORACLE] 전역 임시 테이블 (Global Temporary Table)

by SLOTH91 2024. 3. 9.
반응형

ORACLE 전역 시 테이블 (Global Temporary Table) 기능에 대해 살펴보자.

 

[ 정의 ]

전역 임시 테이블 (Global Temporary Table)의 경우 영구적인 정보가 아닌 일시적인 중간 데이터가 필요할 때 사용한다.

CREATE GLOBAL TEMPORARY TABLE TEMP_TABLENAME
(
	ID         VARCHAR2 (20),
	NAME       VARCHAR2 (20)
)
ON COMMIT [PRESERVE/DELETE] ROWS

 

[ 특징 ]

  • 테이블 정의는 모든 세션에서 볼 수 있으나, DATA는 세션 별로 독립적
     (특정 세션 임시 테이블 DATA는 다른 SESSION에서 접근 불가)
  • 옵션(PRESERVE/DELETE)에 따라 데이터 유지기간이 다르다. 
      ON COMMIT PRESERVE ROWS : SESSION 단위. 다른 세션에서는 볼 수 없으며, 세션이 종료되면 사라짐  
      ON COMMIT DELETE ROWS:  TRANSACTION 단위. COMMIT; 되는 시점에 자동으로 Data delete
  • 각 세션에서 해당 Table 사용할때 테이블 정의에 따라 메모리에 Table 구조 생성
     (임시 테이블 정의는 Dictionary 에 영구적으로 저장)
SELECT TABLE_NAME    테이블명
     , TEMPORARY     임시테이블유무
     , DURATION      세션_Data_유지기간
  FROM USER_TABLES  
 WHERE TEMPORARY = 'Y';
  • DML LOCK 필요 없음 (SESSION DATA 간의 경합이 발생하지 않음)
  • DML 문에 REDO LOG 발생 안함
  • INDEX, VIEW, TRIGGER 생성 가능 (단 COLUMN에 생성되는 INDEX도 TEMPORARY TYPE)
CREATE UNIQUE INDEX TEST_TEMPORARYON_PK ON TEST_TEMPORARY ( TEST_NO ) ;
  • ORACLE에서는 테이블은 영구적으로 유지(데이터만 지워짐) 
     (MS-SQL의 경우 세션이 종료됨과 동시에 임시 테이블 스키마가 날아가며, 타 SESSION 간 공유 가능)
  • DROP 시 사용중인 SESSION 에서는 사용 불가
DROP TABLE TEST_TEMPORARY;

 

 

[ 참고 ]

https://m.blog.naver.com/chsmanager/221332696490

https://goddaehee.tistory.com/165

 

반응형