DB

Oracle default temp table 제거, 용량 축소

Lawmin 2016. 3. 24. 18:35

default temp tablespace 의 경우, online중에 datafile 삭제하거나 shrink 처리가 잘 안되어 아예 교체하는 식으로 처리할 수 있다.


-- 1. temp 사용중인 세션 확인 후, 종료 처리

select tu.tablespace, tu.username,

s.sid, s.serial#,

s.sql_id, s.prev_sql_id,

s.status, s.osuser, s.process, s.machine, s.port,

s.prev_exec_start, s.logon_time,

s.last_call_et, -- 최종 호출후 대기시간 (초)

'ALTER SYSTEM KILL SESSION ''' || s.sid || ',' || s.serial# || ''' IMMEDIATE;' SQL_TEXT -- 세션 종료 명령어

from v$tempseg_usage tu, v$session s

where tu.session_addr = s.saddr;


-- 2. 대체 temp 테이블스페이스 생성 (temp02), 작업 전사이즈 및 경로 확인

CREATE TEMPORARY TABLESPACE temp02 TEMPFILE 

'.../.../temp02.dbf' SIZE 1g AUTOEXTEND ON NEXT 640K MAXSIZE 20g; 


-- 3. 기본 temp 테이블스페이스를 temp02로 변경

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp02;

(작업 후, 각 USER들의 기본 temp ts가 temp02로 바뀌었는지 확인)


-- 4. 과거 temp 테이블스페이스 삭제

DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES;