|
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
|
|||
---|---|---|---|
#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 |
|
|
start [/forum/topic.php?fid=40&msg=40071448&tid=1560030]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 279ms |
0 / 0 |