|
|
|
Высокая генерация 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 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39274326&tid=1887847]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
180ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 468ms |

| 0 / 0 |
