{"id":30280,"date":"2019-10-31T21:34:38","date_gmt":"2019-10-31T18:34:38","guid":{"rendered":"https:\/\/prohoster.info\/blog\/potochnaya-konvertatsiya-baz-firebird-2-5-v-format-ods12-firebird-3-0\/"},"modified":"2019-10-31T21:34:38","modified_gmt":"2019-10-31T18:34:38","slug":"potochnaya-konvertatsiya-baz-firebird-2-5-v-format-ods12-firebird-3-0","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/potochnaya-konvertatsiya-baz-firebird-2-5-v-format-ods12-firebird-3-0","title":{"rendered":"Strumieniowa konwersja baz Firebird 2.5 do formatu ODS12 (Firebird 3.0)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ka\u017cda wersja Firebird ma swoj\u0105 w\u0142asn\u0105 wersj\u0119 formatu dyskowych struktur bazy danych \u2013 O(n)D(isk)S(tructure). Do wersji 2.5 w\u0142\u0105cznie, silnik Firebird m\u00f3g\u0142 dzia\u0142a\u0107 z ODS wcze\u015bniejszych wersji, co oznacza, \u017ce bazy z starszych wersji by\u0142y otwierane w nowej wersji i dzia\u0142a\u0142y w trybie zgodno\u015bci, ale silnik Firebird 3.0 dzia\u0142a tylko z bazami w swojej w\u0142asnej wersji ODS 12.0.<\/p>\n<p>Aby przej\u015b\u0107 na 3.0, baz\u0119 danych z 2.5 nale\u017cy przekszta\u0142ci\u0107 do nowego formatu poprzez backup\/restore. Oczywi\u015bcie, zak\u0142adamy, \u017ce baza danych zosta\u0142a wcze\u015bniej przygotowana do konwersji \u2013 tzn. metadane i zapytania zosta\u0142y sprawdzone pod k\u0105tem zgodno\u015bci z Firebird 3.0.<\/p>\n<p>Je\u017celi zastosowa\u0107 standardowe podej\u015bcie, oznacza to, \u017ce nale\u017cy wykona\u0107 backup w wersji 2.5, nast\u0119pnie zainstalowa\u0107 3.0 i wykona\u0107 restore. Taka procedura jest akceptowalna, je\u015bli jest wystarczaj\u0105co du\u017co czasu, ale przy migracji du\u017cych baz danych, lub przy jednoczesnej migracji kilku dziesi\u0105tek baz danych, gdy czas jest ograniczony, mo\u017cna skorzysta\u0107 z potokowej konwersji, kt\u00f3ra jest o 30-40% szybsza. Jak dok\u0142adnie to zrobi\u0107 (na Windows i Linux), przeczytasz poni\u017cej.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nOg\u00f3lna idea polega na tym, \u017ce dla przyspieszenia skorzystamy z ruroci\u0105gu:<\/p>\n<pre><code class=\"plaintext\">gbak -b \u2026 baza25 stdout | gbak -c \u2026 stdin baza30<\/code><\/pre>\n<p>\nGbak w wersji 2.5 generuje backup w formacie liniowym i wysy\u0142a go do stdout, kt\u00f3ry nast\u0119pnie natychmiast przez stdin odbiera gbak w wersji 3.0 i tworzy now\u0105 baz\u0119 danych.<\/p>\n<p>Taki ruroci\u0105g nale\u017cy organizowa\u0107 wy\u0142\u0105cznie lokaln\u0105 (plikow\u0105) metod\u0105 dost\u0119pu, poniewa\u017c dost\u0119p sieciowy (nawet przez localhost) znacznie spowolni proces.<\/p>\n<p>Poni\u017cej omawiamy szczeg\u00f3\u0142y dla Windows i Linux.<\/p>\n<p><b>Windows<\/b><\/p>\n<p>W przypadku Windows najpro\u015bciej jest wykona\u0107 ca\u0142kowicie autonomiczn\u0105 wersj\u0119 Firebirda. W tym celu bierzemy <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/FirebirdSQL\/firebird\/releases\/download\/R2_5_8\/Firebird-2.5.8.27089-0_x64_embed.zip\">embed-archiwum Firebird 2.5<\/a><\/noindex>, zmieniamy nazw\u0119 fbemded.dll na fbclient.dll, dodajemy z archiwum \"zwyk\u0142ego\" 2.5 narz\u0119dzie gbak.exe i (opcjonalnie) \u2013 isql.exe. <\/p>\n<p>Firebird 3.0 u\u017cywa <noindex><a rel=\"nofollow\" href=\"https:\/\/firebirdsql.org\/en\/firebird-3-0\/\">jednej kompilacji<\/a><\/noindex> i nie wymaga \u017cadnych poprawek.<\/p>\n<p>Najmniejsza wersja (nie wymagaj\u0105ca instalacji bibliotek runtime VS2008\/VS2010 na docelowym systemie) zawiera nast\u0119puj\u0105ce pliki:<\/p>\n<pre><code class=\"plaintext\">25\/gbak.exe\n25\/fbclient.dll\n25\/firebird.conf\n25\/firebird.log\n25\/firebird.msg\n25\/ib_util.dll\n25\/icudt30.dll\n25\/icuin30.dll\n25\/icuuc30.dll\n25\/Microsoft.VC80.CRT.manifest\n25\/msvcp80.dll\n25\/msvcr80.dll\n\n30\/fbclient.dll\n30\/firebird.conf\n30\/firebird.msg\n30\/gbak.exe\n30\/ib_util.dll\n30\/icudt52.dll\n30\/icudt52l.dat\n30\/icuin52.dll\n30\/icuuc52.dll\n30\/msvcp100.dll\n30\/msvcr100.dll\n30\/intl\/fbintl.conf\n30\/intl\/fbintl.dll\n30\/plugins\/engine12.dll<\/code><\/pre>\n<p>\nDo\u015bwiadczony administrator mo\u017ce zauwa\u017cy\u0107, \u017ce w wersji 2.5 nie s\u0105 do\u0142\u0105czone pliki intl\/fbintl.dll i intl\/fbintl.conf. Rzeczywi\u015bcie, poniewa\u017c gbak nie wykorzystuje zestawu znak\u00f3w po\u0142\u0105czenia oraz nie konwertuje danych mi\u0119dzy zestawami znak\u00f3w, ale po stronie 'odbiorczej' Firebird 3.0 te pliki s\u0105 niezb\u0119dne do tworzenia indeks\u00f3w.<\/p>\n<p>W pliku firebird.conf dla Firebird 3.0 zaleca si\u0119 doda\u0107:<\/p>\n<pre><code class=\"plaintext\">MaxUnflushedWrites = -1\nMaxUnflushedWriteTime = -1<\/code><\/pre>\n<p>\nDodatkowo warto ustawi\u0107 r\u00f3\u017cne warto\u015bci dla IpcName dla wersji 2.5 i 3.0. <\/p>\n<p>Wybieraj\u0105c warto\u015bci innych parametr\u00f3w firebird.conf, kierujemy si\u0119 prost\u0105 zasad\u0105: podczas migracji danych w jednym procesie dzia\u0142a gbak 2.5, a w drugim \u2013 3.0, nast\u0119pnie 2.5 ko\u0144czy dzia\u0142anie, a 3.0 rozpoczyna budow\u0119 indeks\u00f3w.<\/p>\n<p>Aby przyspieszy\u0107 etap budowania indeks\u00f3w w 3.0, zaleca si\u0119 zwi\u0119kszenie rozmiaru parametru TempCacheLimit do ~40% RAM (je\u015bli to serwer dedykowany, oczywi\u015bcie).<\/p>\n<p>Na przyk\u0142ad, je\u015bli na serwerze jest 16 GB RAM, mo\u017cna ustawi\u0107 <\/p>\n<pre><code class=\"plaintext\">TempCacheLimit=6G<\/code><\/pre>\n<p>\n<i>Oczywi\u015bcie, tak\u0105 warto\u015b\u0107 mo\u017cna ustawi\u0107 tylko w 64-bitowym Firebird 3, poniewa\u017c jakikolwiek proces 32-bitowy nie b\u0119dzie w stanie alokowa\u0107 wi\u0119cej ni\u017c 2 GB pami\u0119ci.<\/i><\/p>\n<p>W przypadku 2.5 ten parametr nie wymaga zmiany \u2013 i tak nie mo\u017ce by\u0107 wi\u0119kszy ni\u017c 2 GB, a przy tworzeniu kopii zapasowej nie ma wp\u0142ywu na pr\u0119dko\u015b\u0107.<\/p>\n<p>Przed przyst\u0105pieniem do operacji nale\u017cy upewni\u0107 si\u0119, \u017ce bufor stron w nag\u0142\u00f3wku bazy danych jest ustawiony na 0 (komenda <code>gstat -h databasename<\/code>, zobacz lini\u0119 Page buffers). <\/p>\n<p>Je\u015bli bufor zosta\u0142 jawnie okre\u015blony w nag\u0142\u00f3wku bazy danych, to nadpisuje warto\u015bci z firebird.conf (i databases.conf w 3.0), a przy nieadekwatnie du\u017cych warto\u015bciach mo\u017ce prowadzi\u0107 do nadmiernego zu\u017cycia pami\u0119ci i przeniesienia do swapu.<\/p>\n<p>Nast\u0119pnie kopiujemy pliki na docelowy system. <\/p>\n<p>Konwersja przeprowadzana jest po zatrzymaniu 'systemowej' us\u0142ugi Firebird 2.5, w wierszu polece\u0144 z podniesionymi uprawnieniami do lokalnego administratora (przyk\u0142ad):<\/p>\n<pre><code class=\"plaintext\">set ISC_USER=w\u0142a\u015bciciel\n\"25\/gbak\" -z -b -g -v -st t -y 25.log baza25 stdout|^\n\"30\/gbak\" -z -c -v -st t -y 30.log stdin baza30<\/code><\/pre>\n<p>\nW tym przyk\u0142adzie u\u017cywana jest 'prosta uko\u015bna' w cudzys\u0142owach (dozwolony 'unix-style'), a 'daszek' (znak '^') eskapiuje znak nowej linii, co jest wygodne przy wpisywaniu d\u0142ugich komend. Opcja -st (atus) pojawi\u0142a si\u0119 w Firebird 2.5.8 i umo\u017cliwia zapis danych o czasie dzia\u0142ania procesu gbak w protokole (szczeg\u00f3\u0142y \u2013 w dokumentacji).<\/p>\n<p><b>Linuxa<\/b><\/p>\n<p>Na Linuxie Firebird 3 zale\u017cy od biblioteki tommath. W CentOS (RHEL) ta biblioteka znajduje si\u0119 w repozytorium epel, w Ubuntu (Debian) \u2013 w systemowym.<\/p>\n<p>Aby zainstalowa\u0107 CentOS, najpierw trzeba pod\u0142\u0105czy\u0107 repozytorium epel, a dopiero potem wykona\u0107 <\/p>\n<pre><code class=\"plaintext\">yum install libtommath<\/code><\/pre>\n<p>\nW Ubuntu nie trzeba pod\u0142\u0105cza\u0107 dodatkowych repozytori\u00f3w, jednak w Ubuntu 16 i Ubuntu 18 instalowane s\u0105 r\u00f3\u017cne wersje pakiet\u00f3w \u2013 odpowiednio libtommath0 i libtommath1.<\/p>\n<p>Firebird 3.0 szuka tommath.so.0 i dla Ubuntu 18 dodatkowo nale\u017cy utworzy\u0107 symlink do tommath.so.1. W tym celu trzeba najpierw znale\u017a\u0107 tommath.so.1. <\/p>\n<p>Szukana \u015bcie\u017cka w Ubuntu to <code>\/usr\/lib\/x86_64-linux-gnu\/<\/code>, ale w innych dystrybucjach opartych na Debianie mo\u017ce by\u0107 inaczej.<\/p>\n<p>Drugim problemem jest to, \u017ce do Firebird 3.0.1 w\u0142\u0105cznie nie by\u0142o prostego sposobu na zainstalowanie dw\u00f3ch r\u00f3\u017cnych wersji serwera. Opcj\u0119 'kompilujemy ze \u017ar\u00f3de\u0142 z odpowiednim prefiksem' pomijamy z powodu wzgl\u0119dnej pracoch\u0142onno\u015bci.<\/p>\n<p>Dla Firebird 3.0.2 i nowszych zrealizowano <noindex><a rel=\"nofollow\" href=\"http:\/\/tracker.firebirdsql.org\/browse\/CORE-5204\">kompilacj\u0119 z \u2013enable-binreloc<\/a><\/noindex> i oddzieln\u0105 opcj\u0119 instalatora (-path \u015bcie\u017cka).<\/p>\n<p>Zak\u0142adaj\u0105c, \u017ce biblioteka tommath oraz, w razie potrzeby, symlink dla tommath.so.0 zosta\u0142y dodane do systemu, mo\u017cna zainstalowa\u0107 aktualny (w momencie pisania tego artyku\u0142u) dystrybucyjny Firebird 3.0.4 do, na przyk\u0142ad, \/opt\/fb3:<\/p>\n<pre><code class=\"plaintext\">.\/install.sh -path \/opt\/fb3<\/code><\/pre>\n<p>\nPo tym mo\u017cna zatrzyma\u0107 systemow\u0105 us\u0142ug\u0119 Firebird i rozpocz\u0105\u0107 konwersj\u0119 strumieniow\u0105. <\/p>\n<p><i>Podczas zatrzymywania Firebird nale\u017cy pami\u0119ta\u0107, \u017ce procesy Firebird 2.5 w trybie Classic zwykle uruchamia xinetd \u2013 dlatego nale\u017cy albo zablokowa\u0107 us\u0142ug\u0119 firebird dla xinetd, albo ca\u0142kowicie zatrzyma\u0107 xinetd.<\/i><\/p>\n<p>W firebird.conf dla wersji 3.0 na Linux nie trzeba ustawia\u0107 parametr\u00f3w MaxUnflushed (dzia\u0142aj\u0105 tylko na Windows) ani zmienia\u0107 ustawie\u0144 Firebird 2.5. <\/p>\n<p>W Linuksie lokalny (plikowy) dost\u0119p do Firebird 2.5 nie jest r\u00f3wnowa\u017cny z wariantem embeded pod Windows \u2013 serwer 2.5 b\u0119dzie dzia\u0142a\u0142 w procesie gbak (bez cz\u0119\u015bci sieciowej), ale prawa dost\u0119pu b\u0119d\u0105 sprawdzane na podstawie bazy u\u017cytkownik\u00f3w, co oznacza, \u017ce b\u0119dziemy potrzebowa\u0107 nie tylko loginu, ale r\u00f3wnie\u017c has\u0142a: <\/p>\n<pre><code class=\"plaintext\">export ISC_USER=username ISC_PASSWORD=password\n\/opt\/firebird\/bin\/gbak -b \u2026 baza25 stdout\n|\/opt\/fb3\/bin\/gbak -c \u2026 stdin baza30<\/code><\/pre>\n<p>\nPo udanej konwersji najpierw nale\u017cy usun\u0105\u0107 'dodatkowy' Firebird 3.0, nast\u0119pnie 'g\u0142\u00f3wny' Firebird 2.5, a potem przeprowadzi\u0107 czyst\u0105 instalacj\u0119 Firebird 2.5 \u2013 najlepiej z standardowego instalatora tar.gz, a nie przez repozytoria, poniewa\u017c wersja w repozytoriach mo\u017ce by\u0107 przestarza\u0142a.<\/p>\n<p>Ponadto, po przywr\u00f3ceniu bazy danych na Linuxie i ponownej instalacji, nale\u017cy upewni\u0107 si\u0119, \u017ce nowa baza danych ma u\u017cytkownika firebird jako w\u0142a\u015bciciela.<\/p>\n<p>Je\u015bli tak nie jest, to nale\u017cy to poprawi\u0107<\/p>\n<pre><code class=\"plaintext\">chown firebird.firebird database<\/code><\/pre>\n<p>\n<b>Podsumowanie<\/b><\/p>\n<p>Opr\u00f3cz oszcz\u0119dno\u015bci czasu i miejsca na dysku, konwersja strumieniowa ma jeszcze jedn\u0105 istotn\u0105 zalet\u0119 \u2013 przekszta\u0142cenie bazy odbywa si\u0119 bez usuwania istniej\u0105cego Firebird 2.5, co zdecydowanie u\u0142atwia cofni\u0119cie w przypadku nieudanej konwersji (najcz\u0119\u015bciej z powodu braku miejsca lub niespodziewanego restartu podczas procesu migracji).<\/p>\n<p>Oszcz\u0119dno\u015b\u0107 czasu zwi\u0105zana jest z tym, \u017ce \u201eklasyczna\u201d konwersja to \u201eczas kopii zapasowej\u201d plus \u201eczas przywracania\u201d. Przywracanie sk\u0142ada si\u0119 z dw\u00f3ch etap\u00f3w: odczyt danych z pliku kopii zapasowej oraz budowa indeksu.<\/p>\n<p>Przy konwersji strumieniowej ca\u0142kowity czas wynosi \u201eczas kopii zapasowej plus pi\u0119\u0107-dziesi\u0119\u0107 procent\u201d oraz \u201eczas budowy indeks\u00f3w\u201d.<\/p>\n<p>Konkretne wyniki zale\u017c\u0105 od struktury bazy, ale \u015brednio czas przywracania jest w przybli\u017ceniu r\u00f3wny podw\u00f3jnemu czasowi kopii zapasowej. Dlatego, przyjmuj\u0105c czas kopii zapasowej jako jednostk\u0119, \u201eklasyczna konwersja\u201d wynosi trzy jednostki czasu, a strumieniowa \u2013 dwie jednostki czasu. Dodatkowo skr\u00f3cenie czasu pomaga zwi\u0119kszenie TempCacheLimit.<\/p>\n<p>Og\u00f3lnie rzecz bior\u0105c, konwersja strumieniowa w praktyce pozwala zaoszcz\u0119dzi\u0107 30-40% czasu w por\u00f3wnaniu do sekwencyjnej kopii zapasowej i przywracania.<\/p>\n<p><b>Masz pytania?<\/b><\/p>\n<p>Prosz\u0119, wszystkie pytania kieruj w komentarzach lub wysy\u0142aj do autora metodyki i wsp\u00f3\u0142autora tego artyku\u0142u \u2013 Wasyla Sidorowa, wiod\u0105cego in\u017cyniera systemowego firmy \u201eiBase\u201d, na adres bs at ibase ru.<\/p>\n<p class=\"for_users_only_msg\">Tylko zarejestrowani u\u017cytkownicy mog\u0105 bra\u0107 udzia\u0142 w ankiecie. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Zaloguj si\u0119<\/a><\/noindex>, prosz\u0119.<\/p>\n<h2 class=\"default-block__polling-title\">Jakiej wersji Firebird u\u017cywasz?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Firebird 3.x<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Firebird 2.5<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Firebird 2.1<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Firebird 2.0, 1.5 lub 1.0<\/p>\n<\/li>\n<\/ul>\n<p>    16 u\u017cytkownik\u00f3w zag\u0142osowa\u0142o. 1 u\u017cytkownik wstrzyma\u0142 si\u0119.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/445204\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Firebird \u0435\u0441\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u2013 O(n)D(isk)S(tructure). \u0414\u043e \u0432\u0435\u0440\u0441\u0438\u0438 2.5 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0434\u0432\u0438\u0436\u043e\u043a Firebird \u043c\u043e\u0433 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 ODS \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439, \u0442\u043e \u0435\u0441\u0442\u044c \u0431\u0430\u0437\u044b \u043e\u0442 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438, \u043d\u043e \u0434\u0432\u0438\u0436\u043e\u043a Firebird 3.0 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0411\u0414 \u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 ODS \u0432\u0435\u0440\u0441\u0438\u0438 12.0. \u0427\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0439\u0442\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-30280","post","type-post","status-publish","format-standard","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Firebird \u0435\u0441\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u2013 O(n)D(isk)S(tructure).\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/potochnaya-konvertatsiya-baz-firebird-2-5-v-format-ods12-firebird-3-0\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u043e\u0442\u043e\u0447\u043d\u0430\u044f \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u0431\u0430\u0437 Firebird 2.5 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 ODS12 (Firebird 3.0) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Firebird \u0435\u0441\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u2013 O(n)D(isk)S(tructure).\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/potochnaya-konvertatsiya-baz-firebird-2-5-v-format-ods12-firebird-3-0\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:34:38+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:34:38+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Konwersja strumieniowa baz Firebird 2.5 do formatu ODS12 (Firebird 3.0) | ProHoster","description":"Ka\u017cda wersja Firebird ma swoj\u0105 w\u0142asn\u0105 wersj\u0119 formatu struktury dysk\u00f3w bazy danych \u2013 O(n)D(isk)S(tructure).","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/potochnaya-konvertatsiya-baz-firebird-2-5-v-format-ods12-firebird-3-0","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u043e\u0442\u043e\u0447\u043d\u0430\u044f \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u0431\u0430\u0437 Firebird 2.5 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 ODS12 (Firebird 3.0) | ProHoster","og:description":"\u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Firebird \u0435\u0441\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u2013 O(n)D(isk)S(tructure).","og:url":"https:\/\/prohoster.info\/pl\/blog\/potochnaya-konvertatsiya-baz-firebird-2-5-v-format-ods12-firebird-3-0","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:34:38+00:00","article:modified_time":"2019-10-31T18:34:38+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30280","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 00:29:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:37:28","updated":"2026-01-21 00:29:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/30280","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=30280"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/30280\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=30280"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=30280"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=30280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}