반응형
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
반응형
'Develops > SQL' 카테고리의 다른 글
[ORACLE] SIGN 함수 (양수,음수 구분하기) (0) | 2024.03.26 |
---|---|
[ORACLE] GREATEST, LEAST 함수 (하나의 행에서 최대값, 최소값 구하기) (0) | 2024.03.26 |
[ORACLE] LISTAGG 집계함수 (여러 행을 하나의 값으로 합치기) (0) | 2024.03.24 |
[ORACLE] LPAD, RPAD 함수 (지정한 길이만큼 문자('0', 공백) 채우기) (0) | 2024.03.24 |
[ORACLE] 서브쿼리 2 DEPTH 참조 (SubQuery 2 Depth Issue) (0) | 2024.03.24 |