Начало » Использование СУБД » 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    | 
		 
		
			
				
				
				
					
						  
						
						 Сообщений: 204 Зарегистрирован: 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    | 
		 
		
			
				
				
				
					
						  
						
						 Сообщений: 204 Зарегистрирован: 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    | 
		 
		
			
				
				
				
					
						  
						
						 Сообщений: 204 Зарегистрирован: 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
						 Сообщений: 355 Зарегистрирован: 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-ке нет встроенного мультимастера.  
В теории, то оно конечно может работать при разведении ПК, но на практике будут проблемы из-за того, что применение логов в слейве пока рассчитано ровно на один источник.
		
		
		
 |  
	| 
		
	 | 
 
 
 |  
	| 
		
 |  
	| 
		
 |  
	| 
		
 |   
Переход к форуму:
 
 Текущее время: Tue Nov 04 10:46:40 GMT+3 2025 
 Общее время, затраченное на создание страницы: 0.01997 секунд 
 |