Как уменьшить временное (temp) табличное пространство
By: Date: 04.04.2012 Categories: !RUS,Admin,ORACLE,Support Метки:
ENG: How to decrease the temporary tablespace (temp)

С увеличение временного табличного пространства обычно нет проблем. Просто увеличиваем файл табличного пространства или добавляем еще один и всё это выполняется прямо на работающей базе без проблем.
А вот с уменьшением размера обычно возникают проблемы.
Можно попробовать просто уменьшить файл табличного пространства, но обычно, на рабочей базе, TEMP постоянно используется. Поэтому, скорее всего придется уменьшать путем создания нового TEMP меньшего размера.


-- Создаем новое табличное пространство TEMP_NEW
CREATE TEMPORARY TABLESPACE TEMP_NEW TEMPFILE 'D:DATABASESDB4TEMP_NEW01.DBF' SIZE 200M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED;
-- Для ASM создание может быть таким
CREATE TEMPORARY TABLESPACE TEMP TEMPFILE '+DATA(tempfile)' SIZE 200M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED;

-- Делаем его DEFAULT TEMPORARY
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP_NEW;

-- Удаляем старое табличное пространство TEMP
DROP TABLESPACE TEMP INCLUDING CONTENTS AND DATAFILES;

-- Если название табличного пространства принципиально, то можно переименовать TEMP_NEW в TEMP
ALTER TABLESPACE TEMP_NEW RENAME TO TEMP;

©Bobrovsky Dmitry
Старое табличное пространство TEMP может не удалиться сразу, т.к. его всё еще могут использовать какие-то сессии. В этом случае можно попробовать удалить через некоторое время или с помощью запроса посмотреть какие сессии используют TEMP и прекратить их.
©Bobrovsky Dmitry


-- Смотрим какие сессии используют TEMP
SELECT v$session.username,
sid,
serial#,
contents,
sql_address,
extents,
last_call_et,
tablespace
FROM v$session, v$sort_usage
WHERE v$session.saddr = v$sort_usage.session_addr AND v$sort_usage.tablespace = 'TEMP';

-- Прекращаем эти сессии
ALTER SYSTEM KILL SESSION '2631, 14103';

 

Запись Как уменьшить временное (temp) табличное пространство впервые появилась Dmitry Bobrovsky Blog
— Author: Dmitry Bobrovsky Google