Ошибка ORA-04020 при добавлении партиции

AndrykV
Дата: 23.09.2015 18:32:38
Oracle 11g

Есть партицированная таблица по расписанию каждую ночь в 2 часа для нее добавляются партиции разделенные по времени с разбивкой на 4 часа. Все работало нормально, но вот последние два дня, выдает ошибку дедлока... Куда смотреть что ей не хватает?
Админ говорит tablespase заполнены на 30-40%.

У меня на стенде, все работает как часы...
orawish
Дата: 23.09.2015 18:48:19
AndrykV,

щщас угадаю ;)

секционирование интервальное?
AndrykV
Дата: 23.09.2015 19:10:18
orawish,

Угадал :)

Я же вроде написал разеленные по 4 часа...
Perl'ун старый
Дата: 24.09.2015 09:55:02
Смотри в логи, для начала. В логе должно быть расписано кто и за какие объекты сцепился.
orawish
Дата: 24.09.2015 10:17:33
AndrykV
orawish,

Угадал :)

Я же вроде написал разеленные по 4 часа...


"интервалить" при этом же не обязательно. более того - совершенно напрасно (имхо)
ну а на тему что случилось - stff гадаем дальше..
AndrykV
Дата: 26.09.2015 12:16:00
orawish, Почему интервалить лишнее? у меня предполагается порядка 2-3 млн, может и больше, записей в сутки, потом еще через некоторое время переливать данные в архивную БД по линку, ИМХО по партициям переливка легче делается.

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

Но меня смущает что ошибка при добавлении партиции поисходит, я бы еще понял чтобы она была при удалении. партиции у меня создаются с запасаом за несколько дней, типа окна смотрящего вперед на 2-3 дня.

За "тынцы" оргромное спасибо.
orawish
Дата: 28.09.2015 10:59:53
AndrykV
orawish, Почему интервалить лишнее? ..

эту 7086202 тему читали?
AndrykV
Дата: 28.09.2015 16:37:47
orawish,

А я не правильно понял ваш вопрос "секционирование интервальное?", нет не интревальное обычное RANGE.
orawish
Дата: 28.09.2015 17:18:09
AndrykV
orawish,

А я не правильно понял ваш вопрос "секционирование интервальное?", нет не интревальное обычное RANGE.


не создавайте секций очередями ( у вас же 6 штук сразу, наверное раз в день )
стабильнее будет работать по одной, через 6 часов
AndrykV
Дата: 29.10.2015 09:57:00
В общем наконец-то руки дошли до этой проблемы. Может кому будет полезно.

Победил я эти deadlock ошибки.

В ощем. проблема оказалась следущая.
У меня есть несколько таблиц с reference партицированием. Партицирование range(по дате)
Так вот при добавлении новых партиций сверху, если при этом идет запись в эти таблицы, возникала ошибка deadlock, т.к. при добавлении партиции оракл пытается блокировать эти таблицы полностью. Это показали экперименты, потому как ошибка блокировки в процедуре вставки записей просходила на разных таблицах.

В общем решение оказалось простым, делаем верхнюю партицию с масимальным значением, и потом при необходимости нарезаем партиции от нее командой split partition. При этом блокируется только верхняя партиция в которую запись пока еще не идет.

В общем как-то так.
Удачи.