SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » Миграция с FB2.0.7 на FB2.5.9 (c UNICODE_FSS на UTF-8)
icon5.gif  Миграция с FB2.0.7 на FB2.5.9 [сообщение #1833] Wed, 15 March 2023 12:34 Переход к следующему сообщению
SergDev в настоящее время не в онлайне  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
результат интересный Shocked
проверка базы данных на повреждения
проверка 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/ я читал, но не понял.
папки
\misc\upgrade\metadata
есть и в 2.1.7, на который мы тоже думали перейти между переходом на 2.5.9

можно разжевать ещё раз

заранее благодарю

[Обновления: Wed, 15 March 2023 12:48]

Известить модератора

Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1834 является ответом на сообщение #1833] Wed, 15 March 2023 12:47 Переход к предыдущему сообщениюПереход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
По опьіту перехода с 2.5 на 3.0 разница только в типе полей count(*) int/bigint и еще по мелочевке.
Смьісла переходить с одной устаревшей версии на другую не много
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1835 является ответом на сообщение #1833] Wed, 15 March 2023 15:17 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 887
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
/index.php/fa/78/0/
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1839 является ответом на сообщение #1833] Wed, 15 March 2023 19:37 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 411
Зарегистрирован: August 2022
Senior Member
МП прав, твоя база крива, так что единственный доступный путь - создать совершенно новую из образцово-показательного скрипта и перелить данные, правя ошибки в процессе.
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1843 является ответом на сообщение #1839] Thu, 16 March 2023 12:48 Переход к предыдущему сообщениюПереход к следующему сообщению
SergDev в настоящее время не в онлайне  SergDev
Сообщений: 4
Зарегистрирован: March 2023
Junior Member
Спасибо, принято
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1865 является ответом на сообщение #1843] Sun, 19 March 2023 19:30 Переход к предыдущему сообщениюПереход к следующему сообщению
kdv в настоящее время не в онлайне  kdv
Сообщений: 98
Зарегистрирован: June 2022
Member
в дистрах 2.1 и проч был скрипт, который правил метаданные. Я еще тогда всякие faq на эту тему переводил.
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1866 является ответом на сообщение #1865] Sun, 19 March 2023 21:56 Переход к предыдущему сообщениюПереход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
kdv писал(а) Sun, 19 March 2023 18:30
в дистрах 2.1 и проч был скрипт, который правил метаданные. Я еще тогда всякие faq на эту тему переводил.
http://www.ibase.ru/metadata_charset/
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1868 является ответом на сообщение #1865] Mon, 20 March 2023 09:29 Переход к предыдущему сообщениюПереход к следующему сообщению
SergDev в настоящее время не в онлайне  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 [сообщение #1888 является ответом на сообщение #1834] Wed, 22 March 2023 15:49 Переход к предыдущему сообщениюПереход к следующему сообщению
Квази в настоящее время не в онлайне  Квази
Сообщений: 33
Зарегистрирован: June 2022
Member
Цитата:
По опьіту перехода с 2.5 на 3.0 разница только в типе полей count(*) int/bigint и еще по мелочевке.
Смьісла переходить с одной устаревшей версии на другую не много
(грустно) а я все никак на 3 не могу переехать
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1889 является ответом на сообщение #1888] Wed, 22 March 2023 16:31 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 887
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
Квази писал(а) Wed, 22 March 2023 15:49
Цитата:
По опьіту перехода с 2.5 на 3.0 разница только в типе полей count(*) int/bigint и еще по мелочевке.
Смьісла переходить с одной устаревшей версии на другую не много
(грустно) а я все никак на 3 не могу переехать
на чем сейчас?
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1890 является ответом на сообщение #1889] Wed, 22 March 2023 17:34 Переход к предыдущему сообщениюПереход к следующему сообщению
 в настоящее время не в онлайне 
Сообщений: 197
Зарегистрирован: 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 Переход к предыдущему сообщениюПереход к следующему сообщению
 в настоящее время не в онлайне 
Сообщений: 197
Зарегистрирован: September 2022
Senior Member
...продолжаем использовать старую Fib+, там, если при коннекте не указать явно tcp v4, заметная задержка при коннекте, т.к. сперва коннектится по tcp v6, и лишь после облома - v4. Искуственный интеллект fib+ сам не понимает/не умеет ни выбрать версию протокола, ни попытаться пробовать коннектиться одновременно по двум... ну, слава богу, строку коннекта можно задать руками, в обход ИИ.
А коннект к сервисам с помощью Fib+ с указанием версии протокола без правки исходников вообще больше невозможен.
Может, кто-то что-то на git уже сделал, да я остерегаюсь той помойки. Как-то решил обновить версию Fib+, установил то, что на git - столько глюков во время выполнения вылезло, я быстро откатил всё взад. Оно и понятно: никто проект не ведёт...
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1892 является ответом на сообщение #1891] Thu, 23 March 2023 11:11 Переход к предыдущему сообщениюПереход к следующему сообщению
sim_84 в настоящее время не в онлайне  sim_84
Сообщений: 330
Зарегистрирован: June 2022
Senior Member
Про протоколы ты фигню пишешь. Ибо Fib+ вообще о них ничего не знает, он тупо передаёт строку коннекта в fbclient.
Пробует сначала tcp v6, а уж потом tcp v4 именно fbclient.

Решения два:

1. Всегда указывать явный префикс inet4://
2. Указывать явный IP-адрес вместо DNS-имени сервера. IP адрес v4 отличается от v6, поэтому fblient сразу понимает кем соединяться.

ЗЫ. Если бы я занялся допилкой Fib+, то первым делом выкинул весь ИИ от туда, который реально бесит, а уж потом новые фичи добавлял. Но поскольку люди привыкли к этому ИИ, то и трогать Fib+ нет желания.
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1893 является ответом на сообщение #1892] Thu, 23 March 2023 13:26 Переход к предыдущему сообщениюПереход к следующему сообщению
 в настоящее время не в онлайне 
Сообщений: 197
Зарегистрирован: 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 [сообщение #1894 является ответом на сообщение #1893] Fri, 24 March 2023 11:48 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 887
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
в нашем форке IBX есть процедуры/функции для сбора/разбора строки коннекта с учётом новых протоколов.
function ComposeConnectionStr(ServerProtocol: TServerProtocol; ServerName, Port, DatabaseName: string): string;
procedure DecomposeConnectionStr(ConnectionStr: string; out ServerProtocol: TServerProtocol; out ServerName, Port, DatabaseName: string);
могу поделиться, если надо.
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1895 является ответом на сообщение #1889] Fri, 24 March 2023 17:48 Переход к предыдущему сообщениюПереход к следующему сообщению
Квази в настоящее время не в онлайне  Квази
Сообщений: 33
Зарегистрирован: June 2022
Member
МП писал(а) Wed, 22 March 2023 16:31
Квази писал(а) Wed, 22 March 2023 15:49
Цитата:
По опьіту перехода с 2.5 на 3.0 разница только в типе полей count(*) int/bigint и еще по мелочевке.
Смьісла переходить с одной устаревшей версии на другую не много
(грустно) а я все никак на 3 не могу переехать
на чем сейчас?
2.5.9, а где-то и постарее есть.
P.S. Краешком участвую в одном проекте. Куча инсталляций по всему миру, что-то типа встроенного софта, там в качестве кэширующей локальной субд вообще 2.5.8 embedded используется.

Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1896 является ответом на сообщение #1895] Fri, 24 March 2023 18:02 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 887
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
мы своих клиентов потихоньку перетаскивали с 1.5 на 3.0.
но сейчас плюнули, и чтоб 2 раза не вставать, перетаскиваем с 1.5 на 4.0
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1897 является ответом на сообщение #1896] Sat, 25 March 2023 10:19 Переход к предыдущему сообщениюПереход к следующему сообщению
 в настоящее время не в онлайне 
Сообщений: 197
Зарегистрирован: September 2022
Senior Member
МП писал(а) Fri, 24 March 2023 18:02
и чтоб 2 раза не вставать, перетаскиваем с 1.5 на 4.0
"Compatibility mode", или, чтобы не два раза, сразу со "взрослым" сервером, и int128 и таймзоны?
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1898 является ответом на сообщение #1897] Sat, 25 March 2023 18:01 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 887
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
Конечно "Compatibility mode".
У нас центральный сервер на 3-ке.
4-ку ставим по филиалам с прицелом на репликацию.
Хоть там и не всё пока гладко.
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1904 является ответом на сообщение #1898] Mon, 27 March 2023 10:45 Переход к предыдущему сообщениюПереход к следующему сообщению
sim_84 в настоящее время не в онлайне  sim_84
Сообщений: 330
Зарегистрирован: 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-ке нет встроенного мультимастера.
В теории, то оно конечно может работать при разведении ПК, но на практике будут проблемы из-за того, что применение логов в слейве пока рассчитано ровно на один источник.
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1905 является ответом на сообщение #1904] Mon, 27 March 2023 11:56 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 887
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
sim_84
применение логов в слейве пока рассчитано ровно на один источник.
а нам больше и не надо.
у нас пуш из центра в филиалы по звезде.
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1906 является ответом на сообщение #1905] Mon, 27 March 2023 12:03 Переход к предыдущему сообщениюПереход к следующему сообщению
sim_84 в настоящее время не в онлайне  sim_84
Сообщений: 330
Зарегистрирован: June 2022
Senior Member
а... ну коли так, то можно. Я думал наоборот филиалы в центр свои данные отсылают
Re: Миграция с FB2.0.7 на FB2.5.9 [сообщение #1907 является ответом на сообщение #1904] Mon, 27 March 2023 12:05 Переход к предыдущему сообщению
hvlad в настоящее время в онлайне  hvlad
Сообщений: 357
Зарегистрирован: August 2022
Senior Member
sim_84
Естественно для поддержки тайм-аутов и batch API надо компоненты подкручивать.
Уточню - для таймаутов можно не подкручивать.
Предыдущая тема: Простой апдейт
Следующая тема: археологические раскопки
Переход к форуму:
  


Текущее время: Thu Nov 21 19:58:56 GMT+3 2024

Общее время, затраченное на создание страницы: 0.01239 секунд