Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > почему расширяется/увеличивается UNDOTBS


Автор: zloyGamer 19.4.2010, 07:05
всем привет,
при удалении большого количества записей почему то увеличивается размер файла БД UNDOTBS01.DBF, вроде никаких триггеров при удалении не срабатывает,
сейчас этот файл уже больше гигабайта, а дальше хуже. 
подскажите пожалуста куда копать?

Автор: DimW 19.4.2010, 08:19
Цитата(zloyGamer @  19.4.2010,  07:05 Найти цитируемый пост)
увеличивается размер файла БД UNDOTBS01.DBF

Цитата(zloyGamer @  19.4.2010,  07:05 Найти цитируемый пост)
вроде никаких триггеров при удалении


это проблема? 
почему ее нужно решать?
при удалении данных УНДО не должен увеличиваться, почему?
увеличение УНДО напрямую связано с работой тригеров, почему? 





Автор: zloyGamer 19.4.2010, 22:21
мм.. 
> это проблема? 
да

> почему ее нужно решать?
я удаляю определенные записи(старые логи/истории изменений записей и кучу другого хлама) из таблиц чтобы уменьшить размер базы, т.к. бэкапы и и перенос их на другую машину становится проблематичен и вообще долго выполняется(элементарно скопирывать файл 1-3гб дольше чем 100-300мб).

> при удалении данных УНДО не должен увеличиваться, почему?
не, не должен )) зачем мне это? это лишнее!

> увеличение УНДО напрямую связано с работой тригеров, почему? 
связано/не связано пока не знаю, над смотреть.., 
а почему - я вообще без понятия!

мне просто надо максимально уменьшить размер бд но чтоб нужная инфа не пропала, 
и я вроде все лишнее посносил но тут какойто УНДО ...

как от него избавиться?

Автор: Sokol71 19.4.2010, 23:27
UNDO (анду а не ундо) tablespace хранит информацию, связанную с вносимыми в БД изменениями (в данном случае - удаление данных).

Эта информация используется для обеспечения возможности отмены изменений и отката назад (rollback )

чем больше изменений вносится от предыдущего rollback/commit до следующего - тем больше места надо в undo tablespace (чтобы все их хранить)

файл "пухнет" - видимо стоит на авто extend (расширяется-то он автоматически, да вот назад не схлопывается)

как вариант использовать скрипт или процедурку где почаще выдавать commit после удаления небольшого количества записей




Автор: zloyGamer 20.4.2010, 06:10
спасибо, попробую

Автор: DimW 20.4.2010, 08:53
Цитата(zloyGamer @  19.4.2010,  22:21 Найти цитируемый пост)
как от него избавиться? 

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

Цитата(zloyGamer @  20.4.2010,  06:10 Найти цитируемый пост)
спасибо, попробую 

Sokol71 уже сказал:
Цитата(Sokol71 @  19.4.2010,  23:27 Найти цитируемый пост)
да вот назад не схлопывается

по этому играясь с коммитами проблему не решить - в данном случае поможет его пересоздание(или точнее переопределение).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)