Migration OraToPG » История » Версия 3
BEA, 06.06.2025 13:37
| 1 | 1 | BEA | h1. Миграция с Oracle на PostgreSQL |
|---|---|---|---|
| 2 | |||
| 3 | h2. Миграция на операционной системе Windows |
||
| 4 | |||
| 5 | 3 | BEA | h3. Подготовка к миграции: установка необходимого ПО |
| 6 | |||
| 7 | 1 | BEA | # Установка Perl |
| 8 | Скачайте и установите "Strawberry Perl":https://strawberryperl.com/. После установки убедитесь, что Perl добавлен в переменную среды *@PATH@*. |
||
| 9 | Проверьте установку выполнив команду: |
||
| 10 | <pre><code class="shell"> |
||
| 11 | perl -v |
||
| 12 | </code></pre> |
||
| 13 | # Установка Oracle Client. Уже описан процесс в нашей инструкции: [[OracleInstall|ссылка]] |
||
| 14 | # Установка зависимостей Perl |
||
| 15 | 3 | BEA | ## Откройте командную строку (cmd.exe) от имени администратора и выполните: |
| 16 | 1 | BEA | <pre><code class="perl"> |
| 17 | cpan DBI |
||
| 18 | cpan DBD::Oracle |
||
| 19 | cpan DBD::Pg |
||
| 20 | cpan XML::Simple |
||
| 21 | cpan DateTime |
||
| 22 | cpan JSON |
||
| 23 | cpan Term::ReadKey |
||
| 24 | cpan Test::Simple |
||
| 25 | </code></pre> |
||
| 26 | *Для установки модулей может потребоваться доступ в интернет и права администратора.* |
||
| 27 | 3 | BEA | ## Проверьте установленные зависимости при помощи команд: |
| 28 | <pre><code class="shell"> |
||
| 29 | perl -e "use DBI;" |
||
| 30 | perl -e "use DBD::Oracle;" |
||
| 31 | perl -e "use DBD::Pg;" |
||
| 32 | perl -e "use XML::Simple;" |
||
| 33 | perl -e "use DateTime;" |
||
| 34 | perl -e "use JSON;" |
||
| 35 | perl -e "use Term::ReadKey;" |
||
| 36 | perl -e "use Test::Simple;" |
||
| 37 | </code></pre> |
||
| 38 | 1 | BEA | # Установка ora2pg |
| 39 | 2 | BEA | ## 2 варианта для скачивания |
| 40 | ### Перейдите на их "оффициальный сайт":https://ora2pg.darold.net/. Найдите на сайте и перейлите по ссылке "GitHub Download v<version>". Скачиваем архив с исходниками: |
||
| 41 | !clipboard-202506060714-uwsux.png! |
||
| 42 | ### Если у вас установлен git то откройте консоль и перейдите в то местоположение куда хотите скачать. Выполните команду: |
||
| 43 | <pre><code class="shell"> |
||
| 44 | git clone https://github.com/darold/ora2pg.git |
||
| 45 | </code></pre> |
||
| 46 | ## Перейдите в папку с исходниками: |
||
| 47 | <pre><code class="shell"> |
||
| 48 | cd ora2pg |
||
| 49 | </code></pre> |
||
| 50 | Установите: |
||
| 51 | <pre><code class="shell"> |
||
| 52 | perl Makefile.PL |
||
| 53 | dmake |
||
| 54 | dmake install |
||
| 55 | </code></pre> |
||
| 56 | *Примечание:* Если dmake не найден, используйте gmake или nmake (входит в Strawberry Perl). |
||
| 57 | ## Проверка установки |
||
| 58 | <pre><code class="shell"> |
||
| 59 | ora2pg --version |
||
| 60 | </code></pre> |
||
| 61 | 1 | BEA | Если команда возвращает версию — установка прошла успешно. |
| 62 | # Скопируйте @tnsnames.ora@ из вашего рабочего клиента или сервера базы данных Oracle. Подробнее что за файл и откуда брать: [[Oracle|ссылка]] |
||
| 63 | # Проверка подключения к Oracle |
||
| 64 | 3 | BEA | ## Создайте конфигурационный файл ora2pg.conf используя файл шаблон который можно найти по пути где установлен ora2pg. |
| 65 | 1 | BEA | Пример минимальной конфигурации: |
| 66 | <pre> |
||
| 67 | # Set the Oracle home directory |
||
| 68 | 3 | BEA | ORACLE_HOME <путь ORACLE_HOME куда установлен Oracle клиент> |
| 69 | 1 | BEA | |
| 70 | # Set Oracle database connection (datasource, user, password) |
||
| 71 | ORACLE_DSN dbi:Oracle:host=<имя ПК в сети или его IP адрес>;service_name=<TNS имя вашего сервера>;port=<порт> |
||
| 72 | 3 | BEA | ORACLE_USER <имя пользователся администратора Омеги> |
| 73 | ORACLE_PWD <пароль пользователся администратора Омеги> |
||
| 74 | 1 | BEA | </pre> |
| 75 | 3 | BEA | ## Проверьте соединение с помощью команды: |
| 76 | <pre><code class="shell"> |
||
| 77 | 1 | BEA | ora2pg -t SHOW_VERSION -c /путь/к/вашему/ora2pg.conf |
| 78 | 3 | BEA | </code></pre> |
| 79 | 1 | BEA | или |
| 80 | 3 | BEA | <pre><code class="shell"> |
| 81 | ora2pg -c <путь к вашему ora2pg.conf> -e "SELECT * FROM dual;" |
||
| 82 | </code></pre> |
||
| 83 | 1 | BEA | Если соединение успешно, вы увидите ответ или версию базы данных. |
| 84 | |||
| 85 | 3 | BEA | h3. Подготовка к миграции: развёртывание PostgreSQL и приведение к одинаковой версии с Oracle |
| 86 | 1 | BEA | |
| 87 | 3 | BEA | # Установить PostgreSQL. Инструкция по установке: [[PostgreInstall|ссылка]] |
| 88 | # Произвести импорт стартовой версии БД Omega Production: |
||
| 89 | ## Дамп БД брать из нашего фтп сервера: ftp://demo:demo@internal.omp-system.ru/ServerDistr/DB/omp/dmp/postgres/omp_adm.sql |
||
| 90 | ## Рекомендуется переименовать базу данных в содержимом дампа на ту же что у вас сейчас на оракл. |
||
| 91 | То есть к примеру если у вас пользователь администратор омеги именуется как test_adm то ваша база данных именуется как test_adm. |
||
| 92 | В таком примере необходимо открыть дамп как текстовый файл и заменить по всему файлу OMP_ADM на TEST_ADM. (именно заглавными но в поиске/замене отключаем учитывание регистра) |
||
| 93 | ## Произвести импорт дампа при помощи консольных скриптов описанные в инструкции импорта/экспорта дампа: [[PostgreImportExport|ссылка]] |
||
| 94 | # Выслать отделу сопровождения текущую версию скриптов указанную в окне "О программе" внутри приложения Omega Production и написать чтобы прислали набор скриптов для обновления версии скриптов базы данных |
||
| 95 | # Проверить подключение к базе данных на устройстве на котором ранее устанавливали ora2pg |
||
| 96 | ## Используйте следующую команду для подключения: |
||
| 97 | <pre><code class="shell"> |
||
| 98 | psql -h <имя ПК в сети или его IP адрес> -p <порт> -U <пользователь> -d <имя_базы> |
||
| 99 | </code></pre> |
||
| 100 | Где: |
||
| 101 | - <пользователь> - имя пользователя администратора базы данных |
||
| 102 | - <имя_базы> - такое же как и имя пользователя администратора базы данных |
||
| 103 | При подключении вас попросят ввести пароль. |
||
| 104 | ## Проверка соединения |
||
| 105 | После успешного подключения вы увидите приглашение вида: |
||
| 106 | <pre> |
||
| 107 | <имя базы>=# |
||
| 108 | </pre> |
||
| 109 | Это означает, что соединение установлено. |
||
| 110 | ## Выполнение простых команд для проверки базы |
||
| 111 | ##* Проверка версий PostgreSQL: |
||
| 112 | <pre><code class="sql"> |
||
| 113 | SELECT version(); |
||
| 114 | </code></pre> |
||
| 115 | ##* Проверка содержимого OMP_PROPERTIES: |
||
| 116 | <pre><code class="sql"> |
||
| 117 | SELECT * FROM omp_properties op order by op.code LIMIT 10; |
||
| 118 | </code></pre> |
||
| 119 | ##* Выйти из psql: |
||
| 120 | <pre><code class="sql"> |
||
| 121 | \q |
||
| 122 | </code></pre> |
||
| 123 | # Дождаться ответа от нашего отдела сопровождения и получить набор скриптов для обновления базы данных. |
||
| 124 | ## В наборе скриптов должен присутствовать @run.bat@. Открыть его для редактирования и подправить параметры подключения к базе данных. |
||
| 125 | Содержимое данного скрипта будет из себя представлять уже ранее указанный в этой инструкции @psql ....@ |
||
| 126 | ## Дождаться конца выполнения. Проверить созданный лог на наличие ошибок. |
||
| 127 | Стандартный формат ошибок у PostgreSQL: :ERROR: на английском или :ОШИБКА: на русском в зависимости от выбранного языка при установке СУБД. |
||
| 128 | Если ошибки присутствуют то связаться с нами по вопросу их устранений |
||
| 129 | 2 | BEA | |
| 130 | 3 | BEA | *ВНИМАНИЕ: после данного этапа необходимо приостановить установку обновлений* |
| 131 | 2 | BEA | |
| 132 | 3 | BEA | h3. Миграция: выгрузка из Oracle |
| 133 | 1 | BEA | |
| 134 | 3 | BEA | # Скачайте указанные ниже файлы из это вики: |
| 135 | #* |
||
| 136 | #* |
||
| 137 | # Отредактируйте файлы указав свои настройки в ниже перечисленных местах |
||
| 138 | <pre> |
||
| 139 | # Set the Oracle home directory |
||
| 140 | ORACLE_HOME <путь ORACLE_HOME куда установлен Oracle клиент> |
||
| 141 | |||
| 142 | # Set Oracle database connection (datasource, user, password) |
||
| 143 | ORACLE_DSN dbi:Oracle:host=<имя ПК в сети или его IP адрес>;service_name=<TNS имя вашего сервера>;port=<порт> |
||
| 144 | ORACLE_USER <имя пользователся администратора Омеги> |
||
| 145 | ORACLE_PWD <пароль пользователся администратора Омеги> |
||
| 146 | </pre> |
||
| 147 | <pre> |
||
| 148 | # Oracle schema/owner to use |
||
| 149 | SCHEMA <имя пользователя администратора> |
||
| 150 | </pre> |
||
| 151 | h3. Миграция: загрузка в PostgreSQL |
||
| 152 | |||
| 153 | 1 | BEA | |
| 154 | Если возникнут сложности — предоставьте вывод ошибок, я помогу их интерпретировать! |