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

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

EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M???

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

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

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

в трейсе наверняка найдешь больше информации, в частности, почему unable to extend temp segment by 8192 in tablespace.
...
Рейтинг: 0 / 0
29.05.2003, 10:52:01
    #32171532
Глызин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unable to extend temp segment by 8192 in tablespace
а где этот параметр посмотреть в init.ora смотрел нет его там
...
Рейтинг: 0 / 0
29.05.2003, 10:55:17
    #32171538
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unable to extend temp segment by 8192 in tablespace
Код: 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
29.05.2003, 10:56:13
    #32171540
Глызин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unable to extend temp segment by 8192 in tablespace
65536 и что?
...
Рейтинг: 0 / 0
29.05.2003, 10:59:03
    #32171547
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unable to extend temp segment by 8192 in tablespace
Значит команда создания темп-области у тебя должна быть такая:
Код: 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
29.05.2003, 11:22:19
    #32171588
Глызин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unable to extend temp segment by 8192 in tablespace
ок сделал
посморим что буд а в кратце что это за параметр то?
...
Рейтинг: 0 / 0
29.05.2003, 11:28:29
    #32171603
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unable to extend temp segment by 8192 in tablespace
Размер экстента, должен быть кратным параметру sort_area_size.
В твоём случае он должен быть: 64K, 128K, 196K итд.
...
Рейтинг: 0 / 0
29.05.2003, 11:40:11
    #32171627
Глызин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unable to extend temp segment by 8192 in tablespace
спасибочки
...
Рейтинг: 0 / 0
02.06.2003, 11:35:42
    #32173837
Violina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unable to extend temp segment by 8192 in tablespace
До сих пор полагала, что

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
02.06.2003, 11:45:26
    #32173850
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unable to extend temp segment by 8192 in tablespace
Проблема в данном случае в том, что у него очень большой обьём экстента.
Временный сегмент может быть использован несколькими сессиями в один и тот-же момент времени, но именно сегмент, а не один и тот-же экстент.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

То есть создать 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
02.06.2003, 15:26:15
    #32174190
Violina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unable to extend temp segment by 8192 in tablespace
Как получить информацию о 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
02.06.2003, 15:30:23
    #32174197
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unable to extend temp segment by 8192 in tablespace
Ну так в этом и смысл типа EXTENT MANAGEMENT LOCAL.
Используй пакет dbms_space
...
Рейтинг: 0 / 0
02.06.2003, 15:31:52
    #32174200
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unable to extend temp segment by 8192 in tablespace
А вообще, на твоём месте я бы не отвлекался от подготовки к 1Z0-001.
...
Рейтинг: 0 / 0
02.06.2003, 15:38:04
    #32174209
Violina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unable to extend temp segment by 8192 in tablespace
Не могу же я только SQL и PL/SQL заниматься, если по ходу возникают вопросы я стараюсь их выяснить. Но ты прав, на dbms_space я уже отвлекаться не буду пока, отложу до более подходящего момента.

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

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

А для SYSTEM нет смысла, если его по уму использовать.
Не создавать в нём временных и иных сегментов, в том числе и aud$.
...
Рейтинг: 0 / 0
03.06.2003, 11:41:30
    #32174904
X-Max
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unable to extend temp segment by 8192 in tablespace
Если 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
03.06.2003, 11:55:28
    #32174932
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unable to extend temp segment by 8192 in tablespace
to X-Max: если hash join не используется то данные утвержения не имеют смысла.
А если используется, то как показала практика: если размер экстента недостаточный, то запрос не сможет быть выполнен вообще и будет возвращено сообщение об ошибке.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / unable to extend temp segment by 8192 in tablespace / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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