|
|
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
Help, Помогите разобраться. На долгих(до 40мин ) UPDATE (parallel DML 16, parallel 30 ) стали выскакивать эти ошибки. UNDO у базы 100ГБ, undo_retention с 10 часов уменьшал до 60, 30, ... 5 минут - не помогает. Причем еще "вчера" эти запросы работали. Код: plsql 1. 2. 3. 4. Что делать? Уменьшать parallel? CPU E5-2690 - 8 ядер, 16 потоков. Мне не до конца понятно как работает сохранение информации в UNDO. Я считал, что после перезагрузки UNDO должно сбрасываться, но после рестарта размер не меняется, и она не помогает с этой проблемой. И потом, уменьшение undo_retention должно оставлять достаточно места - но тоже не срабатывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 06:43 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
Кеклик_25Мне не до конца понятно как работает сохранение информации в UNDO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 07:02 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. после того как вышла эта ошибка, повторный запуск update сразу вылетает с этой же ошибкой. После перезапуска базы он долго работает и потом сыпется(вчера работал). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 07:04 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
Viewer , дык объясните..., что сделать? Я знаю для чего нужно UNDO, в частности для поддержки согласованности по чтению. Но ведь перезагрузка базы убирает все транзакции - значит и нет смысла держать сегменты выделенные им ранее. К тому же UPDATE'ы прошедшие до проблемного были закомичены- т.е. тоже их в крайнем случае можно затереть. Даже если это и нарушит undo_retention, но последней установил явно достаточным(5мин), не требующим много места, по сравнению с размером самого UNDO = 100ГБ. Что за 5 минут забивается 100ГБ? Объясните? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 07:10 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
select retention from dba_tablespaces where contents='UNDO'; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 07:23 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 07:31 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
В общем большого выбора у тебя нет Или прождать 10 часов, чтоб UNEXPIRED экстенты переехали в EXPIRED (да и в зависимости от версии ты можешь этого и не дождаться из-за багов) Либо создать новое, перейти на него, а старое потом дропнуть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 07:41 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
Естественно, стоит проверить, не выполняется ли у тебя сейчас откат какой-либо длинной транзакции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 07:42 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
Вячеслав спасибо за советы. Я же базу перегружаю, т.е. чужих транзакций нет. авторИли прождать 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? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 07:59 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
Кеклик_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 Но со временем забудет А можно просто подождать с удалением старого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 08:14 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
Кеклик_25, после перезагрузки БД - смело можно создать новое UNDO и переклюбчиться на него, после чего со временм старое удалить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 08:15 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровНу если ты перегрузил когда твой страшный 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 в случае проблем разбивают....(но там снапшот ту олд...). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 08:36 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
Кеклик_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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 09:06 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
Кстати, я считал, что undo информация по закомиченным транзакциям может быть перезатерта даже в нарушение undo_retention - это выходит не так? Вроде так было в 7-8i? В 7-8 не было ни undo_retention, ни undo tablespace. Rollback segments и никаких undo :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 09:12 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
А если в линуксе дату перевести вперед перед запуском базы - освободит он 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 09:37 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
Кеклик_25Undo Management не было, но движение экстентов по кругу было, и "закомиченные" undo экстенты, отдавались активным транзакциям, даже в нарушение UNDO_RETENTION. Там вообще можно было длинной транзакции прицепить отдельный кусок "undo". Что сейчас могло бы сработать. Ты путаешь с rollback-сегментами Которые вообще ни о каком времени удержания не знали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 09:55 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровТы путаешь с rollback-сегментами Которые вообще ни о каком времени удержания не знали Да, конечно UNDO_RETENTION там не было, уже забывать стал названия и детали, но общие концепты не поменялись. Закомиченные экстенты они не держали, если не хватало места активным транзакциям. Undo managment просто автоматизировал процесс управления этими rollback-сегментами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 10:03 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
При создании UNDO TS есть опция FLASHBACK OFF; FLASHBACK ON; Как считаете, имеет смысл использовать на временном TS на время этих UPDATE FLASHBACK OFF ? Потом переключу на старое, у меня под него была выделена отдельная FS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 11:09 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
Т.е. будут опции: RETENTION NOGUARANTEE FLASHBACK OFF; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 11:12 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
Нет такой опции для UNDO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 12:30 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
Оно тут не из этой оперы, но такая опция есть для создания любого TS. flashback_mode_clause ::= http://oracle.su/docs/11g/server.112/e10592/statements_7003.htm | FLASHBACK { ON | OFF } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 14:06 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
Кеклик_25Оно тут не из этой оперы, но такая опция есть для создания любого TS. выж не любое создаёте, а конкретное... http://oracle.su/docs/11g/server.112/e10592/statements_7003.htm#CJAFDEIF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 14:15 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
Кеклик_25, для разового апдейта можно шлепать новое UNDO с теми параметрами, которые вам нужны, после апдейта все вернете в зад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 14:16 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 14:20 |
|
||
|
ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS'
|
|||
|---|---|---|---|
|
#18+
Тогда уж https://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_7003.htm#i2174630 This clause is not valid for temporary or undo tablespaces. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2017, 14:27 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39453548&tid=1885908]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 494ms |

| 0 / 0 |
