|
|
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
Господа, прошу помощи ибо сам без сил....у меня корпоративная база данных под 8.1.7. База грубо говоря оптово-торгового склада. 56000 наименований 6 тарифио отпуска. Стоит софт писаный не мной недавно...при запуске процедуры формирования прайс листа стандартные ролбаки (со скрипта генерации базы софта инишл5М-1Мекстент-121-7М оптимал) переполняются...я пересоздал ролбаки по 45М с экстентами по 5М в итоге сформировал прайс, смотрю на ролбак - 300М!!!! и это в прайсе 3000 наименований...долблюсь к разработчикам...а мне в ответ типа "а в чем проблема что сегменты отката увиличиваются?"....как мне их опустить грамотно? я все аргументы исчерпал....HELP!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2003, 19:18 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
ALTER ROLLBACK SEGMENT segment_name SHRINK; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 12:45 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
Привет! Если я правильно понимаю работу Оракла, то когда работает долгая транзакция, которая только чтение, то для нее обеспечивается режим, при котором повторные чтения выдает один и тот же результат. И это при том, что другие транзакции могут эти же данные изменять. Для обеспечения этого СУБД хранит старые данные в сегментах отката - оттуда читающая транзакция их и берет. Причем, здесь может возникнуть ошибка Snapshot tool old - это если места нету в сегменте отката и больше СУБД не может обеспечивать режим стабильности курсора. Если же сегменты здоровые - то все нормально. Наверное, параллельно с генерацией прайса (долгая читающая транзакция) работают пишущие транзакция, что и вынуждает сегменты отката расти. Возможные решения: запускать генерацию прайса, когда нет читающих транзакций. Либо как-то заставить оракл не использовать для этой транзакции режим снепшота. Собственно ответ слегка оффтопик, но я бы развил эту тему - может кто знающий расскажет как надо с этим бороться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 12:56 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
попробуй указать Uniform Size ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 13:23 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
Да то, что они растут - это ведь нормально. Генератор прайса должен работать с консистентными данными. Если их параллельно кто-то изменяет - должны быть их копии. Эти копии храняться в сегментах отката. А если не дать сегментам расти - генератор прайса не выполнит своей работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 13:34 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
Народ, когда проходят такие транзакции, я считаю это ненормальным, Проблема в том что, при прохождении чекпоинта или комита этот 600 метровый разрозшийся ролбак начинает сливаться из кэша на винт и сворачиваться до оптимала, в этот момент у базы дико падает производительность , если кто-то в этот момент производил подобные транзакции (формирование товарного календаря, формирование прайс-листа) этого юзера просто отстреливает сервер из-за нехватки ресурсов (4Гб оперативки 2Р3-1700, 5SCSI винтов, Linux так как win2k не может обеспечить достойную производительность). Вообще по рекомендации оракла параметры ролбаков для достижения оптимальной производительности базы данных: initial 5Mb extent 1Mb maxextents 121 optimal size 7Mb, с такими параметрамим генерится база ПАРУСА ,а прайс-лист с такими ролбаками не формируется вообще, потому что максимальный размер его составит 127Mb, а транзакция 600!!!!Mb. Выдается ошибка о переполнении ролбака, оракл выводит его в состояние FULL и начинаются оракловые мероприятия по его освобождению, происходит принудительный неоднократный чекпоинт, базу лихорадит, что в этот момент с сессиями юзеров происходит: неактивные юзеры получают ORA-03113, остальные практически парализованы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 14:47 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
Не, ну ей-богу, если транзакция такая большая, значит ей нужно столько много роллбэка. А если нужно - надо дать. Без вариантов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 15:04 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
Вопрос, не в том сколько места ей надо, а в том корректно ли делать такие транзакции....???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 15:07 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
Говоря "нормально" - я имел в виду их рост. А вот степень этого роста мне тоже не нравиться. Я конечно знаком с ораклом довольно поверхностно, но: - странно, что генерации прайс-листа мешают другие транзакции так, что это вынуждает СУБД хранить ТАКИЕ большие копии. Может этот генератор чего-то мудрит. Если бы я генерил прайс - я бы воспользовался бы справочником товаров + справочником текущих цен на эти товары - на мой взгляд эти данные не должны меняться часто (читать-то их могут регулярно). Следовательно и записей в ролбек сегменте для такой операции не должно быть ваще (либо их очень мало). Хотя надо уточнить, может оракл не знает, будет ли транзакция менять данные или нет, поэтому даже читателей так изолирует и для этого ему надо на это явно указать. Может надо указывать, что транзакция READ ONLY (а она сейчас НЕ рид-онли). Но это надо уточнить в доке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 15:09 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
2Vladimirgs Мне кажется, что тут несколько проблем, которые надо решать по отдельности, а иначе - запутаетесь. Сама по себе проблема длинной транзакции не может привести к остановке сервера. Сам по себе роллбек сегмент никуда не сливается, а checkpoint делается при переключении логов или в заданный момент до переключения или при недостатке свободных блоков в буферном кеше. Во-первых, попробуйте отключить компонент ядра oom_killer, который отстреливает якобы "зажравшиеся" процессы. Если после этого пользователи тоже будут получать ORA-03113, значит тут какой-то баг. Во-вторых определите как часто происходят checkpoint'ы если считаете, что проблема в них (log_checkpoints_to_alert=true). В-третьих протрассируйте проблемную сессию и посмотрите, что ж на самом деле делают разработчики при формировании прайса. И самое главное попробуйте описать ваши проблемы не "гуманитарно", а "технически", т.е. какие события ожидания преобладают, какова статистика I/O и т.д. (например, при помощи statspack), а также в ОС (paging, swaping, free memory и т.д) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 15:12 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
Транзакция если можно так сказать пишуще-читающая, она читает из справочника цен и ищет по справочнику товаров соответствующий товар и записывает это в третью таблицу.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 15:14 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
Если она еще и пишушая, то наверняка Оракл скидывает в ролбек сегмент справочник товаров + справочник цен :) Народ-то вокруг цены, поди, смотрит - счета выписывает. А оракл, поди, их тоже писателями считает. Вот он их друг от друга и изолирует :)) А можно запустить генерацию прайса, когда народа на сервере нет? Если все будет гладко - ролбеки не растут и хватает их маленьких, то значить это неправильно разработанные транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 15:23 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
не, даже если формировать только прайс то ролбак разрастается, а юзеров выгонять не могу прайс надо делать каждые 2 часа... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 15:31 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
тогда, как же ты проверил, не выгнав юзеров ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 15:38 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
"Во-первых, попробуйте отключить компонент ядра oom_killer" to .dba: А где он собственно указывается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 16:07 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
Привет, Наличие большого ролбака указывает на то, что программа "защищается" от текущих изменений в течении продолжительного периода времени (скорее всего с использованием ТХ Сериалайзабле). Возможные варианты по логике и по реализации -- отказаться от погони за "свежестью". Например продажи учитывать только до полночи предыдущего дня. Если гонять такую программу ночью, то полу-статические данные (например цена) тоже менятся не будут. -- использовать снапшоты или временные таблицы для меняющихся исходных данных. -- разбить процесс на несколько логических кусков -- разбить процесс на несколько физичеких кусков, делая цикл чтение-обработка-запись-комит на , скажем, 100 записей. -- Перейти на ТХ реад коммитед уровень изоляции, если позволит логика. -- использовать методику "длинных трансакций" на уровне аппликации и разгрузить ТХ контроль на базе. (Трансакционные таблицы, поля ТХ статуса, итд ) -- комбинации из вышеперечисленного ЙЙ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 16:18 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
Логично, черт возьми, но скажите мне я прав в том что огромные рролбаки череваты потерями производительности, надежности и вообще являются признаком плохого програмирования??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 16:34 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
А ты можешь сказать какого размера справочник + таблица цен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 16:39 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
в записях могу , товары порядка 56000 записей, а цены - порядка 11000, ну не на весь товар еще заколотили... новый год все таки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 17:19 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
база то типа реляционная :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 17:22 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
Вам же dba дельный совет дал... Вы, хотя бы, трассу запустите-то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 17:45 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
Это практично, но гораздо приятнее решить задачу умозрительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 17:53 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
Хотя я б трассернул бы сразу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 17:56 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
По-моему дискусия ушла от конечной задачи. Чего нужно добится в итоге? Есть-ли возможность "исправить приложение"? (в начальном сообщении указывалось, что ~ разработчики игнорируют проблемы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 17:59 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
вопрос повторяю еще раз....мне можно надавить на разработчиков...но они говорят что такой прирост ролбаков нормален...а я говорю что нет...так как и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 18:16 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
Vladimirgs, попробуйте узнать - что реально происходит при "формирование прайса" > 1) перезапустите резервный сервер, 2) запустите "формирование прайса" и следите за содержимым V_$OPEN_CURSOR. (не думаю, что подобная задача породит очень много "строк") В этом представлении есть поле SQL_TEXT, возможно Вы поймете - чем занимается приложение. (текст будет усечен, но можно посмотреть и полный текст транзакций). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 18:23 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
Гррм, народ...мне вообщем то плевать че там делает сервак...я вот сижу листаю процедуры тут черт ногу сломит, выполняется все 3 пакейджами один берет запись о приходной партии, проверяет на наличее на эту партии цен...., другой собирает цены по всем возможным тарифам смотрит на остаток на складе..., третий инсертит это все в таблицу фулпрайс по условиям заданым перед формированием....сплошные селекты, апдейты........а комитов не вижу....... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 18:33 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
2 guest: -- vo pervih kak sovetoval dba namnogo prosche i TOCHEE zapustit trassirovku dlia sessii. poscolku file trassirovki sam po sebe TEHNICHESKIY DOKUMENT, kotoriy mogno predyavit razrabotchikam. 2 Vladimir -- razrabotchikov v etoi situacii, esli ug poshla takaya pianka, mogno zadavit sovershenno formalno. (no companiya dolgna resitsia na eto). 1) vidvigalis li razrabotchikami tehnicheskie trebobaniya k parametram bazi dannih. -- esly da - sopostavit s realnimi paarametrami v kotorih rabota vozmogna -- esli ne - (eto imteresnee) - togda na testovoi baze ogranichit resursi kak tolko mogno (vkluchaiya RBS) i zapustit prilogenie s nagruzkoy esli ono zavalitsia ili ne budet udovletvoriat vremennim harakteristikam ili escho kakim libo predvaritelno zaiyavlennim v dogovore trebovaniyam to: a) razrabotchiki ne vipolnili trebovaniya ishodnogo dogovora. b) eto est osnovanie dliya davleniya na nih po povodu ispravleniya situacii (vkluchaya situaciu s RBS) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 18:46 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
! ! ! При формировании сложных отчетов достаточно часто используются промежуточные таблицы. Может просто обратиться к разработчикам и попросить их добавить (промежуточные commit;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 18:47 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
>"Во-первых, попробуйте отключить компонент ядра oom_killer" >to .dba: А где он собственно указывается? К сожалению, я сейчас не могу найти поскольку в моих ядрах он отсутствует (к счастью). Но суть в том, что можно пересобрать ядро без него. Насколько я помню он должен находиться в /usr/src/linux/mm/oom_kill.c. Просто удалите oom_kill.o из файла /usr/src/linux/mm/Makefile и перекомпилите ядро. Возможно наврал, т.к. сам не делал :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 18:55 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
этот софт тиражное решение.... я реально внедренец этого софта правда региональный со всеми причитающимися сертификатами лицензиями и т.д. средство давления есть....но собравшихся здесь я считаю авторитетной комиссией и жду авторитетного мнения....я как занимающийся оракловыми решениями и поднявший не одну базу считаю что база данных имеющая 75 юзеров с средней транзакцией до 300Кб не может иметь ролбаки в 45 метров с возможностью роста до 600Метров, т.к. оракловая рекомендация по размерам ролбака для баз с таким средним размером транзакций является 5М на 5 юзеров, т.к. в этом случае достигается оптимальная производительонсть и надежность сохранности данных.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 18:57 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
Razmer RBS NIKOGDA NE ZAVILIT ot kolichestva userov. TOLKO I ISKLUCHITELNO ot kolichestva i razmera TRANZAKCIY. (vne zavisimosty ot razmera baza i connectov) 1) Pocemu v razgovore s razrabotchikami kolichestvo i razmer tranzakciy est predmet obsuzdeniya. 2) v sluchae nalichiya dolgoigrauschih tranzakciy pridmetom obsugdeniya moget bit ih tip: -- obichanaya -- read only -- serializaciya t.k. etot tip moget SUSCHESTVENNO vliyat na razmer, kolichestvo, i vreamya aktivnoy gizni opredelennogo ili vseh (za isklucheniem system) RBS. 3) v sluchae esli nalichie dlinnoy (bez serrializacii) tranzakcii izvestno vo vremya razrabotki, a eto kak pravilo izvestno, to v skripte na sozdanie bazi (v tom chisle i osobenno dlia tipovih resheniy) OBIYAZAN bit sosdan specialniy RBS dlia dannoy(h) tranzakcii i on dolgen naznachatsia komandoy (SET TRANSACTION USE ROLLBACK SEGMENT ...). sudya po vsemu imenno eto ne bilo sdelano. V sluchae serrializacionnih tranzakciy: -- p.3 ostaesya v sile + -- dolgno bit opredeleno : a) vremya gizni (v srednem) serrializacionnih tranzakciy b) kolichestvo ostalnih RBS * srednee kolichestvo tranzakziy v ed. vremeny * vremya serrializacionnih tranzakciy. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2003, 19:14 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
вот...услышал разумные слова....надо было сделать отдельный ролбак для такой транзакции и назначать его в теле процедуры....а остальные можно сделать "по госту" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2003, 10:21 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
to ShgGena я поднял курс по ораклу который читали мне: рекомендуемые размеры ролбаков 5Мб с автоэксентом 1М и оптимал 7М на 5 юзеров со средней транзакцией 200кб-1Мб...подгоняйте экстенты под размеры максимальных транзакций для уменшения разрастания пространства ролбаков....чрезмерно большой ролбак ведет к увеличению дисковых операций и как следствие падение производительности сервера с базой данных....а вот о максимальных размерах ничего не сказано...??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2003, 19:12 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
Можно нескромный вопрос: А где этому учили? Если подобные данные относятся к какой-то конкретной задаче при условии вполне опереленного размера кажной транзакции (в среднем) может быть эти данные и имеют смысл для данного приложения только. В общем случае никакого реального смысла эта информация не несет. Так цифры взятые с потолка. Как я (в общем случае и коротко) планирую сегменты отката, если характер работы приложения заранее неизвестен. 1) Оценивается среднее коннектов к базе в единицу времени. 2) По результатам анализа статистики ка какой-то более менее длительный промежуток времени оценивается : -- количестро транзакций в ед. времени (v$sysstat(commit_cummulative) + v$sysstat(rollback_cummulative)) -- объем redo log за этот же период v$sysstat( redo_size ) (это конечно не точно соответствует rollback но позволяет оценит средний размер транзакций, которые могут генерить RBS) -- далее планируются "ожидаемые по статистике" RBS а) размер каждого экстента RBS не менее чем = 2.5 * размер redo на среднюю транзакцию б) количество rbs * OPTIMAL количество экстентов ~ = среднему количеству коннектов + 25-50% -- далее планируется "Прикрытие Ж.." в случае неожиданно длинных транзакций которым назначается случайный rbs. как сие делается: -- rbs создается в два этапа (по storage parametres): 1 - create rolback segment ... ... storage ( initial /* 2.5 * redo_на_транзакцию */ next /* 2.5 * redo_на_транзакцию */ minextents /* кол_tras / кол_rbs */ optimal /* исходя из кол_tras / кол_rbs + 25%-50% */ 2. alter rolback segment ... изменяю next next /* 5-10 MB не менее */ Что этим достигается: -- при "средней" работе все коннекты обеспечены "своими RBS" и у нас нет "дорогих операций" по выделению / освобождению экстентов под rbs -- если уж нарвались на длинную транзакцию тут уж не жиру, отдавай память сразу и как можно больше. Она все равно потом сожмется до OPTIMAL c размером ~ соответствующим средней транзакции. Так что на курсах только мозги пудрили. Но это мое личное мнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2003, 08:00 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
Да совсем забыл. Через некоторое время снимается wait статистика по rbs. При этом отдельно по rbs и отдельно по заголовкам rbs. Исходя из данных этой статистики перераспределяется количество rbs и размер OPTIMAL для каждого из них с тем чтобы мимнимизировать конкуренцию за заголовки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2003, 08:06 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
На мой взгляд это не проблемы оракла, а проблеммы разработчиков, так как в данном примере обрабатывается не такое большое количество записей... а вообще на сколько пользователей расчитана база и каковы параметры сервера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2003, 08:09 |
|
||
|
про ролбаки
|
|||
|---|---|---|---|
|
#18+
Все, я закрываю тему...ибо ответ получен, всегда на этапе создания прикладной программы видны генераторы длинных транзакций, для них должен назначаться отдельный ролбак...приведен примерный расчет параметров ролбака... большое спасибо всем. to ShgGena Я не программист, я внедренец, мне строго настрого запрещено лазить в процедуры....А лазить приходится ...а расчет проведенный по твоему методу показал что у меня 5Меговые ролбаки оказываются загнуты незнамо куда, что уж говорить про 40Метровые. Персональное тебе спасибо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2003, 10:24 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1992128]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
89ms |
get tp. blocked users: |
2ms |
| others: | 189ms |
| total: | 385ms |

| 0 / 0 |
