powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
9 сообщений из 34, страница 2 из 2
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453938
Кеклик_25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но не ругается если есть в CREATE UNDO TABLESPACE и по умолчанию при создании базы делается с
FLASHBACK ON;
:)

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
select
 name, flashback_on 
from
 v$tablespace 

YES
...
YES


Включая UNDO.
А если создать новое UNDO TS c FLASHBACK OFF там будет NO.



Нажал CTRL+C в sqlplus на кривом UPDATE, висит уже долго, как посмотреть, что запрос начал откатываться?
По buffer_gets, disk_reads(V$SQLAREA ) вижу, что запрос не бежит дальше(не меняется число блоков),
но как понять, что идет откат?
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453949
Кеклик_27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
trace.logКеклик_25,

для разового апдейта можно шлепать новое UNDO с теми параметрами, которые вам нужны, после апдейта все вернете в зад.
Так и буду делать, как раньше задавали отдельный rollback-кусок для долгих транзакций.

Еще у меня создалось впечатление, что tuned_undoretention работает,
даже при не нулевом undo_retention и без autoextend.
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39454246
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он именно при NOAUTOEXTEND и работает

Как вариант отключения (точнее изменения алгоритма расчета) -- установить AUTOEXTEND и выставить MAXSIZE в текущий размер. Тогда он будет скакать от UNDO_RETENTION, а при недостатке места пытаться расширить. При достижении MAXSIZE начнет отбирать у UNEXPIRED.
About the Undo Retention Period
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39454310
Igor Lemeshko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровВ общем большого выбора у тебя нет
Или прождать 10 часов, чтоб UNEXPIRED экстенты переехали в EXPIRED (да и в зависимости от версии ты можешь этого и не дождаться из-за багов)
Либо создать новое, перейти на него, а старое потом дропнуть

Не надо ждать, ...
Этакий flush UNEXPIRED :)

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
SQL>   SELECT TABLESPACE_NAME, STATUS, COUNT (segment_name)
  2      FROM DBA_UNDO_EXTENTS
  3     WHERE tablespace_name = 'UNDOTBS'
  4  GROUP BY STATUS, TABLESPACE_NAME
  5  ORDER BY TABLESPACE_NAME;

TABLESPACE_NAME                STATUS    COUNT(SEGMENT_NAME)
------------------------------ --------- -------------------
UNDOTBS                        ACTIVE                     725
UNDOTBS                        EXPIRED                    596
UNDOTBS                        UNEXPIRED                 5929

SQL> alter system set "_smu_debug_mode" = 33554432;

System altered.


SQL> alter system set "_undo_autotune" = false;

System altered.


SQL>   SELECT TABLESPACE_NAME, STATUS, COUNT (segment_name)
  2      FROM DBA_UNDO_EXTENTS
  3     WHERE tablespace_name = 'UNDOTBS'
  4  GROUP BY STATUS, TABLESPACE_NAME
  5  ORDER BY TABLESPACE_NAME;

TABLESPACE_NAME                STATUS    COUNT(SEGMENT_NAME)
------------------------------ --------- -------------------
UNDOTBS                        ACTIVE                    725
UNDOTBS                        EXPIRED                  6467
UNDOTBS                        UNEXPIRED                  52
 


Достаточно выключить _undo_autotune , чтобы перегнать UNEXPIRED в EXPIRED.
Теперь можно запускать тяжелые UPDATE с меньшей вероятностью ORA-30036,
ну и undo_retention поставить вменяемое заранее.
Как я понял, undo autotune выкручивает tuned_undoretention в максимально возможные значения, стараясь держать
экстенты как можно дольше.
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39454324
wurdu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так а чем не нравится UNEXPIRED ? Это же штатное поведение. Oracle делает максимально возможную undo retention при настройках как у автора. Параметр undo_retention игнорируется, как и должно быть.
UNDO_RETENTIONFor fixed- size undo tablespaces, the system automatically tunes for the maximum possible undo retention period, based on undo tablespace size and usage history, and ignores UNDO_RETENTION unless retention guarantee is enabled.
Это не ACTIVE же и могут использоваться транзакциями.
Автор запускает update который не помещается в UNDO, транзакция падает через 40 мин. Сразу после этого она падает, т.к. откат идет.
Тут как-бы либо UNDO увеличивать, либо уменьшать генерацию UNDO, либо разбивать один update на несколько с commit.
Ну а 16 потоков за 40 мин запросто 100 гиг нагенерят. 2.6 МБ в секунду на поток всего.
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39454606
Igor Lemeshko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wurduТак а чем не нравится UNEXPIRED ? Это же штатное поведение. Oracle делает максимально возможную undo retention при настройках как у автора. Параметр undo_retention игнорируется, как и должно быть.
.

Так-то оно так, и UNEXPIRED должны раздаваться активным транзакциям, но если бы банально не хватало UNDO,
запрос бы ни разу не выполнился.
А ведь утверждается, что он ранее выполнялся, потом перестал и даже на "чистой" базе, после рестарта,
когда нет чужих активных транзакций, получал ORA-30036.

1951355.1, 1951351.1 - там говорится, что раздутое значение
TUNED_UNDORETENTION может быть причиной этой ошибки,
также как и банальная нехватка места.
Есть еще баг 9327524 ( TUNED_UNDORETENTION ) пофиксенный аж в 12.1., как раз связан с неправильным значением TUNED_UNDORETENTION,
если была нагрузка перед остановом-запуском базы.

Может там формула какая-то, срабатывающая при больших значениях TUNED_UNDORETENTION, и придерживающая в таких случаях
UNEXPIRED от раздачи активным транзакциям, ну и баги не отменяли.
1951351.1 - там даже описан случай, когда можно получить эту ошибку, имея основное количество Expired экстентов.
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39454618
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В любом случае -- юзать недокументированные параметры, когда того же самого результата можно добиться документированными -- не очень приветствуется
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39454648
wurdu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну есть же v$transaction где точно видно сколько update съел undo. Без всяких гаданий.
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39456576
Кеклик_25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Была запарка не мог ответить.
Код: sql
1.
alter system set "_undo_autotune" = false;


Реально это тогда помогло, всем спасибо!

Не пробовал на undo autoextend ставить - видимо тоже сработает, но мне проще отключить _undo_autotune
в подобных системах через pfile.
Как я понял, параметр этот хоть и скрытый, но уже бывалый, с "десятки" живет и глюков с этим TUNED_UNDORETENTION
было(и есть) предостаточно.

Думаю попал упомянутый баг, когда после активной фазы DML идет ребут и неправильно вычисляется TUNED_UNDORETENTION.
Как раз проблемы появились когда в ходе тестов я понял, что надо перевести базу в noarchivelog на время DML(иначе архивами заваливает диск, ну и быстрее без archivelog).
Тестировал, перегрузил с noarchivelog .... - скрипты перестали работать и TUNED_UNDORETENTION действительно несуразное
было сразу после рестарта.

После установки параметра, размер UNDO стал вменяемым, больше половины не заполнялся.
Я даже подумал перевести все базы на этот режим, чтобы самому задавать undo_retention(так понятнее), чем этот сам себе "режиссерерный" режим.
...
Рейтинг: 0 / 0
9 сообщений из 34, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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