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;