일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 톰캣
- 함수
- oracle
- 엑셀
- Report Designer
- 튜닝
- MIP
- miplatform
- 태그를 입력해 주세요.
- error
- 한글
- 회계
- 자바
- Tomcat
- JavaScript
- java
- JEUS
- Excel
- 오라클
- DB
- Eclipse
- Book
- 데이터베이스
- 기타소득
- 에러
- 오류
- 이클립스
- 성능
- 마이플랫폼
- 도서
Archives
- Today
- Total
어느 가을날의 전환점
ORACLE|임시 테이블(Temp Table) 본문
Oracle8i Server 이상에서 부터 지원 하는 Temp Table은 사용자의 트랜잭션 또는 세션 내에서만 Temp Table의 데이터를 활용 할 수 있으며 사용자 세션이 중단되면 Temp Table의 있는 모든 내용은 자동으로 삭제 된다. Temp Table을 사용하는 목적은 큰 정렬 작업이나, 필요할 경우 임의적으로 생성 하여 사용 할 수 있다.
Temp Table의 특징
- Temp Table 데이터는 해당 세션이나 트랜잭션에서만 볼 수 있다.
- Global Temp Table은 모든 세션에서 볼 수 있다.
- Local Temp Table은 이를 생성한 세션이 끝나면 더 이상 유지되지 않는다.
- Temp Table 데이터는 세션이 사용하는 정렬 공간 내에 저장되며, 정렬 공간이 데이터를 수용하기에 충분하지 않으면 사용자의 임시 테이블스페이스에 공간이 할당된다.
- Temp Table에 대한 인덱스의 범위 및 지속 기간은 대응하는 테이블의 범위 및 지속 기간과 동일하다.
- Temp Table 테이블에 대해 트리거 및 뷰를 정의할 수 있으나, Temp Table과 일반 Table을 조인하도록 뷰를 정의할 수 없다.
- CREATE GLOBAL TEMPORARY TABLE AS SELECT 명령을 사용하여 Temp Table을 생성하고 여기에 데이터를 삽입할 수 있다.
- Temp Table 정의는 엑스포트하거나 임포트할 수 있다.
Temp Table 생성
Temp Table을 사용 하는 경우는 복잡한 Query를 실행할 때 임시 테이블을 사용하여 성능을 향상시킬 목적으로 사용한다. 예를 들어 여러 개의 복잡한 Query를 실행하면 반환된 각 행에 대한 테이블이 여러 번 액세스되므로 상대적으로 속도가 저하 된다. 복잡한 Query에서 값을 Temp Table 저장한 다음 Temp Table에서 Query를 실행하는 것이 속도가 훨씬 빠르다.
- ON COMMIT DELETE ROWS는 트랜잭션 내에서만 행을 볼 수 있도록 지정 (기본값)
- ON COMMIT PRESERVE ROWS는 전체 세션에서 행을 볼 수 있도록 지정
이렇게 생성된 Temp Table은 DBA_TABLES 뷰에서 확인 할 수 있으며, DURATION 열은 테이블의 데이터가 전체 세션 동안 유지될 것인지, 해당 트랜잭션 내에서만 유지될 것인지를 나타낸다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | -- 임시 테이블 생성 CREATE GLOBAL TEMPORARY TABLE AAAA_TEMP( A VARCHAR2(15) NOT NULL , B NUMBER NOT NULL ) ON COMMIT [PRESERVE ROWS | DELETE ROWS ]; -- 서브 쿼리를 이용한 임시 테이블 생성 CREATE GLOBAL TEMPORARY TABLE [ TABLE NAME ]( ) ON COMMIT [PRESERVE ROWS | DELETE ROWS ]; AS ([SUB QUERY CLAUSE]) -- 임시 테이블 조회 SELECT TABLE_NAME, TEMPORARY , DURATION FROM USER_TABLES WHERE TEMPORARY = 'Y' --[PRESERVE ROWS] 트랜잭션의 종료 (commit)후에도 남아있음 세션종료시 데이터가 삭제됨 --[DELETE ROWS] 트랜잭션의 종료와 함께 삭제됨 --[SUB QUERY CLAUSE] SELECT된 테이블의 구조와 같이 테이블 생성
|
#출처: http://devworks.tistory.com/9
'Database > Oracle' 카테고리의 다른 글
ORACLE|오라클 11g New Feature - Virtual Columns (가상 컬럼) (0) | 2014.12.02 |
---|---|
ORACLE|오라클에서 숫자 한글(국문) 표기하기 (0) | 2014.11.27 |
ORACLE|ORA-29275: 부분 다중 바이트 문자 Error(partial multibyte character) (0) | 2014.10.21 |
TOAD|토드에서 대량 데이터 Insert 시 &에 대한 변수 값 입력 해제 방법 (0) | 2014.10.21 |
TOAD|오라클 세션 타임아웃으로 컨넥션이 끊기는 경우 토드 팁 (0) | 2014.05.21 |
Comments