Подтвердить что ты не робот

Как уменьшить временное табличное пространство в oracle?

Как мы можем сократить временное табличное пространство в oracle? И почему он растет так же, как до 25 ГБ, поскольку в базе данных есть только одна схема для приложения и размер табличного пространства данных - 2 ГБ, а размер табличного пространства индекса - 1 ГБ.

4b9b3361

Ответ 1

О Боже! Посмотрите на размер моего временного табличного пространства! Или... как уменьшить временные табличные пространства в Oracle.

Да Я выполнил запрос, чтобы узнать, насколько велика моя временная табличная область:

SQL> SELECT tablespace_name, file_name, bytes
2  FROM dba_temp_files WHERE tablespace_name like 'TEMP%';

TABLESPACE_NAME   FILE_NAME                                 BYTES
----------------- -------------------------------- --------------
TEMP              /the/full/path/to/temp01.dbf     13,917,200,000

Первый вопрос, который вы должны задать, - это то, почему временное табличное пространство настолько велико. Вы можете знать ответ на это с головы. Это может быть связано с большой запрос, который вы просто запускали с ошибкой (я сделал это более одного раза.) Это может быть связано с некоторыми другими исключительными обстоятельствами. Если это в этом случае все, что вам нужно сделать для очистки, - это сократить временные табличное пространство и двигаться дальше в жизни.

Но что, если вы не знаете? Прежде чем вы решите сжать, вам, возможно, придется исследование причин большого табличного пространства. Если это происходит на регулярно, тогда возможно, что вашей базе данных просто нужно столько места.

Динамическое представление производительности

V$TEMPSEG_USAGE

может быть очень полезным при определении причины.

Возможно, вы просто не заботитесь о причине, и вам просто нужно сжать ее. Это ваш третий день на работе. Данные в базе данных составляют только 200MiB если данные и временное табличное пространство 13GiB - просто сжимайте его и двигайтесь дальше. Если он снова вырастет, мы рассмотрим причину. Тем временем я вне пространства на том диска, и мне просто нужно пространство обратно.

Позвольте взглянуть на его сокращение. Это немного зависит от того, какая версия Oracle, который вы используете, и как было создано временное табличное пространство.
Oracle сделает все возможное, чтобы вы не совершили каких-либо ужасных ошибок поэтому мы просто попробуем команды, и если они не сработают, мы сжимаемся по-новому.

Сначала попробуйте сжать файл данных. Если мы сможем это сделать, мы вернемся пространство, и мы можем беспокоиться о том, почему он вырос завтра.

SQL>
SQL> alter database tempfile '/the/full/path/to/temp01.dbf' resize 256M; 
alter database tempfile '/the/full/path/to/temp01.dbf' resize 256M
*   
ERROR at line 1:
ORA-03297: file contains used data beyond requested RESIZE value

В зависимости от сообщения об ошибке вы можете попробовать это с разными размерами которые меньше, чем текущий сайт файла. Я был ограничен успех с этим. Oracle будет сокращать только файл, если временное табличное пространство во главе файла, и если он меньше размера, вы указывать. Некоторые старые документы Oracle (они исправили это) сказали, что вы можете отправить команду, и сообщение об ошибке сообщит вам, что размер, который вы могли бы сжать. К тому времени, когда я начал работать в качестве администратора баз данных, это было не правда. Вам просто нужно было угадать и повторно запустить команду кучу раз и посмотрите, работает ли он.

Хорошо. Это не сработало. Как насчет этого.

SQL> alter tablespace YOUR_TEMP_TABLESPACE_NAME shrink space keep 256M;

Если вы в 11g (Maybee в 10g тоже), то это он! Если это работает, вы можете захотеть чтобы вернуться к предыдущей команде и дать ей еще несколько попыток.

Но что, если это не удастся. Если временное табличное пространство является временным временным который был настроен, когда была установлена ​​база данных, вам может потребоваться выполнить много больше работы. На этом этапе я обычно переоцениваю, действительно ли мне это нужно пространство назад. Ведь дисковое пространство стоит только $X.XX a GiB. Обычно я не хочу для внесения таких изменений в часы производства. Это означает, что работа в 2AM ЕЩЕ РАЗ! (Не то, чтобы я действительно возражал к работе в 2 утра - это просто... Ну, я тоже люблю спать. И моя жена любит иметь меня дома в 2 утра... не блуждая по улицам города в 4 утра, пытаясь чтобы запомнить, где я припарковал свой автомобиль на 3 часа раньше. Я слышал о том, что "дистанционная работа" вещь. Я просто волнуюсь, что я получу на полпути, а затем подключился к интернету потерпит неудачу - тогда мне нужно броситься в центр города, чтобы все исправить, прежде чем люди появятся в утром, чтобы использовать базу данных.)

Хорошо... Вернемся к серьезным вещам... Если временное табличное пространство, которое вы хотите сжать, является вашим значением по умолчанию временное табличное пространство, вам придется сначала создать новый временный табличное пространство, установите его как временное табличное пространство по умолчанию, затем снимите ваше прежнее временное табличное пространство по умолчанию и его воссоздание. Послесловие снимите вторую временную таблицу.

SQL> CREATE TEMPORARY TABLESPACE temp2
2  TEMPFILE '/the/full/path/to/temp2_01.dbf' SIZE 5M REUSE
3  AUTOEXTEND ON NEXT 1M MAXSIZE unlimited
4  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

Tablespace created.

SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2;

Database altered.

SQL> DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES;

Tablespace dropped.


SQL> CREATE TEMPORARY TABLESPACE temp
2  TEMPFILE '/the/full/path/to/temp01.dbf' SIZE 256M REUSE
3  AUTOEXTEND ON NEXT 128M MAXSIZE unlimited
4  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

Tablespace created.

SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;

Database altered.

SQL> DROP TABLESPACE temp2 INCLUDING CONTENTS AND DATAFILES;

Tablespace dropped.

Надеюсь, одна из этих вещей поможет!

Ответ 2

Параметры управления табличными пространствами значительно улучшены по сравнению с версиями, начиная с 8i. Это особенно верно, если вы используете соответствующие типы файлов для временного табличного пространства (например, локально управляемые временные файлы).

Итак, это может быть так просто, как эта команда, которая сократит ваше табличное пространство до 128 мегабайт...

alter tablespace <your_temp_ts> shrink space keep 128M;

Онлайн-документация Oracle довольно хороша. Подробнее...

изменить

Похоже, что OP имеет более раннюю версию базы данных. В более ранних версиях мы должны изменять размеры отдельных файлов данных. Итак, прежде всего, найдите имена файлов. Один или другой из этих запросов должен сделать это...

select file_name from dba_data_files where tablespace_name = '<your_temp_ts>'
/

select file_name from dba_temp_files where tablespace_name = '<your_temp_ts>'
/ 

Затем используйте этот путь в этой команде:

alter database datafile '/full/file/path/temp01.dbf'  resize 128m
/

Ответ 3

Вы должны написать, какую версию Oracle вы используете. Скорее всего, вы используете что-то другое, чем Oracle 11g, поэтому вы не можете сокращать временное табличное пространство.

Альтернатива:

1) alter database tempfile '[your_file]' resize 128M;, который, вероятно, потерпит неудачу
2) Снимите и заново создайте табличное пространство. Если временное табличное пространство, которое вы хотите сжать, - это временное табличное пространство по умолчанию, вам может потребоваться сначала создать новое временное табличное пространство, установить его как временное табличное пространство по умолчанию, а затем удалить старое стандартное временное табличное пространство и воссоздать его. После этого снимите вторую временную таблицу. 3) Для Oracle 9i и выше вы можете просто оставить tempfile и добавить новый (ы)

Все описано здесь.


Смотрите эту ссылку: http://databaseguide.blogspot.com/2008/06/resizing-temporary-tablespace.html
Это уже было связано, но, возможно, вы пропустили его, так что вот оно снова.

Ответ 4

Он будет увеличиваться, потому что вам нужно временное пространство для хранения, возможно, из-за декартова продукта или операции большого сортировки.

Динамическое представление производительности V$TEMPSEG_USAGE поможет диагностировать причину.

Ответ 5

alter database datafile  'C:\ORA_SERVER\ORADATA\AXAPTA\AX_DATA.ORA' resize 40M;

Если это не помогает:

  • Создать новое табличное пространство
  • Переключиться на новое временное табличное пространство
  • Подождите, пока не будет использовано старое табличное пространство
  • Удалить старое табличное пространство

Ответ 6

Я не беспокоюсь о том, чтобы отказаться от альтернативной температуры в случае, если мне нужно снова вернуть хранилище в будущем...

  • из группы temp по умолчанию устанавливается автономная темп
  • подождите некоторое время, затем измените размер членов группы temp
  • установить по умолчанию обратно в временную группу
  • подождите некоторое время, измените размер автономной темп. нет никакого спешки, чтобы сделать последний шаг

Ответ 7

Временные табличные пространства используются для сортировки базы данных и операций объединения, а также для хранения глобальных временных таблиц. Он может увеличиваться в размерах с течением времени, и, следовательно, либо нам нужно воссоздать временное табличное пространство, либо уменьшить его, чтобы освободить неиспользуемое пространство.

Шаги, чтобы уменьшить TEMP Tablespace