행위

"템프테이블"의 두 판 사이의 차이

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 추천메뉴 바로가기


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
;