powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
25 сообщений из 34, страница 1 из 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
25 сообщений из 34, страница 1 из 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]