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

Помогите разобраться.
На долгих(до 40мин ) UPDATE (parallel DML 16, parallel 30 ) стали выскакивать эти ошибки.
UNDO у базы 100ГБ, undo_retention с 10 часов уменьшал до 60, 30, ... 5 минут - не помогает.
Причем еще "вчера" эти запросы работали.

Код: plsql
1.
2.
3.
4.
*
ERROR at line 1:
ORA-12801: error signaled in parallel query server P017
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'



Что делать?
Уменьшать parallel?
CPU E5-2690 - 8 ядер, 16 потоков.

Мне не до конца понятно как работает сохранение информации в UNDO.
Я считал, что после перезагрузки UNDO должно сбрасываться, но после рестарта размер не меняется,
и она не помогает с этой проблемой.
И потом, уменьшение undo_retention должно оставлять достаточно места - но тоже не срабатывает.
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453547
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кеклик_25Мне не до конца понятно как работает сохранение информации в UNDO.
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453548
Кеклик_25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT COUNT (segment_name), SUM (bytes / 1024 / 1024), status
FROM dba_undo_extents
GROUP BY status

COUNT(SEGMENT_NAME)    SUM(BYTES/1024/1024)    STATUS
1              24                 ACTIVE
218            14.5625            EXPIRED
16689          102356.4375        UNEXPIRED



после того как вышла эта ошибка, повторный запуск update сразу вылетает с этой же ошибкой.
После перезапуска базы он долго работает и потом сыпется(вчера работал).
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453549
Кеклик_25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Viewer , дык объясните..., что сделать?
Я знаю для чего нужно UNDO, в частности для поддержки согласованности по чтению.
Но ведь перезагрузка базы убирает все транзакции - значит и нет смысла держать сегменты выделенные им ранее.
К тому же UPDATE'ы прошедшие до проблемного были закомичены- т.е. тоже их в крайнем случае можно затереть.
Даже если это и нарушит undo_retention, но последней установил явно достаточным(5мин), не требующим много места,
по сравнению с размером самого UNDO = 100ГБ.
Что за 5 минут забивается 100ГБ?
Объясните?
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453550
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select retention from dba_tablespaces where contents='UNDO';
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453551
Кеклик_25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
4.
5.
SQL> select retention from dba_tablespaces where contents='UNDO';

RETENTION
-----------
NOGUARANTEE
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453553
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем большого выбора у тебя нет
Или прождать 10 часов, чтоб UNEXPIRED экстенты переехали в EXPIRED (да и в зависимости от версии ты можешь этого и не дождаться из-за багов)
Либо создать новое, перейти на него, а старое потом дропнуть
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453555
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Естественно, стоит проверить, не выполняется ли у тебя сейчас откат какой-либо длинной транзакции
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453558
Кеклик_25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав спасибо за советы.
Я же базу перегружаю, т.е. чужих транзакций нет.

авторИли прождать 10 часов, чтоб UNEXPIRED экстенты переехали в EXPIRED (да и в зависимости от версии ты можешь этого и не дождаться из-за багов)

Вот же блин ... сдается мне что тут баги, иначе как вообще объяснить, что на днях эти UPDATE
работали, а сегодня глюкают?
Или тестируя эти запросы я и забил UNDO?


Есть ли тут эти баги и откуда взялось 10 часов, если я пытаюсь
задать минимальное время(5мин) для undo_retention? -

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production

Зачем держать эти экстенты ПОСЛЕ перезагрузки?

авторЛибо создать новое, перейти на него, а старое потом дропнуть
А даст он на новое переключиться?
И тут же вопрос - если даст, то значит ничего там "бесценного" нет и почему Oracle сам не отдает
эти экстенты активным транзакциям, там где они реально нужны?

Я так понял, если сделать PLSQL блок с update в цикле(можно по rowid, bulk...) - это тоже тут не поможет,
так как просто забито UNDO?
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453562
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кеклик_25Я же базу перегружаю, т.е. чужих транзакций нет.Ну если ты перегрузил когда твой страшный UPDATE еще работал (или уже отработал, но ты не закоммитил его) -- это ведь откатить надо

Кеклик_25откуда взялось 10 часов, если я пытаюсь
задать минимальное время(5мин) для undo_retention? -Ты ведь меняешь уже для новых -- для старых так и осталось то значение, которое было на момент создания

Кеклик_25SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - ProductionНавскидку, здесь уже должно быть номально (явные баги, когда экстент оставался в статусе UNEXPIRED, были полечены еще в 10.2)

Кеклик_25Зачем держать эти экстенты ПОСЛЕ перезагрузки?Да как бы ораклу фиолетово на перезагрузку -- он только темп подчищает (точнее, просто переинициализирует пул)
Зачищать UNDO, SHRINK-ать таблицы и индексы -- слишком много чести. Он даже незакомиченные транзакции лениво откатывает, а что уж говорить об отложенной очистке блоков

авторЛибо создать новое, перейти на него, а старое потом дропнуть
А даст он на новое переключиться?
И тут же вопрос - если даст, то значит ничего там "бесценного" нет и почему Oracle сам не отдает
эти экстенты активным транзакциям, там где они реально нужны?

Я так понял, если сделать PLSQL блок с update в цикле(можно по rowid, bulk...) - это тоже тут не поможет,
так как просто забито UNDO?[/quot]Переключиться даст, тут он помешать не в силах
И, может, даже старое удалить разрешит, хотя оно ему время от времени будет нужно и он будет гневно срать в alert.log
Но со временем забудет
А можно просто подождать с удалением старого
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453563
trace.log
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кеклик_25,

после перезагрузки БД - смело можно создать новое UNDO и переклюбчиться на него, после чего со временм старое удалить.
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453572
Кеклик_25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровНу если ты перегрузил когда твой страшный UPDATE еще работал (или уже отработал, но ты не закоммитил его) -- это ведь откатить надо

Не, ну базу торможу shutdown immediate - он должен сам откатить все транзакции...
Да и не делал так(перегрузка во время работы update) ...

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

упс, точно ....было 10 часов ...


Да как бы ораклу фиолетово на перезагрузку -- он только темп подчищает (точнее, просто переинициализирует пул)
Зачищать UNDO, SHRINK-ать таблицы и индексы -- слишком много чести. Он даже незакомиченные транзакции лениво откатывает, а что уж говорить об отложенной очистке блоков
Мне это непонятно - я могу переключится на другое UNDO - ведь это значит, что ничего ценного в текущем undo нет.
И вместо того чтобы выделить эти эктенты, для активной транзакции, Oracle рубит запрос, роняя приложение.

Кстати, я считал, что undo информация по закомиченным транзакциям может быть перезатерта
даже в нарушение undo_retention - это выходит не так?
Вроде так было в 7-8i?

авторПереключиться даст, тут он помешать не в силах
И, может, даже старое удалить разрешит, хотя оно ему время от времени будет нужно и он будет гневно срать в alert.log
Но со временем забудет
А можно просто подождать с удалением старого
Спасибо за науку, но тут явный перебор у Oracle.
Дает переключится - значит нет активных транзакций в UNDO... - и значит валом места... - нет же, хранит...
Надо аккуратнее с undo_retention....

trace.log после перезагрузки БД - смело можно создать новое UNDO и переклюбчиться на него, после чего со временм старое удалить.


Ну так и сделаю, удалю позже...
Остался вопрос -
если сделать PLSQL блок с update в цикле с коммитами (можно по rowid, bulk...) - это тоже тут не поможет,
так как просто забито UNDO?
Обычно такие UPDATE в случае проблем разбивают....(но там снапшот ту олд...).
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453578
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кеклик_25Да как бы ораклу фиолетово на перезагрузку -- он только темп подчищает (точнее, просто переинициализирует пул)
Зачищать UNDO, SHRINK-ать таблицы и индексы -- слишком много чести. Он даже незакомиченные транзакции лениво откатывает, а что уж говорить об отложенной очистке блоков
Мне это непонятно - я могу переключится на другое UNDO - ведь это значит, что ничего ценного в текущем undo нет.Переключиться -- это не значит потерять старую инфу
Кеклик_25И вместо того чтобы выделить эти эктенты, для активной транзакции, Oracle рубит запрос, роняя приложение.

Кстати, я считал, что undo информация по закомиченным транзакциям может быть перезатерта
даже в нарушение undo_retention - это выходит не так?По идее должна быть и перезатерта
Вот только я подозреваю следующий сценарий:
-- стояло AUTOEXTEND (и 10 часов)
-- увидел, что слишком подросло, отменил AUTOEXTEND и начал играться с UNDO_RETENTION
Вот только те экстенты которые были выделены при AUTOEXTEND имеют жесткую привязку к UNDO_RETENTION на момент создания, в то время как при фиксированном размере UNDO_RETENTION расчитывается автоматически и наверное не столь критично к нарушению
Ну, точнее, это такая гипотеза
Кеклик_25Вроде так было в 7-8i?В 7-8 Automatic Undo Management вообще не было :-)
А вот в 9.2 я натыкался, что UNEXPECTED не освобождались и не переводились в EXPIRED

Кеклик_25авторПереключиться даст, тут он помешать не в силах
И, может, даже старое удалить разрешит, хотя оно ему время от времени будет нужно и он будет гневно срать в alert.log
Но со временем забудет
А можно просто подождать с удалением старого
Спасибо за науку, но тут явный перебор у Oracle.
Дает переключится - значит нет активных транзакций в UNDO... - и значит валом места... - нет же, хранит...
Надо аккуратнее с undo_retention.... А вдруг ты Flashback Query забабахаешь?
И будешь возмущаться -- UNDO_RETENTION еще позволяет, а мне ORA-01555 лезет

Кеклик_25Остался вопрос -
если сделать PLSQL блок с update в цикле с коммитами (можно по rowid, bulk...) - это тоже тут не поможет,
так как просто забито UNDO?
Обычно такие UPDATE в случае проблем разбивают....(но там снапшот ту олд...).Ну дык, если просто нет места в текущем UNDO
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453581
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, я считал, что undo информация по закомиченным транзакциям может быть перезатерта
даже в нарушение undo_retention - это выходит не так?
Вроде так было в 7-8i?
В 7-8 не было ни undo_retention, ни undo tablespace. Rollback segments и никаких undo :)
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453593
Кеклик_25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если в линуксе дату перевести вперед перед запуском базы - освободит он UNEXPIRED экстенты?
Это ради интереса просто, делать так не буду, т.к. придется еще и отключать ntpd.
Хотя не сложно...

Кстати, я вчера вечером уменьшал уже undo_retention задавал час по-моему - почему до сих пор столько UNEXPIRED экстентов?
Т.е. 10 часов давно прошло....


Вячеслав ЛюбомудровПо идее должна быть и перезатерта
Вот только я подозреваю следующий сценарий:
-- стояло AUTOEXTEND (и 10 часов)
-- увидел, что слишком подросло, отменил AUTOEXTEND и начал играться с UNDO_RETENTION
Вот только те экстенты которые были выделены при AUTOEXTEND имеют жесткую привязку к UNDO_RETENTION на момент создания, в то время как при фиксированном размере UNDO_RETENTION расчитывается автоматически и наверное не столь критично к нарушению
Ну, точнее, это такая гипотеза

Не знал об этой особености связки AUTOEXTEND + UNDO.
Правда и не видел ни одной системы с AUTOEXTEND на UNDO.

В этом случае было и есть 100ГБ.
И мне непонятна эта ошибка.

Вячеслав ЛюбомудровВ 7-8 Automatic Undo Management вообще не было :-)

Undo Management не было, но движение экстентов по кругу было, и "закомиченные" undo экстенты,
отдавались активным транзакциям, даже в нарушение UNDO_RETENTION.
Там вообще можно было длинной транзакции прицепить отдельный кусок "undo".
Что сейчас могло бы сработать.

А вот в 9.2 я натыкался, что UNEXPECTED не освобождались и не переводились в EXPIRED

вот очень на то похоже.
А вдруг ты Flashback Query забабахаешь?
И будешь возмущаться -- UNDO_RETENTION еще позволяет, а мне ORA-01555 лезет

Да, понятно, должен держать и после рестарта базы, но не должен держать закомиченные экстенты в ущерб активным транзакциям.

Ну дык, если просто нет места в текущем UNDO
м-да, придётся шлепать UNDO TS, благо это разовый UPDATE.
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453603
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кеклик_25Undo Management не было, но движение экстентов по кругу было, и "закомиченные" undo экстенты,
отдавались активным транзакциям, даже в нарушение UNDO_RETENTION.
Там вообще можно было длинной транзакции прицепить отдельный кусок "undo".
Что сейчас могло бы сработать.
Ты путаешь с rollback-сегментами
Которые вообще ни о каком времени удержания не знали
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453607
Кеклик_25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровТы путаешь с rollback-сегментами
Которые вообще ни о каком времени удержания не знали
Да, конечно UNDO_RETENTION там не было, уже забывать стал названия и детали, но общие концепты не поменялись.
Закомиченные экстенты они не держали, если не хватало места активным транзакциям.
Undo managment просто автоматизировал процесс управления этими rollback-сегментами.
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453648
Кеклик_27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При создании UNDO TS есть опция
FLASHBACK OFF;
FLASHBACK ON;
Как считаете, имеет смысл использовать на временном TS на время этих UPDATE FLASHBACK OFF ?
Потом переключу на старое, у меня под него была выделена отдельная FS.
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453652
Кеклик_25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. будут опции:
RETENTION NOGUARANTEE
FLASHBACK OFF;
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453713
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет такой опции для UNDO
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453809
Кеклик_25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оно тут не из этой оперы, но такая опция есть для создания любого TS.

flashback_mode_clause ::=
http://oracle.su/docs/11g/server.112/e10592/statements_7003.htm
| FLASHBACK { ON | OFF }
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453816
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кеклик_25Оно тут не из этой оперы, но такая опция есть для создания любого TS.
выж не любое создаёте, а конкретное...
http://oracle.su/docs/11g/server.112/e10592/statements_7003.htm#CJAFDEIF
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453818
trace.log
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кеклик_25,

для разового апдейта можно шлепать новое UNDO с теми параметрами, которые вам нужны, после апдейта все вернете в зад.
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453824
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViewerКеклик_25Оно тут не из этой оперы, но такая опция есть для создания любого TS.
выж не любое создаёте, а конкретное...
http://oracle.su/docs/11g/server.112/e10592/statements_7003.htm#CJAFDEIF
Sorry "Акелла промахнулся"
http://oracle.su/docs/11g/server.112/e10592/statements_7003.htm#CJAJHGDA
...
Рейтинг: 0 / 0
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
    #39453831
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда уж
https://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_7003.htm#i2174630 This clause is not valid for temporary or undo tablespaces.
...
Рейтинг: 0 / 0
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
34 сообщений из 34, показаны все 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]