Начало » Использование СУБД » Firebird, HQbird, InterBase » Миграция с FB2.0.7 на FB2.5.9 (c UNICODE_FSS на UTF-8)
Миграция с FB2.0.7 на FB2.5.9 [сообщение #1833] |
Wed, 15 March 2023 12:34 |
SergDev
Сообщений: 4 Зарегистрирован: March 2023
|
Junior Member |
|
|
Приветствую, нужно перенести рабочую базу, которая работает под Firebird 2.0.7 на Firebird 2.5.9
предистория: база кочует со времён InterBase 6, потихоньку дорабатывалось приложение, которое его юзает, посетпенно повашали версию Firebird, отсановились на 2.0.6. Потом перешли и на 2.0.7. База обновлялась через BACKUP на одной версии и RESTORE под другой. Всё было нормально.
Есть потребность перейти на 2.5.9 (для начала) может потом будем двигаться на 3.0
Исходная база юзает UNICODE_FSS, Dialect 3, Page size 4096
BACKUP/RESTORE делались на бесплатной для Win1251 версии IBExpert c указанием fbclient.dll от нужной версии 2.5.9, сам сервер запущен командой fbserver.exe -a
восcтанавливается часть DOMAIN, затем ошибка
Цитата:IBE: Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
Invalid metadata detected. Use -FIX_FSS_METADATA option.
Malformed string.
Exiting before completion due to errors.
------------------------------------------------------------ -------------------------------------------------------
SQLCODE: -901
SQLSTATE: 22000
GDSCODE: 336331093
даже если ставим галочки на обоих Fix malformed UNICODE_FSS data/metdata using charset UTF8 результат тот же
из моих 57 Domains восстанавливается 43
также пробовал утилитой от системы Гедымин https://gsbelarus.com/gs/fdbconvert/fdbconvert_eng.html
результат интересный
проверка базы данных на повреждения
проверка NOT NULL полей на NULL значения
обнаружены NULL значения в NOT NULL полях
Dynamic SQL Error
SQL error code = -204
Table unknown
COMMODITY
At line 1, column 25
процесс конвертации прерван
информация о наличии NULL там где их не должно быть расстроила, проверил как визуально (ха-ха) так и запросами вида
select * from TABLE_NAME
where (FIELD_1 IS NULL)
or (FIELD_2 IS NULL)
or (FIELD_3 IS NULL)
смущает название таблицы не в варианте Dialect 3 (у нас она "Commodity")
возможно уже описывался процесс миграции с UNICODE_FSS на UTF8 окромя data pump, прошу поделится или ссылками на другие ресурсы или здесь.
это http://www.ibase.ru/metadata_charset/ я читал, но не понял.
папки есть и в 2.1.7, на который мы тоже думали перейти между переходом на 2.5.9
можно разжевать ещё раз
заранее благодарю
[Обновления: Wed, 15 March 2023 12:48] Известить модератора
|
|
|
|
|
|
|
|
|
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1868 является ответом на сообщение #1865] |
Mon, 20 March 2023 09:29 |
SergDev
Сообщений: 4 Зарегистрирован: March 2023
|
Junior Member |
|
|
спасибо, но в первом посте писал, что я читал, но не понял как это делать. В статье написано
Цитата:Чтобы проделать эту операцию, база данных должна быть в формате ODS11.1 (backup, и затем restore в FB 2.1). Перед этим сделайте копию базы данных.
теряюсь, как сделать restore в 2.1 из backup 2.0, чтобы потом ремонтировать, если как раз restore и не делается из-за UNICODE_FSS
Создайте процедуры перекодировки метаданных в базе данных
---------------------------------------
- 1. isql database.fdb
- 2. SQL> input 'misc/upgrade/metadata/metadata_charset_create.sql';
выше дали совет начать с новой базы, чем и занимаемся.
[Обновления: Mon, 20 March 2023 09:32] Известить модератора
|
|
|
|
|
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1890 является ответом на сообщение #1889] |
Wed, 22 March 2023 17:34 |
Сообщений: 198 Зарегистрирован: September 2022
|
Senior Member |
|
|
Я у себя сперва в рамках очередного планового апдейта структуры добился совместимости метаданных. А потом, при очередном релизе, клиентское приложение потребовало FB версии 3.0. При попытке использования базы со старой ODS, предлагается выполнить конвертацию с помощью прилагаемой утилиты. Эта утилита, при необходимости, доводит метаданные до "совместимой" версии, затем выполняет b/r, используя поочередно embedded fb старой и новых версий. Такая заморочная "автоматизация" понадобилась из-за того, что клиентов очень уж много, и они могут вытащить совсем древние бэкапы или ещё что похуже, разбираться с каждым - не...
|
|
|
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1891 является ответом на сообщение #1890] |
Wed, 22 March 2023 17:48 |
Сообщений: 198 Зарегистрирован: September 2022
|
Senior Member |
|
|
...продолжаем использовать старую Fib+, там, если при коннекте не указать явно tcp v4, заметная задержка при коннекте, т.к. сперва коннектится по tcp v6, и лишь после облома - v4. Искуственный интеллект fib+ сам не понимает/не умеет ни выбрать версию протокола, ни попытаться пробовать коннектиться одновременно по двум... ну, слава богу, строку коннекта можно задать руками, в обход ИИ.
А коннект к сервисам с помощью Fib+ с указанием версии протокола без правки исходников вообще больше невозможен.
Может, кто-то что-то на git уже сделал, да я остерегаюсь той помойки. Как-то решил обновить версию Fib+, установил то, что на git - столько глюков во время выполнения вылезло, я быстро откатил всё взад. Оно и понятно: никто проект не ведёт...
|
|
|
|
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1893 является ответом на сообщение #1892] |
Thu, 23 March 2023 13:26 |
Сообщений: 198 Зарегистрирован: September 2022
|
Senior Member |
|
|
>фигню пишешь>
Расскажи, пожалуйста, как ты для любого из наследников класса TpFIBCustomService (я там и про компоненты-"сервисы" писал, если ты не заметил) задашь "строку коннекта с префиксом" inet4, и, например, сервер "ape", порт "3100". А потом посмотри реализацию метода TpFIBCustomService.Attach.
case FProtocol of
TCP: ConnectString := FServerName + ':service_mgr'; {do not localize}
SPX: ConnectString := FServerName + '@service_mgr'; {do not localize}
NamedPipe: ConnectString := '\\' + FServerName + '\service_mgr';
{do not localize}
Local: ConnectString := 'service_mgr'; {do not localize}
end;
- наблюдаем г-но мамонта.
Нужно править код.
>Ибо Fib+ вообще о них ничего не знает, он тупо передаёт строку коннекта в fbclient.>
Я что-то иное написал? Компонент TpFIBDataBase при коннекте совершает кучу странных и "дорогих" действий, но почему-то, имея информацию, что потребуется разрешение символического имени, не пытается это сделать самостоятельно и определить, какой из списка протоколов будет доступен (например, тупо выполнив попытку коннекта в параллельных нитях), либо позволив сие явно задать программисту. Это очевидно, полезно и просто реализуемо- передавать в клиентскую dll уже цифровое значение ip адреса. Ладно, пусть не автоматически, пусть при наличии установленной "галки" в свойствах компонента "использовать семейство адресов AF_INET".
...
Тут претензий ни к кому быть не может, конечно: развитие Fib+ в отсутствии владельца остановилось. Каждый потихоньку правит те места, которые важны именно для него.
[Обновления: Thu, 23 March 2023 13:31] Известить модератора
|
|
|
|
|
|
|
|
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1904 является ответом на сообщение #1898] |
Mon, 27 March 2023 10:45 |
sim_84
Сообщений: 332 Зарегистрирован: June 2022
|
Senior Member |
|
|
МорскойДесант,
"Compatibility mode" влияет только на новые типы данных int128, time[stamp] with timezone и decfloat(16 | 34).
Лично мне они пока не нужны. Кроме того, типы int128 и decfloat фактически некуда мапить в delphi (два варианта строка и fmtbcd). При желании можно сделать.
Зато остальные возможности: тайм-ауты, batch API, репликация вполне себе доступны. Это не говоря о расширениях SQL.
Естественно для поддержки тайм-аутов и batch API надо компоненты подкручивать. И кстати, если у вас есть частый импорт большого количества данных, то Batch API очень даже поможет.
МП,
Цитата:4-ку ставим по филиалам с прицелом на репликацию.
В 4-ке нет встроенного мультимастера.
В теории, то оно конечно может работать при разведении ПК, но на практике будут проблемы из-за того, что применение логов в слейве пока рассчитано ровно на один источник.
|
|
|
|
|
|
Переход к форуму:
Текущее время: Wed Dec 18 07:32:41 GMT+3 2024
Общее время, затраченное на создание страницы: 0.01144 секунд
|