템프테이블
DB CAFE
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
1 템프테이블(TEMPORARY TABLE)[편집]
1.1 템프테이블(TEMPORARY) 생성[편집]
CREATE GLOBAL TEMPORARY TABLE AAAA_TEMP(
A VARCHAR2(15) NOT NULL,
B NUMBER NOT NULL
) ON COMMIT [PRESERVE ROWS | DELETE ROWS];
2 템프 테이블스페이스 사이즈 증가[편집]
ALTER TABLESPACE TEMP ADD TEMPFILE '+DATA' SIZE 10G AUTOEXTEND ON NEXT 100M MAXSIZE 32767M;
---
2.1 서브 쿼리를 이용한 임시 테이블 생성[편집]
CREATE GLOBAL TEMPORARY TABLE [TABLE NAME](
)
ON COMMIT [PRESERVE ROWS | DELETE ROWS];
AS ([SUB QUERY CLAUSE])
2.2 TEMP 테이블 조회[편집]
SELECT TABLE_NAME, TEMPORARY, DURATION
FROM USER_TABLES
WHERE TEMPORARY = 'Y'
- [PRESERVE ROWS] 트랜잭션의 종료 (commit)후에도 남아있음 세션종료시 데이터가 삭제됨
- [DELETE ROWS] 트랜잭션의 종료와 함께 삭제됨
- [SUB QUERY CLAUSE] SELECT된 테이블의 구조와 같이 테이블 생성
2.2.1 TEMP 테이블 삭제시 락 있을때 삭제 불가[편집]
select 'alter system kill session '''||s.sid||','||s.serial#||''';'
FROM v$lock l ,dba_objects o ,v$session s
WHERE l.id1 = o.object_id
AND s.sid = l.sid
AND o.owner = 'SCOTT'
AND o.object_name = 'TEMP_TEST'
2.3 템프 테이블 모니터링[편집]
SELECT /*+ ordered */ "SID",
s.serial# "Serial",
s.MODULE "Module",
s.program "Program",
u.TABLESPACE "TS 명",
u.CONTENTS "Cont.",
u.blocks "Temp Blocks",
((u.blocks*v.value)/(1024*1024)) "Temp Size(MB)"
, q.sql_id
-- substr(q.sql_text,1,50) "SQL"
-- , substr(p.sql_text,1,50) "이전 SQL"
FROM v$sort_usage u,
v$session s,
v$sqltext q,
v$sqltext p,
(SELECT value
FROM v$parameter
WHERE name = 'db_block_size') v
WHERE s.saddr = u.session_addr
AND s.sql_hash_value = q.hash_value(+)
AND q.piece = 0
AND s.prev_hash_value = p.hash_value(+)
AND p.piece = 0
;