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

FB2.5
есть скрипт обновления версии базы данных, запускается из delphi (firedac).
Хочется выполнять его в рамках одной транзакции дабы если что не так всё откатить назад.
В скрипте есть, к примеру добавление полей в таблицу, потом вставка записей в эту таблицу или создание хранимой процедуры использующих добавленное поле и выполнение этой хранимой процедуры итп
Есть ли возможность выполнить все эти действия в рамках одной транзакции, без промежуточных коммитов? Дабы при попытке внесения данных в таблицу с добавленным полем не вываливало исключение что такого поля нет итп Как добиться атомарности всего обновления?

Спасибо
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071318
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нельзя.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071325
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,

есть ли тогда другая возможность добиться атомарности обновления?
Есть же какои то механизм работы через Delta файл при резервном копировании.
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071326
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotunесть ли тогда другая возможность добиться атомарности обновления?

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

hlopotunесть ли тогда другая возможность добиться атомарности обновления?

Бэкап перед обновлением.

это по любому
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071334
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
19.05.2021 14:29, hlopotun пишет:
> есть ли тогда другая возможность добиться атомарности обновления?

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

Восстановление при неудаче. Вот тебе и атомарность.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071339
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
или, допустим, есть же тип транзакций который позволяет видеть изменения которые ещё не зафиксированы коммитом в других транзакциях. Если представить себе 2 таких транзакции. Одна делает изменение метаданных но не делает коммит, вторая позднее вносит данные в таблицу и в случае проблем обе делают роллбак в обратном порядке.
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071341
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
и в случае проблем
Хочешь проблем - занимайся ими сам, другим людям их нести не обязательно.
Разработчики говорят, и в документации (уверен ;) ) написано, что после любого изменения методанных следует делать коммит, чтобы не иметь проблем.
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071343
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockРазработчики говорят, и в документации (уверен ;) ) написано, что после любого изменения
методанных следует делать коммит, чтобы не иметь проблем.

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

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

Оно так работало в изначальном дизайне Джима, но потом полезли глюки из-за которых всё и
запретили.

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

Архивы этого форума, firebird-support и firebird-devel рекомендую.

я подписан, но там чёрт ногу сломит. В кой хоть версии примерно такое было возможно? или всё дальше альфы не поднималось?
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071358
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я же сказал: в оригинальной архитектуре Джима. То есть Groton Database и Interbase до
тройки или четвёрки.

PS: Хотя нет, вру. Отбил видимость новосозданной таблицы в той же транзакции только Еманов где-то в районе Firebird 2. До этого в неё можно было добавлять записи, портя при этом базу.
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071361
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

интересно было бы если бы разработчики тут ещё что то сказали. В чём возникли когда то проблемы, есть ли такое в планах итп.
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071364
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Я же сказал: в оригинальной архитектуре Джима. То есть Groton Database и Interbase до
тройки или четвёрки.

PS: Хотя нет, вру. Отбил видимость новосозданной таблицы в той же транзакции только Еманов где-то в районе Firebird 2. До этого в неё можно было добавлять записи, портя при этом базу.

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

1. Избавиться от DFW.
2. Желательно избавиться от RDB$FORMAT.
3. Изменить способ нумерации таблиц.
4. Перенести работу с системными таблицами из системной транзакции в пользоательскую.
5. Что-то сделать с кэшем метаданных.
6. Обучить сборщик мусора удалять структуры из база при чистке системных таблиц.

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

ок, если обновление метаданных происходит в рамках системной транзакции то соотв. всь мой бред выше можно выкинуть.
По крайней мере смогу теперь обьяснить заинтересованным почему так сделать нельзя.

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

бесполезно.
ибо сказано в писании: "мы, в MSSQL, транзакции не используем!" ©
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071370
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
единственное по повору delta файла, когда работа ведётся через него, скорее всего обновление метаданных тоже невозможно? Что бы уж была полная картина.
Хотя конечно сомнительно что в delta файле хранятся и изменения в метаданных.
Интересно было бы почитать что то более подробное про механизм его работы.
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071376
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тут пишут про эволюцию nbackup
В частности:
ibphoenixDelta file contains:
– Changed database pages
– Mapping table between delta and database

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

изменения куда? при нбэкапе ЛЮБЫЕ изменения пишутся в дельту.
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #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
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071521
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun Например возможна ли ситуация при работе с дельтой когда что то может пойти не так как предполагается (с точки зрения обновления метаданных итп).
этот вопрос уже был задан. Метаданные - это почти такие же таблицы, как и обычные таблицы, разве что со специфической информацией. Запись который в БД требуется по всякому - например, один оператор рассовывается по разным таблицам (rdb$relations, rdb$fields, rdb$relation_fields, ....), другой оператор - выполняется по коммиту (alter index...), третий - еще как-то иначе.
При этом, никакой связи у метаданных с нбэкапом нет. Запись идет либо в дельту, либо в базу. И поэтому, перефразируя вопрос - "если нбэкапа нет, и при работе с БАЗОЙ что-то произошло, и т.д.".
Исходя из такой конструкции я бы как раз обновления метаданных только с дельтой и рекомендовал :-)

А с точки зрения повреждений - да, всякое бывает. Мы даже FirstAid научили дельты сливать с базой, если что. :-)
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071536
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvp.s. я так понимаю, это надо у Самофатова спрашивать, зачем понадобились sql-команды.

Чтобы обойтись без утилиты, например:
Код: sql
1.
2.
3.
alter database begin backup;
shell copy database.fdb backup.file;
alter database end backup;


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

Спасибо

На копию базы накатываете изменения.
Работа клиентов продолжается с основной базой.
Потом подключаете копию к системе репликации, изменения данных из основной базы переносятся в копию. Клиенты при следующих коннектах подключаются к копии, далее копия становится основной базой.

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

Спасибо

На копию базы накатываете изменения.
Работа клиентов продолжается с основной базой.
Потом подключаете копию к системе репликации, изменения данных из основной базы переносятся в копию. Клиенты при следующих коннектах подключаются к копии, далее копия становится основной базой.

Изменения должны быть совместимы с системой репликации, конечно.


проблема в том что клиенты очень разношерстные. Есть большие конторы а есть совсем маленькие шарашкины конторы. Если для больших заморачиваться с репликачией может и имеет смысл то с маленькими это только лишний гемморой и траты. Тут порой даже проблема тупо в дисковом пространстве встаёт, у клиента не оказывается под рукой достаточно дискового пространства что бы сделать резервную копию в процессе обновления и потом её использовать. Бызы порой здоровенные (даже у маленьких контор), тупо их копировать уже куча времени. Поэтому вариант с delta и муссируется. Мы не можем сказать клиенту "пока то и то не сделаешь обновление не получишь". Все они платят денюжку и конечная цель что бы и дальше её исправно и вовремя платили. Клиентов конечно предупреждают если видят проблемы но конечный выбор остаётся за клиентом. К тому же маленькие конторы не всегда могут позволить себе многочассовую поддержку при обновлении, дорогое железо и своих спецов. Поэтому приходится выкручиваться как можем. Пока получается.
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071922
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv
Шавлюк Евгений,

если задача именно в том чтобы тырить дельту, то шатдаун не обязателен :-)

другими словами останавливать FB необязательно? достаточно запустить nbackup -F .... при работаюшем FB не запуская gfix для shutdown и он отпустит deltа файл и переключится в режим normal?
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40071977
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

с репликацией в hqbird и FB4 это не получится. Потому что копия реплики - ридонли. А если ее перевести в RW, она уже перестанет быть копией.
Тут же как было бы прикольно - с рабочей базы сделал реплику, на реплику накатил изменения, и потом пульнул "изменения" с реплики на копию. Но нет, не выйдет, это должна быть мастер-мастер репликация.
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40072105
Sergey A. Volkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv
p.s. я так понимаю, это надо у Самофатова спрашивать, зачем понадобились sql-команды.

Для копирования БД с windows сервера без доступа к терминалу.
Алгоритм
В sql блокируем БД "alter database begin backup;"
Копируем файл с сетевого диска windows сервера
В sql разблокируем БД "alter database end backup;"
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40072405
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
    #40072430
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийвосхитительно!

Ораклоиды с прошлого века жрут и не морщатся.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
59 сообщений из 59, показаны все 3 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Изменить метаданные, структуру таблицы и добавить в неё данные в одной транзакции
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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