powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / unable to extend temp segment by 8192 in tablespace
25 сообщений из 30, страница 1 из 2
unable to extend temp segment by 8192 in tablespace
    #32171497
Глызин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сабж выскакивает периодически это плохо или хорошо?
В чем дел что то я не додумал при проектировании базы?
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32171499
Глызин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
temp создовал так:

CREATE TEMPORARY TABLESPACE temp TEMPFILE '/home/oracle/OraHome1/oradata/orainet/temp01.dbf'
SIZE 20M REUSE
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32171512
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой у тебя размер параметра sort_area_size?
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32171513
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно почему Оракл пытается расширить сегмент на 8192 если выставлено

EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M???

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

А вообще причина может быть

1. достигнут макс. размер таблспейса где создается этот сегмент
2. место на диске кончилось

в трейсе наверняка найдешь больше информации, в частности, почему unable to extend temp segment by 8192 in tablespace.
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32171532
Глызин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а где этот параметр посмотреть в init.ora смотрел нет его там
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32171538
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
select
  name,
  value
 from
   v$system_parameter
 where
   name = 'sort_area_size';

SQLWKS> select
      2 >   name,
      3 >   value
      4 >  from
      5 >    v$system_parameter
      6 >  where
      7 >    name = 'sort_area_size';
NAME                                                             VALUE                                                                           
 ---------------------------------------------------------------- --------------------------------------------------------------------------------
 
sort_area_size                                                    3145728                                                                          
Выбрана  1  строка.
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32171540
Глызин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
65536 и что?
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32171547
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит команда создания темп-области у тебя должна быть такая:
Код: plaintext
1.
2.
3.
4.
CREATE TEMPORARY TABLESPACE temp
 TEMPFILE '/home/oracle/OraHome1/oradata/orainet/temp01.dbf' SIZE 20M  
  AUTOEXTEND ON NEXT 20M MAXSIZE 100M
  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64K;
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32171588
Глызин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ок сделал
посморим что буд а в кратце что это за параметр то?
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32171603
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Размер экстента, должен быть кратным параметру sort_area_size.
В твоём случае он должен быть: 64K, 128K, 196K итд.
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32171627
Глызин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибочки
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32173837
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
До сих пор полагала, что

unable to extend temp segment by ... in tablespace

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

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

Знающие ответ, не сочтите за труд ответить, очень хочется понять. Почему установка размера экстента, нектратного sort_area_size может повлечь unable to extend temp segment?

Или все таки проблема в нехватки места? Изначально было

temp создовал так:

CREATE TEMPORARY TABLESPACE temp TEMPFILE '/home/oracle/OraHome1/oradata/orainet/temp01.dbf'
SIZE 20M REUSE
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;


Ораклу необходимо дополнительное место размером 8192, и он пытается добавить экстент, который согласно установке равен 16M и это у него не получается?
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32173850
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в данном случае в том, что у него очень большой обьём экстента.
Временный сегмент может быть использован несколькими сессиями в один и тот-же момент времени, но именно сегмент, а не один и тот-же экстент.

Допустим требуется память для операции сортировки одновременно в 3-ёх сессиях. Первая сессия получает экстент размером 16M. Для второй сессии для выделения экстента в файле уже недостаточно места(4M), поэтому и ругань(autoextent выставлен в off).

Можно конечно создать табличную область размером 1Gb с экстентами в 16M или выставить autoextent on, но вот в чём вопрос, для чего такие большие экстенты?
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32173903
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, теперь появилась некоторая ясность. Парочка заключительных вопросов

Временный сегмент может быть использован несколькими сессиями в один и тот-же момент времени, но именно сегмент, а не один и тот-же экстент.

В каком то топике помню проскакивала, что в таком случае сессии выделяется экстент. Это означает что если одна сессия работает с экстентом 16 МБ и пусть даже использует его всего на 20%, для другой сессии будет выделен еще один экстент 16 МБ, если другие заняты.

Для второй сессии для выделения экстента в файле уже недостаточно места(4M), поэтому и ругань(autoextent выставлен в off).

Понятно теперь что первопричина неправильный выбор значений параметров, остался интересен такой вопрос.

Допустим выставлено autoextent on next 4M. Будет ли ругань в этом случае при создании нового экстента размером 16М?
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32173908
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Допустим выставлено autoextent on next 4M. Будет ли ругань в этом случае при создании нового экстента размером 16М?"

Проверь :)
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32173931
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C имитациями ситуаций у меня пока не очень получается.

Представляю примерно так

1) Создать temporary tablespace и присвоить его юзеру
2) В одной сессии выполнить запрос с сортировкой
3) В другой сессии выполнить запрос с сортировкой

Надо выполянть сортировку одновремнно? Иначе ведь по окончании выпонения запроса экстент освободиться и эффекта не будет:-) Надо долгоиграющий запрос создавать.

Мое предположение - в таком случае при создании экстента 16М датафайл будет расширяться на 4М пока не образуется достаточно места. Чтобы не утруждать отвечающих писаниной, просто напишите правильный вариант

1) будет ругань
2) будет имет место сценарий описнный мною
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32173936
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Допустим выставлено autoextent on next 4M. Будет ли ругань в этом случае при создании нового экстента размером 16М?"

Во-первых необходимо выставить sort_area_size достаточно малым, что-бы вынудить серверный процесс обратиться к temporary tablespace.

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

Дерзайте.
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32173945
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Достаточно одним запросом проверить.

То есть создать tablespace типа

CREATE TEMPORARY TABLESPACE temp TEMPFILE '/home/oracle/OraHome1/oradata/orainet/temp01.dbf'
SIZE 4M REUSE AUTOEXTEND ON NEXT 4M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;

чтобы эффект возникал при первом же запросе с сортировкой?
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32174190
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как получить информацию о local managed tablespace

После его создания

Код: plaintext
1.
2.
CREATE TEMPORARY TABLESPACE temp2 TEMPFILE 'd:\oracle9\oradata\MyDB\temp2.dbf' 
SIZE 18M REUSE AUTOEXTEND ON NEXT 4M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;


присвоения юзеру и выполнения запроса с сортировкой информация о нем есть только в dba_tablespaces.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SQL> select * from dba_tablespaces where tablespace_name='TEMP2';

TABLESPACE_NAME                BLOCK_SIZE INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS

 ------------------------------ ---------- -------------- ----------- -----------
 

MAX_EXTENTS PCT_INCREASE MIN_EXTLEN STATUS    CONTENTS  LOGGING   EXTENT_MAN
 ----------- ------------ ---------- --------- --------- --------- ----------
 
ALLOCATIO PLU SEGMEN
 --------- --- ------
 
TEMP2                                 4096         16777216      16777216             1 

NULL                    0     16777216  ONLINE    TEMPORARY NOLOGGING LOCAL
UNIFORM   NO  MANUAL


dba_extents;
dba_segments;
dba_free_space;

информацию о нем не содержат.
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32174197
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так в этом и смысл типа EXTENT MANAGEMENT LOCAL.
Используй пакет dbms_space
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32174200
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще, на твоём месте я бы не отвлекался от подготовки к 1Z0-001.
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32174209
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не могу же я только SQL и PL/SQL заниматься, если по ходу возникают вопросы я стараюсь их выяснить. Но ты прав, на dbms_space я уже отвлекаться не буду пока, отложу до более подходящего момента.

А вообще, везде говориться что local managed tablespace это круто и хорошо. В каких случаях вообще тогда оправдано использование dictionary managed tablespaces?

Может ли tablespace SYSTEM быть local managed?
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32174226
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оправдано в версиях до 8i. :)

А для SYSTEM нет смысла, если его по уму использовать.
Не создавать в нём временных и иных сегментов, в том числе и aud$.
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32174904
X-Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если hash_multiblock_io_count*db_block_size превышает max_io_size, то размер экстентов в temporary должнен быть как минимум max_io_size. max_io_size для WinNT - 64 кб (по словам Oracle), для Linux - 512 кб (есть где-то глубоко в исходниках ядра), для HP-UX - 256 кб. Остальные - see platform-specific server documentation.
Hash_multiblock_io_count по умолчанию выставлен в 0, что дает возможность серверу самому подбирать размер хэш-области индивидуально для каждой сессии. Самое интересное, что сервер может несколько недель делать выбор этого параметра так, что он не превышает размера экстента, а потом внезапно поменять свое мнение. Выбор делается исходя из hash_area_size, which defaults to twice the sort_area_size, и характеристик сортировок. Алгоритм простым смертным недоступен :-)
...
Рейтинг: 0 / 0
unable to extend temp segment by 8192 in tablespace
    #32174932
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to X-Max: если hash join не используется то данные утвержения не имеют смысла.
А если используется, то как показала практика: если размер экстента недостаточный, то запрос не сможет быть выполнен вообще и будет возвращено сообщение об ошибке.
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / unable to extend temp segment by 8192 in tablespace
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]