powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
25 сообщений из 59, страница 2 из 3
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071384
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv
hlopotun,

изменения куда? при нбэкапе ЛЮБЫЕ изменения пишутся в дельту.

т.е. если перед обновлением выдать команду
ALTER DATABASE BEGIN BACKUP
после чего всё начинает писаться в дельту
далее сделать обновление и если всё удачно выполнить
ALTER DATABASE END BACKUP
а если нет то что?
как отказаться от слияния с delta?
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071388
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,

вырубить фб, удалить дельту, разблокировать БД.
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071389
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
19.05.2021 16:07, kdv пишет:
> вырубить фб, удалить дельту, разблокировать БД.

операторы будут очень благодарны за "актуальность" данных.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071396
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 нулевого размера (пустую)?
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071398
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тогда получаем:
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 файл без изменений и его подсовывать
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071400
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тут правда встаёт вопрос годится ли эта дельта для всех случаев позднее или нет.
Можно конечно сначала делать дельту пустую, потом вырубать сервер её откладывать в сторону потом опять пускать сервер, сливать с ней, опять переводить в backup режим, делать обновление и если надо опять выключать но подсовывать первую delta в которой нет изменений. Шас попробую
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071405
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
такой трюк помогает с базой соединиться
но при попытке выдать команду:
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
проходит без проблем
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071410
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
означало ли это сообщение что можно теперь эту (первую, без изменений) дельту просто выкинут и работать дальше? Почему тогда в последствии при подсовывании последней delta (с изменениями) команда ALTER DATABASE END BACKUP прошла нормально?
если выдать команду ALTER DATABASE END BACKUP когда база не находится в Backup режиме сообщение получаем точно такое же.
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071411
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotunполучается надо слепить delta файл без изменений

Получается надо почитать документацию по nbackup. И после этого немного подумать мозгом на
тему "чем твои телодвижения отличаются от "сделать бэкап перед операцией, восстановить его
при неудаче"".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071418
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

hlopotunполучается надо слепить delta файл без изменений

Получается надо почитать документацию по nbackup. И после этого немного подумать мозгом на
тему "чем твои телодвижения отличаются от "сделать бэкап перед операцией, восстановить его
при неудаче"".

это понятно, просто хотелось разобраться в принципе возможно такое или нет используя delta файл.
Сейчас попробовал все варианты, получается пока не подсунешь правильную (последнюю) delta ничего не получается. Где то в системных таблицах сохраняется или ID этой delta или что то подобное. Можно конечно копать в сторону подмены этого ID в системных таблицах, не факт правда что это получится и туда есть доступ.
По идее тут должно помочь решение когда delta утеряна, испорчена итп.
Есть такое?
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071422
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без вышеперечисленных двух пунктов - ничего не поможет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071445
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 (не всегда потерянные данные так важны).
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071447
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,

Пункт №6 без предварительного копирования БД бесполезен

И кроме всего отсутствует шатдаун
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071448
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotunБыло бы интересно узнать что конкретно делает nbackup с ключём -F

Только не говори, что в документации к nbackup это не написано...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071450
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шавлюк Евгений
hlopotun,

Пункт №6 без предварительного копирования БД бесполезен

И кроме всего отсутствует шатдаун


согласен, конечно сначала всех отсоединить, но это как бы понятно думаю было.
Кстати эксперементировал с FB 3
надо будет ещё с 2.5 проверить.
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071456
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,

зачем после рестарта фб с удаленной дельтой давать end backup?
nbakup -f.
Это же как копия нбэкапа нулевого уровня, она точно так же идет без end backup.

p.s. как нагородют непойми чего, и начнуть на немецком...
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071458
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,

https://www.ibase.ru/files/firebird/nbackup_ru.pdf
тут оно про все версии где существует нбэкап.
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071459
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк Евгений,

если задача именно в том чтобы тырить дельту, то шатдаун не обязателен :-)
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071461
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 работает на файловом уровне а не через сервер.
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071464
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv
hlopotun,

зачем после рестарта фб с удаленной дельтой давать end backup?
nbakup -f.
Это же как копия нбэкапа нулевого уровня, она точно так же идет без end backup.

p.s. как нагородют непойми чего, и начнуть на немецком...


я же писал вверху что если просто удалить delta то потом с базой нельзя соединиться, и ошибку привёл. А чтобы выполнить ... end backup надо по меньшей мере сначала соединиться с базой. Для этого перевести её в normal режим. Или я что то недопонимаю? ALTER DATABASE END BACKUP снаружи ведь выполнить нельзя, даже параметра "файл базы данных" нет.
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071466
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotunИли я что то недопонимаю?

Да. Совершенно всё, начиная с основ функционирования nbackup. Документацию надо было
целиком читать, а не пару абзацев.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071467
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

согласен, читаю сейчас.

Поправка - запускать FB перед запуском nbackup -F ненужно, он работает с файлом базы напрямую.
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071478
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прочитал, кстати, спасибо kdv за перевод.

Информации по изменению флага средствами FB так и не нашел. То что nbackup правит его на
файловом уровне, без участия FB ведь не значит что сам FB не может менять его тоже. Поэтому этот вопрос пока остаётся открытым.
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071487
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Небольшое дополнение ко всей этой истории.
Дело в то что размер базы данных бывает очень большим, у некоторых клиентов исчисляется терабайтами. Люди которым приходится делать обновление у клиентов вынуждены работать по ночам и выходным (дабы не останавливать фирмы на время обновления). Резервная копия (инкрементная) к моменту начала обновления всегда уже существует, но что бы её накатить нужны часы, иногда ночи недостаточно. Поэтому давно витала идея как то эту проблему обойти. Если работать через дельту то откат можно произвести в течении минут, при этом на крайний случай конечно иметь резервную копию. Со спеца снимается временное давление и он сможет спокойно решить проблему и накатить обновление снова. Более того успеть обслужить нескольких клиентов.
Поэтому спасибо всем за советы и за критику. Хотелось бы ещё услышать аргументы против такого решения, где это может споткнуться. Например возможна ли ситуация при работе с дельтой когда что то может пойти не так как предполагается (с точки зрения обновления метаданных итп). То что нормальная резервная копия есть это как бы подразумевается.

Спасибо
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071520
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotunALTER DATABASE END BACKUP снаружи ведь выполнить нельзя
а я вот считаю дичью выполнение sql-ых команд для нбэкапа. И их вообще всего две. А сколько еще кроме этого может сам нбэкап?
Я понимаю, что тут идет привязка к обновлению именно из приложения, когда isql не очень уместен, потому что не может делать ничего по условиям (как надо обновлятору). Ну так и обновлятор-приложение тоже можно запускать из скрипта.

p.s. я так понимаю, это надо у Самофатова спрашивать, зачем понадобились sql-команды.
...
Рейтинг: 0 / 0
25 сообщений из 59, страница 2 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]