среда, 12 апреля 2017 г.

ORA-01652: невозможно увеличить временный сегмент


Перевод отсюда http://stackoverflow.com/questions/25350703/ora-01652-unable-to-extend-temp-segment-by-128-in-tablespace-system-how-to-ext

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

Максимальный размер файла данных зависит от размера блока данных в базе данных. Я думаю, что у вас по умолчанию установлено 32Гб на один дата файл.

Что бы определить, что текущий предел 32Гб, запустите скрипт:
select value from v$parameter where name = 'db_block_size'
Сравните результат полученный в запросе и максимальный размер файла данных в таблице представленной ниже.


У меня установлена Oracle Personal Edition 11g r2 в ней по умолчанию установлен размер блока 8,192 (32Гб на один файл).
Размер          Максимальный           Максимальный 
блока (байт)    размер файла (Мб)      размер БД (Мб)   
--------        --------------------   --------------

   2 048                  8 192          524 264

   4 096                 16 384        1 048 528

   8 192                 32 768        2 097 056

  16 384                 65 536        4 194 112

  32 768                131 072        8 388 224
Вы можете запустить это запрос чтобы определить какие файлы данных у вас есть, с какими табличными пространствами они связаны и какой максимальный размер для них установлен:
select bytes/1024/1024 as mb_size,
       maxbytes/1024/1024 as maxsize_set,
       x.*
from   dba_data_files x
MAXSIZE_SET - максимальный размер файла данных. Также имеет значение включена ли опция AUTOEXTEND в значение ON (его название указывает на что влияет это свойство(Авторасширение)).Если размер файла данных слишком маленький или опция авто расширения выключена, то выполните скрипт:
alter database datafile 'path_to_your_file\that_file.DBF' autoextend on maxsize unlimited;
Если размер файла данных равен 32Гб или около того, то вам нужен новый файл данных для этого табличного пространства. Вот команда по созданию его:
alter tablespace system add datafile 'path_to_your_datafiles_folder\name_of_df_you_want.dbf' size 10m autoextend on maxsize unlimited;
Кроме того хорошей практикой для вас является иметь отдельное табличное пространство для индексов (похоже у вас не так, так как вы не указали табличное пространство в скрипте create index и там используется значение по умолчанию, т.е. системное табличное пространство). Поэтому после создания такого табличного пространства вы должны запустить что-то вроде этого:
CREATE INDEX FTS_INDEX ON FILTERED_TEKLI_IIS_TABLOSU (ilAdi,ilceAdi,caddeAdi)
tablespace name_of_ts_for_indexes
После создания табличного пространства и файла данных:
create tablespace name_of_ts_for_indexes datafile
'c:\app\xyz\oradata\orcl\name_of_ts_for_indexes01.dbf' autoextend on maxsize unlimited nologging;
Таким образом ваши таблицы будут находиться в одном табличном пространстве, а индексы - в другом.

Добавлю еще команды

ALTER DATABASE DATAFILE <file_name> RESIZE <size>; 
ALTER TABLESPACE PROBATBS ADD DATAFILE <file_name> SIZE <size> REUSE AUTOEXTEND ON NEXT <size> MAXSIZE <size>
Еще ссылки:
http://www.orahome.ru/ora-admin/102
https://iusoltsev.wordpress.com/2010/08/02/ora-01652-unable-to-extend-temp-segment/
http://www.sql.ru/forum/131782/ora-01652-unable-to-extend-temp-segment
http://delphimaster.net/view/3-58578/all
http://www.sql.ru/forum/1162644/ora-01654-unable-to-extend-index

Комментариев нет:

Отправить комментарий