|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Всем доброго дня, FB2.5 есть скрипт обновления версии базы данных, запускается из delphi (firedac). Хочется выполнять его в рамках одной транзакции дабы если что не так всё откатить назад. В скрипте есть, к примеру добавление полей в таблицу, потом вставка записей в эту таблицу или создание хранимой процедуры использующих добавленное поле и выполнение этой хранимой процедуры итп Есть ли возможность выполнить все эти действия в рамках одной транзакции, без промежуточных коммитов? Дабы при попытке внесения данных в таблицу с добавленным полем не вываливало исключение что такого поля нет итп Как добиться атомарности всего обновления? Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 14:15 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
нельзя. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 14:18 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Мимопроходящий, есть ли тогда другая возможность добиться атомарности обновления? Есть же какои то механизм работы через Delta файл при резервном копировании. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 14:22 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
hlopotunесть ли тогда другая возможность добиться атомарности обновления? Бэкап перед обновлением. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 14:26 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
скажем искуственно инициировать работу через delta файл а потом в случае успеха слить его с базой или отбросить. Или при работе через delta файл операции с метаданными запрещены? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 14:28 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov hlopotunесть ли тогда другая возможность добиться атомарности обновления? Бэкап перед обновлением. это по любому ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 14:29 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
19.05.2021 14:29, hlopotun пишет: > есть ли тогда другая возможность добиться атомарности обновления? 1. шатдаун 2. бекап 3. накат скрипта 4. перевод в онлайн. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 14:31 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
hlopotunэто по любому Восстановление при неудаче. Вот тебе и атомарность. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 14:31 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
или, допустим, есть же тип транзакций который позволяет видеть изменения которые ещё не зафиксированы коммитом в других транзакциях. Если представить себе 2 таких транзакции. Одна делает изменение метаданных но не делает коммит, вторая позднее вносит данные в таблицу и в случае проблем обе делают роллбак в обратном порядке. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 14:35 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
hlopotun и в случае проблем Разработчики говорят, и в документации (уверен ;) ) написано, что после любого изменения методанных следует делать коммит, чтобы не иметь проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 14:38 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
YuRockРазработчики говорят, и в документации (уверен ;) ) написано, что после любого изменения методанных следует делать коммит, чтобы не иметь проблем. Точнее не после любого, а после того, которое выполняется только во время коммита. Создание и изменение таблицы как раз попадает в эту категорию. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 14:41 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, жалко, было бы удобно :/ ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 14:43 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Оно так работало в изначальном дизайне Джима, но потом полезли глюки из-за которых всё и запретили. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 14:45 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Оно так работало в изначальном дизайне Джима, но потом полезли глюки из-за которых всё и запретили. интересно было бы почитать что то об этом ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 14:46 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Архивы этого форума, firebird-support и firebird-devel рекомендую. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 14:49 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Архивы этого форума, firebird-support и firebird-devel рекомендую. я подписан, но там чёрт ногу сломит. В кой хоть версии примерно такое было возможно? или всё дальше альфы не поднималось? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 14:52 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Я же сказал: в оригинальной архитектуре Джима. То есть Groton Database и Interbase до тройки или четвёрки. PS: Хотя нет, вру. Отбил видимость новосозданной таблицы в той же транзакции только Еманов где-то в районе Firebird 2. До этого в неё можно было добавлять записи, портя при этом базу. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 14:54 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, интересно было бы если бы разработчики тут ещё что то сказали. В чём возникли когда то проблемы, есть ли такое в планах итп. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 14:57 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Я же сказал: в оригинальной архитектуре Джима. То есть Groton Database и Interbase до тройки или четвёрки. PS: Хотя нет, вру. Отбил видимость новосозданной таблицы в той же транзакции только Еманов где-то в районе Firebird 2. До этого в неё можно было добавлять записи, портя при этом базу. т.е. только с порчей базы, по нормальному и не работало ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 15:00 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Чтобы это более-менее работало надо: 1. Избавиться от DFW. 2. Желательно избавиться от RDB$FORMAT. 3. Изменить способ нумерации таблиц. 4. Перенести работу с системными таблицами из системной транзакции в пользоательскую. 5. Что-то сделать с кэшем метаданных. 6. Обучить сборщик мусора удалять структуры из база при чистке системных таблиц. Это только то, что мне вспоминается сходу и кто знает какие ещё глюки после этого полезут. Поэтому в планах ничего похожего ни у кого нет. Кроме разве что второго пункта для пятёрки. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 15:04 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, ок, если обновление метаданных происходит в рамках системной транзакции то соотв. всь мой бред выше можно выкинуть. По крайней мере смогу теперь обьяснить заинтересованным почему так сделать нельзя. Спасибо за информацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 15:12 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
19.05.2021 15:12, hlopotun пишет: > По крайней мере смогу теперь обьяснить заинтересованным почему так сделать нельзя. бесполезно. ибо сказано в писании: "мы, в MSSQL, транзакции не используем!" © Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 15:15 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
единственное по повору delta файла, когда работа ведётся через него, скорее всего обновление метаданных тоже невозможно? Что бы уж была полная картина. Хотя конечно сомнительно что в delta файле хранятся и изменения в метаданных. Интересно было бы почитать что то более подробное про механизм его работы. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 15:16 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
тут пишут про эволюцию nbackup В частности: ibphoenixDelta file contains: – Changed database pages – Mapping table between delta and database означает ли это что всётаки можно вносить изменения. Надо попробовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 15:33 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
hlopotun, изменения куда? при нбэкапе ЛЮБЫЕ изменения пишутся в дельту. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 15:51 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
kdv hlopotun, изменения куда? при нбэкапе ЛЮБЫЕ изменения пишутся в дельту. т.е. если перед обновлением выдать команду ALTER DATABASE BEGIN BACKUP после чего всё начинает писаться в дельту далее сделать обновление и если всё удачно выполнить ALTER DATABASE END BACKUP а если нет то что? как отказаться от слияния с delta? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 15:57 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
hlopotun, вырубить фб, удалить дельту, разблокировать БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 16:07 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
19.05.2021 16:07, kdv пишет: > вырубить фб, удалить дельту, разблокировать БД. операторы будут очень благодарны за "актуальность" данных. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 16:13 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
kdv, если так делать то как потом разблокировать? например сделал ALTER DATABASE BEGIN BACKUP сделал изменения в данных вырубил firebird убрал в сторону delta файл теперь при попытке соединиться вываливает iSQLStatement failed, SQLSTATE = 08001 I/O error during "CreateFile (open)" operation for file "D:\MIKSRC\DB\APTM.FDB.delta" -Error while trying to open file -Das System kann die angegebene Datei nicht finden. попробовать подсунуть delta нулевого размера (пустую)? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 16:24 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
тогда получаем: iSQLStatement failed, SQLSTATE = 08001 I/O error during "ReadFile" operation for file "D:\MIKSRC\DB\APTM.FDB.delta" -Error while trying to read from file -Ende der Datei (EOF) erreicht. -internal Firebird consistency check (Can't actualize alloc table) получается надо слепить delta файл без изменений и его подсовывать ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 16:26 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
тут правда встаёт вопрос годится ли эта дельта для всех случаев позднее или нет. Можно конечно сначала делать дельту пустую, потом вырубать сервер её откладывать в сторону потом опять пускать сервер, сливать с ней, опять переводить в backup режим, делать обновление и если надо опять выключать но подсовывать первую delta в которой нет изменений. Шас попробую ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 16:32 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
такой трюк помогает с базой соединиться но при попытке выдать команду: ALTER DATABASE END BACKUP получаем: This operation is not defined for system tables. unsuccessful metadata update. ALTER DATABASE failed. Database is not in the physical backup mode. ------------------------------------------------ SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 Останавливаем FB опять, подсовываем обратно вторую дельту (с изменениами) и ALTER DATABASE END BACKUP проходит без проблем ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 16:44 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
означало ли это сообщение что можно теперь эту (первую, без изменений) дельту просто выкинут и работать дальше? Почему тогда в последствии при подсовывании последней delta (с изменениями) команда ALTER DATABASE END BACKUP прошла нормально? если выдать команду ALTER DATABASE END BACKUP когда база не находится в Backup режиме сообщение получаем точно такое же. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 16:51 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
hlopotunполучается надо слепить delta файл без изменений Получается надо почитать документацию по nbackup. И после этого немного подумать мозгом на тему "чем твои телодвижения отличаются от "сделать бэкап перед операцией, восстановить его при неудаче"". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 16:54 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov hlopotunполучается надо слепить delta файл без изменений Получается надо почитать документацию по nbackup. И после этого немного подумать мозгом на тему "чем твои телодвижения отличаются от "сделать бэкап перед операцией, восстановить его при неудаче"". это понятно, просто хотелось разобраться в принципе возможно такое или нет используя delta файл. Сейчас попробовал все варианты, получается пока не подсунешь правильную (последнюю) delta ничего не получается. Где то в системных таблицах сохраняется или ID этой delta или что то подобное. Можно конечно копать в сторону подмены этого ID в системных таблицах, не факт правда что это получится и туда есть доступ. По идее тут должно помочь решение когда delta утеряна, испорчена итп. Есть такое? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 17:05 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Без вышеперечисленных двух пунктов - ничего не поможет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 17:10 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Без вышеперечисленных двух пунктов - ничего не поможет. короче можно так: 1. Переводим базу в режим резервного копирования (все изменения идут в delta файл) командой ALTER DATABASE BEGIN BACKUP 2. Делаем обновление итп всё что нужно 3. Если всё хорошо выходим из режима резервного копирования и сливаем дельту с базой командой ALTER DATABASE END BACKUP 4. Если по каким либо причинам надо откатить изменения 5. Останавливаем FB 6. Переносим delta файл в безопасное место (на всякий случай) 7. Запускаем FB 7. Запускаем nbackup.exe -F <база данных> это удалит ссылку на дельту в базе и разблокирует её. Далее всё в обычном режиме, сейчас проверил, работает как задумано. Побочных эффектов не замечено. Было бы интересно узнать что конкретно делает nbackup с ключём -F и можно ли это сделать без nbackup напрямую запросами в FB. п.с. конечно, правильно всё делать через резервную копию, никто не спорит. Но такое решение тоже работает. Опять же если у когото тупо убита delta это поможет вернуть базу в работу, хоть и с потерей данных из delta (не всегда потерянные данные так важны). ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 18:19 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
hlopotun, Пункт №6 без предварительного копирования БД бесполезен И кроме всего отсутствует шатдаун ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 18:27 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
hlopotunБыло бы интересно узнать что конкретно делает nbackup с ключём -F Только не говори, что в документации к nbackup это не написано... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 18:30 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Шавлюк Евгений hlopotun, Пункт №6 без предварительного копирования БД бесполезен И кроме всего отсутствует шатдаун согласен, конечно сначала всех отсоединить, но это как бы понятно думаю было. Кстати эксперементировал с FB 3 надо будет ещё с 2.5 проверить. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 18:32 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
hlopotun, зачем после рестарта фб с удаленной дельтой давать end backup? nbakup -f. Это же как копия нбэкапа нулевого уровня, она точно так же идет без end backup. p.s. как нагородют непойми чего, и начнуть на немецком... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 18:42 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
hlopotun, https://www.ibase.ru/files/firebird/nbackup_ru.pdf тут оно про все версии где существует нбэкап. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 18:45 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Шавлюк Евгений, если задача именно в том чтобы тырить дельту, то шатдаун не обязателен :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 18:46 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov hlopotunБыло бы интересно узнать что конкретно делает nbackup с ключём -F Только не говори, что в документации к nbackup это не написано... да, есть, но как менять эти флаги запросами непонятно. В доке по FB они даже не упоминаются (по крайней мере я пока не нашел): nbackupWithin the file, the state flag is changed from locked (nbak_state_stalled) to normal (nbak_state_normal); опять же nbackup -F работает на файловом уровне а не через сервер. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 18:53 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
kdv hlopotun, зачем после рестарта фб с удаленной дельтой давать end backup? nbakup -f. Это же как копия нбэкапа нулевого уровня, она точно так же идет без end backup. p.s. как нагородют непойми чего, и начнуть на немецком... я же писал вверху что если просто удалить delta то потом с базой нельзя соединиться, и ошибку привёл. А чтобы выполнить ... end backup надо по меньшей мере сначала соединиться с базой. Для этого перевести её в normal режим. Или я что то недопонимаю? ALTER DATABASE END BACKUP снаружи ведь выполнить нельзя, даже параметра "файл базы данных" нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 19:03 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
hlopotunИли я что то недопонимаю? Да. Совершенно всё, начиная с основ функционирования nbackup. Документацию надо было целиком читать, а не пару абзацев. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 19:07 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, согласен, читаю сейчас. Поправка - запускать FB перед запуском nbackup -F ненужно, он работает с файлом базы напрямую. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 19:10 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Прочитал, кстати, спасибо kdv за перевод. Информации по изменению флага средствами FB так и не нашел. То что nbackup правит его на файловом уровне, без участия FB ведь не значит что сам FB не может менять его тоже. Поэтому этот вопрос пока остаётся открытым. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 20:15 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
Небольшое дополнение ко всей этой истории. Дело в то что размер базы данных бывает очень большим, у некоторых клиентов исчисляется терабайтами. Люди которым приходится делать обновление у клиентов вынуждены работать по ночам и выходным (дабы не останавливать фирмы на время обновления). Резервная копия (инкрементная) к моменту начала обновления всегда уже существует, но что бы её накатить нужны часы, иногда ночи недостаточно. Поэтому давно витала идея как то эту проблему обойти. Если работать через дельту то откат можно произвести в течении минут, при этом на крайний случай конечно иметь резервную копию. Со спеца снимается временное давление и он сможет спокойно решить проблему и накатить обновление снова. Более того успеть обслужить нескольких клиентов. Поэтому спасибо всем за советы и за критику. Хотелось бы ещё услышать аргументы против такого решения, где это может споткнуться. Например возможна ли ситуация при работе с дельтой когда что то может пойти не так как предполагается (с точки зрения обновления метаданных итп). То что нормальная резервная копия есть это как бы подразумевается. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 21:15 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
hlopotunALTER DATABASE END BACKUP снаружи ведь выполнить нельзя а я вот считаю дичью выполнение sql-ых команд для нбэкапа. И их вообще всего две. А сколько еще кроме этого может сам нбэкап? Я понимаю, что тут идет привязка к обновлению именно из приложения, когда isql не очень уместен, потому что не может делать ничего по условиям (как надо обновлятору). Ну так и обновлятор-приложение тоже можно запускать из скрипта. p.s. я так понимаю, это надо у Самофатова спрашивать, зачем понадобились sql-команды. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 23:06 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
hlopotun Например возможна ли ситуация при работе с дельтой когда что то может пойти не так как предполагается (с точки зрения обновления метаданных итп). этот вопрос уже был задан. Метаданные - это почти такие же таблицы, как и обычные таблицы, разве что со специфической информацией. Запись который в БД требуется по всякому - например, один оператор рассовывается по разным таблицам (rdb$relations, rdb$fields, rdb$relation_fields, ....), другой оператор - выполняется по коммиту (alter index...), третий - еще как-то иначе. При этом, никакой связи у метаданных с нбэкапом нет. Запись идет либо в дельту, либо в базу. И поэтому, перефразируя вопрос - "если нбэкапа нет, и при работе с БАЗОЙ что-то произошло, и т.д.". Исходя из такой конструкции я бы как раз обновления метаданных только с дельтой и рекомендовал :-) А с точки зрения повреждений - да, всякое бывает. Мы даже FirstAid научили дельты сливать с базой, если что. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 23:12 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
kdvp.s. я так понимаю, это надо у Самофатова спрашивать, зачем понадобились sql-команды. Чтобы обойтись без утилиты, например: Код: sql 1. 2. 3.
Или "потому что так сделано в оракуле". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2021, 00:39 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
hlopotun Небольшое дополнение ко всей этой истории. Дело в то что размер базы данных бывает очень большим, у некоторых клиентов исчисляется терабайтами. Люди которым приходится делать обновление у клиентов вынуждены работать по ночам и выходным (дабы не останавливать фирмы на время обновления). Резервная копия (инкрементная) к моменту начала обновления всегда уже существует, но что бы её накатить нужны часы, иногда ночи недостаточно. Поэтому давно витала идея как то эту проблему обойти. Если работать через дельту то откат можно произвести в течении минут, при этом на крайний случай конечно иметь резервную копию. Со спеца снимается временное давление и он сможет спокойно решить проблему и накатить обновление снова. Более того успеть обслужить нескольких клиентов. Поэтому спасибо всем за советы и за критику. Хотелось бы ещё услышать аргументы против такого решения, где это может споткнуться. Например возможна ли ситуация при работе с дельтой когда что то может пойти не так как предполагается (с точки зрения обновления метаданных итп). То что нормальная резервная копия есть это как бы подразумевается. Спасибо На копию базы накатываете изменения. Работа клиентов продолжается с основной базой. Потом подключаете копию к системе репликации, изменения данных из основной базы переносятся в копию. Клиенты при следующих коннектах подключаются к копии, далее копия становится основной базой. Изменения должны быть совместимы с системой репликации, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2021, 12:08 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
ъъъъъ hlopotun Небольшое дополнение ко всей этой истории. Дело в то что размер базы данных бывает очень большим, у некоторых клиентов исчисляется терабайтами. Люди которым приходится делать обновление у клиентов вынуждены работать по ночам и выходным (дабы не останавливать фирмы на время обновления). Резервная копия (инкрементная) к моменту начала обновления всегда уже существует, но что бы её накатить нужны часы, иногда ночи недостаточно. Поэтому давно витала идея как то эту проблему обойти. Если работать через дельту то откат можно произвести в течении минут, при этом на крайний случай конечно иметь резервную копию. Со спеца снимается временное давление и он сможет спокойно решить проблему и накатить обновление снова. Более того успеть обслужить нескольких клиентов. Поэтому спасибо всем за советы и за критику. Хотелось бы ещё услышать аргументы против такого решения, где это может споткнуться. Например возможна ли ситуация при работе с дельтой когда что то может пойти не так как предполагается (с точки зрения обновления метаданных итп). То что нормальная резервная копия есть это как бы подразумевается. Спасибо На копию базы накатываете изменения. Работа клиентов продолжается с основной базой. Потом подключаете копию к системе репликации, изменения данных из основной базы переносятся в копию. Клиенты при следующих коннектах подключаются к копии, далее копия становится основной базой. Изменения должны быть совместимы с системой репликации, конечно. проблема в том что клиенты очень разношерстные. Есть большие конторы а есть совсем маленькие шарашкины конторы. Если для больших заморачиваться с репликачией может и имеет смысл то с маленькими это только лишний гемморой и траты. Тут порой даже проблема тупо в дисковом пространстве встаёт, у клиента не оказывается под рукой достаточно дискового пространства что бы сделать резервную копию в процессе обновления и потом её использовать. Бызы порой здоровенные (даже у маленьких контор), тупо их копировать уже куча времени. Поэтому вариант с delta и муссируется. Мы не можем сказать клиенту "пока то и то не сделаешь обновление не получишь". Все они платят денюжку и конечная цель что бы и дальше её исправно и вовремя платили. Клиентов конечно предупреждают если видят проблемы но конечный выбор остаётся за клиентом. К тому же маленькие конторы не всегда могут позволить себе многочассовую поддержку при обновлении, дорогое железо и своих спецов. Поэтому приходится выкручиваться как можем. Пока получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2021, 12:30 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
kdv Шавлюк Евгений, если задача именно в том чтобы тырить дельту, то шатдаун не обязателен :-) другими словами останавливать FB необязательно? достаточно запустить nbackup -F .... при работаюшем FB не запуская gfix для shutdown и он отпустит deltа файл и переключится в режим normal? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2021, 13:03 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
ъъъъъ, с репликацией в hqbird и FB4 это не получится. Потому что копия реплики - ридонли. А если ее перевести в RW, она уже перестанет быть копией. Тут же как было бы прикольно - с рабочей базы сделал реплику, на реплику накатил изменения, и потом пульнул "изменения" с реплики на копию. Но нет, не выйдет, это должна быть мастер-мастер репликация. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2021, 16:15 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
kdv p.s. я так понимаю, это надо у Самофатова спрашивать, зачем понадобились sql-команды. Для копирования БД с windows сервера без доступа к терминалу. Алгоритм В sql блокируем БД "alter database begin backup;" Копируем файл с сетевого диска windows сервера В sql разблокируем БД "alter database end backup;" ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2021, 23:54 |
|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#18+
21.05.2021 23:54, Sergey A. Volkov пишет: > В sql блокируем БД "alter database begin backup;" > Копируем файл с сетевого диска windows сервера > В sql разблокируем БД "alter database end backup;" ахуи восхитительно! (сарказм) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2021, 11:32 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1560030]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
140ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
others: | 245ms |
total: | 505ms |
0 / 0 |