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