[ORACLE] Temp Table ( 임시테이블 ) - CREATE GLOBAL TEMPORARY TABLE
1. 특징
1) 테이블 정의는 모든 세션에서 볼 수 있음
data는 세션별로 독립적, 즉 특정 세션 임시 테이블 data는 다른 session에서 접근할 수 없음
2) Data 유지기간
a) ON COMMIT PRESERVE ROWS : SESSION 단위, 다른 Session에서 볼 수 없음, SESSION 종료 되면 사라짐. (MSSQL Temp Table과 유사)
b) ON COMMIT DELETE ROWS : TRANSACTION 단위, COMMIT; 되는 시점에 자동으로 Data Delete
3) 각 세션에서 해당 Table 사용할 때 테이블 정의에 따라 메모리에 Table 구조 생성(임시 테이블 정의는 Dictionary에 영구적으로 저장)
< DURATION >
- SYS$SESSION : ON COMMIT PRESERVE ROWS;
- SYS$TRANSACTION : ON COMMIT DELETE ROWS;
4) 세션 data 간 경합이 발생하지 않기 때문에 DML문에 대한 lock 필요 없음
5) 임시 data 이므로 DML문에 redo log 발생 안함
6) index, view, trigger 생성 가능 ( 단 column에 생성되는 index도 temporay type )
2. 세션 임시테이블 - CREATE GLOBAL TEMPORARY TABLE ~ ON COMMIT PRESERVE ROWS
: 세션 단위이므로 MSSQL 임시테이블과 비슷
- 세션이 종료되면 data 사라짐
- COMMIT 해도 data 사라지지 않음
- 다른 세션에서 조회하면 해당 세션 data는 나오지 않음 ( 서로 개별적 )
3. 트렌젝션 임시테이블 - ON COMMIT DELETE ROWS
- COMMIT 하면 본인 세션 Data 사라짐 ( 단 다른 세션에서 사용중인 data는 사라지지 않음, 개별적 )
4. 임시 테이블 삭제
'프로그래밍 > Oracle' 카테고리의 다른 글
[Oracle] SYSDATE 기준 일자관련 다양한 표현2 (1) | 2018.06.04 |
---|---|
[Oracle] Pivot을 Decode로 변환 (0) | 2018.04.30 |
[Oracle] LOOP ~ CONTINUE (0) | 2018.04.23 |
[Oracle] Table Object 정보 보기 (0) | 2018.04.20 |
[Oracle] SYSDATE 기준 일자관련 다양한 표현 (0) | 2018.04.16 |