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 | Если возникнут сложности — предоставьте вывод ошибок, я помогу их интерпретировать! |