"템프테이블"의 두 판 사이의 차이
DB CAFE
(→템프테이블(TEMPORARY TABLE)) |
(→템프 테이블 모니터링) |
||
30번째 줄: | 30번째 줄: | ||
=== 템프 테이블 모니터링 === | === 템프 테이블 모니터링 === | ||
+ | |||
+ | <source lang=sql> | ||
+ | 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 | ||
+ | ; | ||
+ | </source> |
2019년 6월 21일 (금) 20:38 판
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];
1.2 서브 쿼리를 이용한 임시 테이블 생성[편집]
CREATE GLOBAL TEMPORARY TABLE [TABLE NAME](
)
ON COMMIT [PRESERVE ROWS | DELETE ROWS];
AS ([SUB QUERY CLAUSE])
1.3 임시 테이블 조회[편집]
SELECT TABLE_NAME, TEMPORARY, DURATION
FROM USER_TABLES
WHERE TEMPORARY = 'Y'
- [PRESERVE ROWS] 트랜잭션의 종료 (commit)후에도 남아있음 세션종료시 데이터가 삭제됨
- [DELETE ROWS] 트랜잭션의 종료와 함께 삭제됨
- [SUB QUERY CLAUSE] SELECT된 테이블의 구조와 같이 테이블 생성
1.4 템프 테이블 모니터링[편집]
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
;