|
|
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Есть задача от начинающего dba. Возможно, для кого-то тривиальная, но я пока смутно представляю, как её решить. Если вы поделитесь своими соображением, опытом, советом, буду очень благодарен. Вводная информация: Есть БД, в которой довольно большое количество DML операций, подавляющее количество это UPDATE, вот немного информации за последний час: Код: plsql 1. 2. 3. 4. Код: plsql 1. 2. 3. 4. Да, здесь hardparse, но это затраты на него пока не сильно волнуют. Как следствие - объём БД не растёт сильно, но генерируется довольно большое количество redo => arhcived log'ов. Задача: Организовать еженочный бекап. БД должна быть доступна 24/7. Теперь немного об ограничениях: В данный момент полный объём файловой системы для арклогов - приблизительно равен объёму сгенерированных арклогов за двое суток. Но скоро начнётся продакшн и увеличится поступление информации в 300 раз. Насколько понимаю, ни о каком хранении арклогов до точки краха БД не может быть речи, негде будет хранить арклоги. Отказаться от архайв режима не могу, не будет доступен горячий бекап. Посоветуйте: каким образом/чем можно организовать бекап, чтобы он был хотя бы для восстановления на момент бекапа при данных условиях? Пока вижу ситуацию так: В виду высокой генерации арклогов, думаю удалять их по шедулеру, скажем, каждые 20 минут. Потом, часов в 12, начинается горячее резервирование, возможно, при помощи RMAN. Сформированный бекапсет (контрольник, файлы данных и арклоги) буду хранить для восстановления. Остальные, вновь сформированные, арклоги будут продолжаться удаляться. Может быть есть смысл думать в другом направление, уменьшение генерации redo или что-нибудь ещё. Если вы поделитесь своим мнением ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 10:01:02 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
Грубо - 40000/3600=11 updates per sec для начала разобраться что апдейтится(сколько строк изменяется), может там запросы кривые и каждый раз апдейтят всю большую таблицу одним и тем же значением ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 10:13:39 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
landy, Масса апдейтов в таблицу W_WLD_MA Содержание одного из низ: UPDATE W_WLD_MA SET LAST_COMM_DATE = '15072016101427' WHERE MAIN_PROC_CD = '485' AND LR_GUBUN = '1' AND SUB_PROC_CD = '0' Т.е. обновляется дата состояния объекта. Объектов довольно много получается. +Небольшая поправка, я ошибся, выданная ранее информация была за пол часа: Грубо получается - 40000/1800=22 updates per sec ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 10:25:49 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
JaBong, Индексы избыточные есть ? И логтику переписывать если применимо(темп таблички). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 10:35:14 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
Не знаю скрытого смысла - но зачем обновлять 22 раза в секунду LAST_COMM_DATE (имхо вероятность смены условия за этот период мала, но опять же нужно знать специфику приложения) Я бы обратил внимание разработчиков на это - пусть подумают как правильнее сделать Ну либо пусть от своего бюджета отпилят на диски для хранения архивлогов ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 10:38:37 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
Вообще-то надо смотреть sum(executions) по всяким AWR-срезам А уж ни как количество различных курсоров ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 10:42:23 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
Кто мешает бэкапить только архивлоги хоть каждый час, полчаса и т.д.? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 12:44:01 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
landyНе знаю скрытого смысла - но зачем обновлять 22 раза в секунду LAST_COMM_DATE (имхо вероятность смены условия за этот период мала, но опять же нужно знать специфику приложения) Я бы обратил внимание разработчиков на это - пусть подумают как правильнее сделать Ну либо пусть от своего бюджета отпилят на диски для хранения архивлогов ))) Приходит сигнал от робота о смене состояния контроллера, измерений. В одном роботе таких котроллеров и измерителей очень много. Таких роботов очень много. Получается такой вот udpatовый шквал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 13:12:45 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, спасибо за замечание. Per sec Executes (SQL): 632.1 Из этого блока подойдёт инфа для корректного анализа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 13:18:23 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
Ты можешь делать консистентный экспорт и отказаться от ARCHIVELOG ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 13:18:29 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
KoTTTКто мешает бэкапить только архивлоги хоть каждый час, полчаса и т.д.? Не мешает никто, было бы куда бэкатить, здесь сталкиваемся с ограничениями в ресурсах :( нет места для такого объёма арклогов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 13:20:15 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, Да, это хороший вариант, спасибо, теперь нужно будет только позаботиться о достаточно большом UNDO. Правильно понимаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 13:21:51 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
JaBongВячеслав Любомудров, спасибо за замечание. Per sec Executes (SQL): 632.1Вообще-то я имел ввиду именно для тех курсоров, которые получились в твоем запросе JaBongИз этого блока подойдёт инфа для корректного анализа?Ну а почему бы и нет Например, 250к редо в секунду -- это примерно 900 мег в час (пусть гиг) Это, в общем-то, не очень много, но как ты собрался его увеличивать в 300 раз? 300 гигов в час -- это очень серьезный редо-поток. А если у тебя в основном UPDATE, то путей уменьшения redo практически нет Твое желание "хотя бы для восстановления на момент бекапа" (а если ты трешь логи, то другого и не получится) легко реализуется каким-нибудь параллельным консистентным expdp в NOARCHIVELOG Если БД гигов до 300 -- наверное, в часик-полтора уложится. Плюс ты можешь не бэкапить какие-нибудь промежуточные таблицы Хотя я всегда против обзывания экспорта бэкапом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 13:31:19 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, из-за смутного понимания и не определённых вариантов к действию, хочу сказать Вам большое спасибо за то, что рассеяли это непонимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 13:43:29 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
Непонимание у тебя в постановке: "БД должна быть доступна 24/7" и "восстановления на момент бекапа" -- как-то не сходится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 13:50:39 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
Ну я бы не апдейтил, а сделал таблицу еще одну с nologging и связал ее с первой по ID И просто делал insert /*+append*/ для условия по первой таблице Это бы уменьшило генерацию редо А для просмотра результатов запрос для этих двух таблиц или вьюшку Как то так - опять же это вопрос дизайна и разработчиков Они просто тупо не хотят думать имхо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 14:28:08 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
Кстати, если БД EE - можно посмотреть в эту сторону Включить block change tracking, сделать инкрементально обновляемую копию(обновлять раз в час или два) И хранить архивлоги только за последний час/два - удалять ненужные после обновления копии Как-то так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 14:39:27 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
Т е у вас будет копия БД которую вы сможете быстро поднять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 14:40:25 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровНепонимание у тебя в постановке: "БД должна быть доступна 24/7" и "восстановления на момент бекапа" -- как-то не сходится Насколько известно, более критично - наличие доступной БД, чем отсутствие в ней части данных за время с последнего бекапа до возобновления работы БД. Так и получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 15:56:36 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
landyКстати, если БД EE - можно посмотреть в эту сторону Включить block change tracking, сделать инкрементально обновляемую копию(обновлять раз в час или два) И хранить архивлоги только за последний час/два - удалять ненужные после обновления копии Как-то так О, вот это довольно хороший вариант. Спасибо, landy! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 15:58:43 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
JaBongболее критично - наличие доступной БД, чем отсутствие в ней части данных за время с последнего бекапа до возобновления работы БД. Так и получается. Имеется ввиду именно этот частный случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 15:59:58 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
JaBonglandyКстати, если БД EE - можно посмотреть в эту сторону Включить block change tracking, сделать инкрементально обновляемую копию(обновлять раз в час или два) И хранить архивлоги только за последний час/два - удалять ненужные после обновления копии Как-то так О, вот это довольно хороший вариант. Спасибо, landy!Это слишком навороченный стендбай (который можно сделать и не обязательно в EE) Вообще, с таким потоком данных работают по другому (ну нахрена тебе несколько раз в секунду обновлять какое-то поле одного датчика, тем более если не хранится история?). Сыпешь всю эту хрень непрерывным потоком в плоские файлы ОС, а потом раз в какой-то период (1-5-10 сек) обновляешь данные в оракл последними значениями для каждого датчика, полученными из этого плоского файла простыми утилитами (а в это время данные сыпятся в другой плоский файл) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2016, 16:10:34 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
Конечно можно и на SE, только грубо change tracking - индекс измененных блоков, а в SE будут сканироваться датафайлы на предмет измененных блоков. Все зависит от размера БД и как часто это можно будет делать. И да - это стендбай, который не нарушает лицензионность БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2016, 11:34:37 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
landyКонечно можно и на SE, только грубо change tracking - индекс измененных блоков, а в SE будут сканироваться датафайлы на предмет измененных блоков. Все зависит от размера БД и как часто это можно будет делать. И да - это стендбай, который не нарушает лицензионность БД BCT нет для SE: Oracle Database Editions feature/optionSE1SE/SE2EEBlock change tracking for fast incremental backupNNY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2016, 19:51:31 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
Так и написано - для ЕЕ change tracking Для SE - будет проверка всех датафайлов на предмет изменения страниц (и для ЕЕ если change tracking не включен) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2016, 20:39:53 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
А есть ли возможность создания StandBy? Возможно это решение будет выгодней чем бекап. Он обеспечит быстрое восстановление работоспособности без потери данных. Может помочь инкрементальный бекап если количество меняющихся блоков невелико. Но если поток изменений будет реально 300 гигов в час, считаю необходимо менять логику работы приложений с базой. Процесс записи буфера скорее всего не справится с таким потоком. У меня проблемы с этим начинались с примерно 100 гигов в час при параллелизации Redo в 2 места. После чего время ожидания коммитов начинало расти. При высокой частоте смены значений в таблице без наличия истории изменений они скорее всего не имеют ценности и возможно эти таблицы не требуется логировать, что снизит поток изменений в разы и уберет проблему на корню? А таблицам хватит резервирования раз в сутки при выполнении полного бекапа. Еще нужно больше данных: какой объем базы? сколько времени занимает бекап? какой объем под бекап? может есть возможность делать полный бекап каждые 2 часа ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 13:44:50 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
Taciturn12А есть ли возможность создания StandBy? Возможно это решение будет выгодней чем бекап. Он обеспечит быстрое восстановление работоспособности без потери данных. Может помочь инкрементальный бекап если количество меняющихся блоков невелико. Но если поток изменений будет реально 300 гигов в час, считаю необходимо менять логику работы приложений с базой. Процесс записи буфера скорее всего не справится с таким потоком. У меня проблемы с этим начинались с примерно 100 гигов в час при параллелизации Redo в 2 места. После чего время ожидания коммитов начинало расти. При высокой частоте смены значений в таблице без наличия истории изменений они скорее всего не имеют ценности и возможно эти таблицы не требуется логировать, что снизит поток изменений в разы и уберет проблему на корню? А таблицам хватит резервирования раз в сутки при выполнении полного бекапа. Еще нужно больше данных: какой объем базы? сколько времени занимает бекап? какой объем под бекап? может есть возможность делать полный бекап каждые 2 часа ). 1) Если EE и есть лицензии на CPU standby сервера - проблем нет Ставишь Код: plsql 1. 2) Если SE и есть лицензии на CPU standby сервера Лепишь самодельный велосипед, который проверяет что archivelog применился и удаляешь Удалять лучше через RMAN 3) Если лицензий нет, мутишь что-то вроде Дискового Oracle Fail Safe И пару redo log location на SAN, чтобы гарантированно иметь копии REDO Недорогой SAN - будет дешевле чем лицензии на Standby, вопрос в производительности... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2016, 16:30:55 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
Taciturn12Но если поток изменений будет реально 300 гигов в час, считаю необходимо менять логику работы приложений с базой. Процесс записи буфера скорее всего не справится с таким потоком. У меня проблемы с этим начинались с примерно 100 гигов в час при параллелизации Redo в 2 места. После чего время ожидания коммитов начинало расти. При высокой частоте смены значений в таблице без наличия истории изменений они скорее всего не имеют ценности и возможно эти таблицы не требуется логировать, что снизит поток изменений в разы и уберет проблему на корню? А таблицам хватит резервирования раз в сутки при выполнении полного бекапа. По идее, у БД должен быть стендбай. Если убрать логирование с таблиц, полученный горячий бекап будет консистентным? Да, согласен, при "заявленном" потоке redo нужно будет менять логику приклада. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 16:53:21 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
Vadim Lejnin1) Если EE и есть лицензии на CPU standby сервера - проблем нет Ставишь Код: plsql 1. 2) Если SE и есть лицензии на CPU standby сервера Лепишь самодельный велосипед, который проверяет что archivelog применился и удаляешь Удалять лучше через RMAN 3) Если лицензий нет, мутишь что-то вроде Дискового Oracle Fail Safe И пару redo log location на SAN, чтобы гарантированно иметь копии REDO Недорогой SAN - будет дешевле чем лицензии на Standby, вопрос в производительности... Это что за фишка, "ARCHIVELOG DELETION POLICY" доступен только ЕЕ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 16:54:56 |
|
||
|
Высокая генерация Redo, небольшой объём БД и бекап.
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. У Вас update - nologging не поможет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 17:33:24 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1887847]: |
0ms |
get settings: |
5ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 437ms |

| 0 / 0 |
