{"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\/pt\/blog\/potochnaya-konvertatsiya-baz-firebird-2-5-v-format-ods12-firebird-3-0","title":{"rendered":"Convers\u00e3o em fluxo de bancos de dados Firebird 2.5 para o formato ODS12 (Firebird 3.0)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Cada vers\u00e3o do Firebird tem sua pr\u00f3pria vers\u00e3o do formato de estruturas de disco do banco de dados \u2013 O(n)D(isk)S(tructure). At\u00e9 a vers\u00e3o 2.5 inclusive, o mecanismo Firebird podia trabalhar com ODS de vers\u00f5es anteriores, ou seja, bancos de dados de vers\u00f5es mais antigas eram abertos pela nova vers\u00e3o e funcionavam em modo de compatibilidade, mas o mecanismo Firebird 3.0 s\u00f3 funciona com bancos de dados em sua pr\u00f3pria vers\u00e3o ODS 12.0.<\/p>\n<p>Para migrar para 3.0, o banco de dados da vers\u00e3o 2.5 deve ser convertido para o novo formato atrav\u00e9s de backup\/restaura\u00e7\u00e3o. Naturalmente, supomos que o banco de dados tenha sido preparado previamente para a convers\u00e3o - ou seja, os metadados e consultas foram verificados quanto \u00e0 compatibilidade com o Firebird 3.0.<\/p>\n<p>Se seguirmos a abordagem padr\u00e3o, isso significa que \u00e9 necess\u00e1rio fazer um backup na vers\u00e3o 2.5, depois instalar a 3.0 e realizar a restaura\u00e7\u00e3o. Esse procedimento \u00e9 vi\u00e1vel se houver tempo suficiente, mas na migra\u00e7\u00e3o de grandes bancos de dados, ou na migra\u00e7\u00e3o simult\u00e2nea de v\u00e1rias dezenas de bancos de dados, quando o tempo \u00e9 cr\u00edtico, pode-se usar a convers\u00e3o em stream, que \u00e9 de 30-40% mais r\u00e1pida. Como fazer isso (no Windows e no Linux) pode ser lido abaixo.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nA ideia geral \u00e9 que, para acelerar, utilizaremos um pipeline:<\/p>\n<pre><code class=\"plaintext\">gbak -b \u2026 banco25 stdout | gbak -c \u2026 stdin banco30<\/code><\/pre>\n<p>\nO gbak da vers\u00e3o 2.5 gera um backup em formato linear e o direciona para stdout, que \u00e9 imediatamente capturado atrav\u00e9s de stdin pelo gbak da vers\u00e3o 3.0, criando um novo banco de dados.<\/p>\n<p>Esse pipeline deve ser organizado utilizando o m\u00e9todo de acesso local (de arquivos), pois o acesso de rede (mesmo atrav\u00e9s de localhost) diminuir\u00e1 significativamente o processo.<\/p>\n<p>Abaixo, examinamos os detalhes para Windows e Linux.<\/p>\n<p><b>Windows<\/b><\/p>\n<p>No caso do Windows, a maneira mais simples de fazer isso \u00e9 criar uma montagem totalmente aut\u00f4noma do Firebird. Para isso, pegamos <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/FirebirdSQL\/firebird\/releases\/download\/R2_5_8\/Firebird-2.5.8.27089-0_x64_embed.zip\">o arquivo embed do Firebird 2.5<\/a><\/noindex>, renomeamos fbembedded.dll para fbclient.dll, adicionamos do arquivo \"normal\" 2.5 as utilit\u00e1rios gbak.exe e (opcionalmente) \u2013 isql.exe. <\/p>\n<p>O Firebird 3.0 utiliza <noindex><a rel=\"nofollow\" href=\"https:\/\/firebirdsql.org\/en\/firebird-3-0\/\">uma \u00fanica montagem<\/a><\/noindex> e n\u00e3o requer nenhum ajuste.<\/p>\n<p>A op\u00e7\u00e3o mais m\u00ednima (que n\u00e3o exige a instala\u00e7\u00e3o de bibliotecas de tempo de execu\u00e7\u00e3o do VS2008\/VS2010 no sistema alvo) cont\u00e9m os seguintes arquivos:<\/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>\nUm administrador experiente pode notar que na vers\u00e3o 2.5 n\u00e3o est\u00e3o inclu\u00eddos os arquivos intl\/fbintl.dll e intl\/fbintl.conf. Isso \u00e9 verdade, pois o gbak n\u00e3o utiliza o charset da conex\u00e3o e n\u00e3o converte dados entre charsets, mas do lado de 'recep\u00e7\u00e3o' do Firebird 3.0 esses arquivos s\u00e3o necess\u00e1rios para a cria\u00e7\u00e3o de \u00edndices.<\/p>\n<p>No firebird.conf, recomenda-se adicionar para o Firebird 3.0:<\/p>\n<pre><code class=\"plaintext\">MaxUnflushedWrites = -1\nMaxUnflushedWriteTime = -1<\/code><\/pre>\n<p>\nAl\u00e9m disso, \u00e9 desej\u00e1vel configurar um valor diferente para IpcName para 2.5 e 3.0. <\/p>\n<p>Ao escolher os valores de outros par\u00e2metros no firebird.conf, partimos da simples considera\u00e7\u00e3o de que, no est\u00e1gio de migra\u00e7\u00e3o de dados, um processo utiliza o gbak 2.5, enquanto o outro utiliza o 3.0; em seguida, o 2.5 encerra sua execu\u00e7\u00e3o e o 3.0 inicia a constru\u00e7\u00e3o de \u00edndices.<\/p>\n<p>Para acelerar o est\u00e1gio de constru\u00e7\u00e3o de \u00edndices no 3.0, recomenda-se aumentar o tamanho do par\u00e2metro TempCacheLimit para cerca de 40% da RAM (se este for um servidor dedicado, claro).<\/p>\n<p>Por exemplo, se o servidor tiver 16 GB de RAM, pode-se definir <\/p>\n<pre><code class=\"plaintext\">TempCacheLimit=6G<\/code><\/pre>\n<p>\n<i>\u00c9 claro que tal valor s\u00f3 pode ser definido no Firebird 3 de 64 bits, pois qualquer processo de 32 bits n\u00e3o conseguir\u00e1 alocar mais de 2 gigabytes de mem\u00f3ria.<\/i><\/p>\n<p>No 2.5, n\u00e3o \u00e9 necess\u00e1rio alterar esse par\u00e2metro \u2013 ele j\u00e1 n\u00e3o pode ser superior a 2 gigabytes e, durante o backup, n\u00e3o afeta a velocidade.<\/p>\n<p>Antes de executar a opera\u00e7\u00e3o, \u00e9 necess\u00e1rio verificar se o cache de p\u00e1ginas no cabe\u00e7alho do banco de dados est\u00e1 definido como 0 (comando <code>gstat -h databasename<\/code>, verifique a linha Page buffers). <\/p>\n<p>Se o cache for definido explicitamente no cabe\u00e7alho do banco de dados, isso sobrescreve os valores do firebird.conf (e databases.conf no 3.0) e, caso os valores sejam inadequadamente altos, isso pode levar a um consumo excessivo de mem\u00f3ria e swap.<\/p>\n<p>Em seguida, copiamos os arquivos para o sistema de destino. <\/p>\n<p>A convers\u00e3o \u00e9 realizada ap\u00f3s a parada do servi\u00e7o 'sistema' do Firebird 2.5, na linha de comando com privil\u00e9gios elevados para administrador local (exemplo):<\/p>\n<pre><code class=\"plaintext\">set ISC_USER=propriet\u00e1rio\n\"25\/gbak\" -z -b -g -v -st t -y 25.log banco25 stdout|^\n\"30\/gbak\" -z -c -v -st t -y 30.log stdin banco30<\/code><\/pre>\n<p>\nNeste exemplo, \u00e9 utilizada a 'barra inclinada direta' entre aspas (o 'estilo unix' permitido), enquanto o 'caret' (s\u00edmbolo '^') escapa o s\u00edmbolo de nova linha, o que \u00e9 conveniente ao digitar comandos longos. A op\u00e7\u00e3o -st(atus) foi introduzida no Firebird 2.5.8 e permite registrar no log dados sobre o tempo de execu\u00e7\u00e3o do processo gbak (detalhes \u2013 na documenta\u00e7\u00e3o).<\/p>\n<p><b>Linux<\/b><\/p>\n<p>No Linux, o Firebird 3 depende da biblioteca tommath. No CentOS (RHEL), essa biblioteca est\u00e1 no reposit\u00f3rio epel, enquanto no Ubuntu (Debian), ela est\u00e1 no sistema.<\/p>\n<p>Para o CentOS, primeiro \u00e9 necess\u00e1rio conectar-se ao reposit\u00f3rio epel e depois executar <\/p>\n<pre><code class=\"plaintext\">yum install libtommath<\/code><\/pre>\n<p>\nNo Ubuntu, n\u00e3o \u00e9 necess\u00e1rio conectar reposit\u00f3rios adicionais, mas no Ubuntu 16 e no Ubuntu 18, diferentes vers\u00f5es de pacotes s\u00e3o instaladas - libtommath0 e libtommath1, respectivamente.<\/p>\n<p>O Firebird 3.0 procura por tommath.so.0 e, para o Ubuntu 18, \u00e9 necess\u00e1rio criar um link simb\u00f3lico (symlink) de tommath.so.0 para tommath.so.1. Para isso, primeiro \u00e9 necess\u00e1rio encontrar tommath.so.1. <\/p>\n<p>O caminho procurado no Ubuntu \u00e9 <code>\/usr\/lib\/x86_64-linux-gnu\/<\/code>, mas em outras distribui\u00e7\u00f5es baseadas em Debian pode ser diferente.<\/p>\n<p>O segundo problema est\u00e1 relacionado ao fato de que at\u00e9 o Firebird 3.0.1, inclusive, n\u00e3o havia uma maneira f\u00e1cil de instalar duas vers\u00f5es diferentes do servidor. A op\u00e7\u00e3o \"compilar a partir do c\u00f3digo-fonte com o prefixo necess\u00e1rio\" n\u00e3o \u00e9 considerada devido \u00e0 sua relativa complexidade.<\/p>\n<p>Para o Firebird 3.0.2 e superior, foi implementada <noindex><a rel=\"nofollow\" href=\"http:\/\/tracker.firebirdsql.org\/browse\/CORE-5204\">a constru\u00e7\u00e3o com \u2013enable-binreloc<\/a><\/noindex> e uma op\u00e7\u00e3o separada do instalador (-path caminho).<\/p>\n<p>Assumindo que a biblioteca tommath e, se necess\u00e1rio, o symlink para tommath.so.0 foram adicionados ao sistema, pode-se instalar a distribui\u00e7\u00e3o atual (no momento da reda\u00e7\u00e3o deste artigo) do Firebird 3.0.4 em, por exemplo, \/opt\/fb3:<\/p>\n<pre><code class=\"plaintext\">.\/install.sh -path \/opt\/fb3<\/code><\/pre>\n<p>\nDepois disso, pode-se parar o servi\u00e7o do sistema Firebird e iniciar a convers\u00e3o cont\u00ednua. <\/p>\n<p><i>Ao parar o Firebird, \u00e9 importante considerar que os processos do Firebird 2.5 em modo Classic geralmente s\u00e3o iniciados pelo xinetd - portanto, \u00e9 necess\u00e1rio ou desativar o servi\u00e7o firebird para o xinetd ou parar totalmente o xinetd.<\/i><\/p>\n<p>No firebird.conf para 3.0 no Linux, n\u00e3o \u00e9 necess\u00e1rio definir os par\u00e2metros MaxUnflushed (eles funcionam apenas no Windows) e alterar as configura\u00e7\u00f5es do Firebird 2.5. <\/p>\n<p>No Linux, o acesso local (baseado em arquivos) ao Firebird 2.5 n\u00e3o \u00e9 equivalente \u00e0 vers\u00e3o embutida do Windows - o servidor 2.5 funcionar\u00e1 no processo gbak (sem parte de rede), mas os direitos de acesso ser\u00e3o verificados com base no banco de usu\u00e1rios, ou seja, ser\u00e3o necess\u00e1rios n\u00e3o apenas o login, mas tamb\u00e9m a senha: <\/p>\n<pre><code class=\"plaintext\">export ISC_USER=username ISC_PASSWORD=password\n\/opt\/firebird\/bin\/gbak -b \u2026 \u0431\u0430\u0437\u043025 stdout\n|\/opt\/fb3\/bin\/gbak -c \u2026 stdin \u0431\u0430\u0437\u043030<\/code><\/pre>\n<p>\nAp\u00f3s a convers\u00e3o bem-sucedida, \u00e9 necess\u00e1rio remover primeiro o Firebird 3.0 \"adicional\", depois o Firebird 2.5 \"principal\" e s\u00f3 ent\u00e3o executar uma instala\u00e7\u00e3o limpa do Firebird 2.5 - sendo prefer\u00edvel fazer isso a partir do instalador padr\u00e3o tar.gz, e n\u00e3o atrav\u00e9s dos reposit\u00f3rios, j\u00e1 que a vers\u00e3o nos reposit\u00f3rios pode estar desatualizada.<\/p>\n<p>Al\u00e9m disso, ap\u00f3s restaurar o BD no Linux e reinstalar, deve-se verificar se o novo BD tem o usu\u00e1rio firebird como propriet\u00e1rio.<\/p>\n<p>Se n\u00e3o for o caso, ser\u00e1 necess\u00e1rio corrigir<\/p>\n<pre><code class=\"plaintext\">chown firebird.firebird database<\/code><\/pre>\n<p>\n<b>Resultado<\/b><\/p>\n<p>Al\u00e9m da economia de tempo e espa\u00e7o em disco, a convers\u00e3o em tempo real possui outra vantagem importante \u2013 a transforma\u00e7\u00e3o do banco de dados \u00e9 feita sem a remo\u00e7\u00e3o do Firebird 2.5 existente, o que simplifica consideravelmente o retorno em caso de convers\u00e3o malsucedida (geralmente devido \u00e0 falta de espa\u00e7o ou uma reinicializa\u00e7\u00e3o inesperada durante o processo de migra\u00e7\u00e3o).<\/p>\n<p>A economia de tempo est\u00e1 relacionada ao fato de que a convers\u00e3o \"cl\u00e1ssica\" leva em conta o \"tempo de backup\" mais o \"tempo de restaura\u00e7\u00e3o\". A restaura\u00e7\u00e3o consiste em duas partes: ler dados do arquivo de backup e construir o \u00edndice.<\/p>\n<p>Na convers\u00e3o em tempo real, o tempo total \u00e9 calculado como \"tempo de backup mais cinco a dez por cento\" e o \"tempo de constru\u00e7\u00e3o de \u00edndices\".<\/p>\n<p>Os resultados espec\u00edficos dependem da estrutura do banco de dados, mas, em m\u00e9dia, o tempo de restaura\u00e7\u00e3o \u00e9 aproximadamente o dobro do tempo de backup. Portanto, se considerarmos o tempo de backup como uma unidade, a \"convers\u00e3o cl\u00e1ssica\" leva tr\u00eas unidades de tempo, enquanto a convers\u00e3o em tempo real leva duas unidades de tempo. Um aumento no TempCacheLimit tamb\u00e9m ajuda a reduzir o tempo adicionalmente.<\/p>\n<p>No geral, a convers\u00e3o em tempo real permite economizar entre 30% a 40% do tempo necess\u00e1rio para backups sequenciais e restaura\u00e7\u00f5es.<\/p>\n<p><b>D\u00favidas?<\/b><\/p>\n<p>Por favor, envie todas as perguntas nos coment\u00e1rios ou entre em contato com o autor da metodologia e coautor deste artigo \u2013 Vasily Sidorov, engenheiro de sistemas s\u00eanior da empresa \"iBase\", pelo e-mail bs at ibase ru.<\/p>\n<p class=\"for_users_only_msg\">Apenas usu\u00e1rios registrados podem participar da pesquisa. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Entre<\/a><\/noindex>, por favor.<\/p>\n<h2 class=\"default-block__polling-title\">Qual vers\u00e3o do Firebird voc\u00ea est\u00e1 usando?<\/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 ou 1.0<\/p>\n<\/li>\n<\/ul>\n<p>    16 usu\u00e1rios votaram. 1 usu\u00e1rio se absteve.<br \/>\n<br \/>Fonte: <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.3 - 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\/pt\/blog\/potochnaya-konvertatsiya-baz-firebird-2-5-v-format-ods12-firebird-3-0\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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\udd47Convers\u00e3o em tempo real de bancos Firebird 2.5 para o formato ODS12 (Firebird 3.0) | ProHoster","description":"Cada vers\u00e3o do Firebird possui sua pr\u00f3pria vers\u00e3o do formato de estruturas de disco do banco de dados \u2013 O(n)D(isk)S(tructure).","canonical_url":"https:\/\/prohoster.info\/pt\/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":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/30280","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=30280"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/30280\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=30280"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=30280"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=30280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}