Проект

Общее

Профиль

Migration OraToPG » История » Версия 2

BEA, 06.06.2025 07:36

1 1 BEA
h1. Миграция с Oracle на PostgreSQL
2
3
h2. Миграция на операционной системе Windows
4
5
# Установка Perl
6
Скачайте и установите "Strawberry Perl":https://strawberryperl.com/. После установки убедитесь, что Perl добавлен в переменную среды *@PATH@*.
7
Проверьте установку выполнив команду:
8
<pre><code class="shell">
9
perl -v
10
</code></pre>
11
# Установка Oracle Client. Уже описан процесс в нашей инструкции: [[OracleInstall|ссылка]]  
12
(Опционально) Создайте переменную среды TNS_ADMIN и укажите путь к файлу tnsnames.ora, если он используется.
13
# Установка зависимостей Perl
14
Откройте командную строку (cmd.exe) от имени администратора и выполните:
15
<pre><code class="perl">
16
cpan DBI
17
cpan DBD::Oracle
18
cpan DBD::Pg
19
cpan XML::Simple
20
cpan DateTime
21
cpan JSON
22
cpan Term::ReadKey
23
cpan Test::Simple
24
</code></pre>
25
*Для установки модулей может потребоваться доступ в интернет и права администратора.*
26
# Установка ora2pg
27 2 BEA
## 2 варианта для скачивания
28
### Перейдите на их "оффициальный сайт":https://ora2pg.darold.net/. Найдите на сайте и перейлите по ссылке "GitHub Download v<version>". Скачиваем архив с исходниками:
29
!clipboard-202506060714-uwsux.png!
30
### Если у вас установлен git то откройте консоль и перейдите в то местоположение куда хотите скачать. Выполните команду:
31
<pre><code class="shell">
32
git clone https://github.com/darold/ora2pg.git
33
</code></pre>
34
## Перейдите в папку с исходниками:
35
<pre><code class="shell">
36
cd ora2pg
37
</code></pre>
38 1 BEA
Установите:
39 2 BEA
<pre><code class="shell">
40
perl Makefile.PL
41
dmake
42
dmake install
43
</code></pre>
44
*Примечание:* Если dmake не найден, используйте gmake или nmake (входит в Strawberry Perl).
45
## Проверка установки
46
<pre><code class="shell">
47
ora2pg --version
48
</code></pre>
49 1 BEA
Если команда возвращает версию — установка прошла успешно.
50 2 BEA
# Скопируйте @tnsnames.ora@ из вашего рабочего клиента или сервера базы данных Oracle. Подробнее что за файл и откуда брать: [[Oracle|ссылка]] 
51
# Проверка подключения к Oracle
52
## Создайте конфигурационный файл ora2pg.conf или возьмите в шаблон из файлов где установлен ora2pg.
53
Пример минимальной конфигурации:
54
<pre>
55
# Set the Oracle home directory
56
ORACLE_HOME	<путь куда установлен Oracle клиент (к примеру @C:\app\product\12.1.0\dbhome_1@)>
57
58
# Set Oracle database connection (datasource, user, password)
59
ORACLE_DSN	dbi:Oracle:host=<имя ПК в сети или его IP адрес>;service_name=<TNS имя вашего сервера>;port=<порт>
60
ORACLE_USER	omsk_adm
61
ORACLE_PWD	omsk_adm
62
</pre>
63
# Конфигурация для подключения к Oracle
64
ORACLE_DSN     = dbi:Oracle:host=oracle_host;sid=ORCL;port=1521
65
ORACLE_USER    = your_oracle_username
66
ORACLE_PWD     = your_oracle_password
67
2.2. Проверьте соединение с помощью команды:
68
bash
69
Копировать код
70
ora2pg -t SHOW_VERSION -c /путь/к/вашему/ora2pg.conf
71
или
72
73
bash
74
Копировать код
75
ora2pg -c /путь/к/вашему/ora2pg.conf -e "SELECT * FROM dual;"
76
Если соединение успешно, вы увидите ответ или версию базы данных.
77
78
2.3. Логика проверки:
79
Отсутствие ошибок в выводе.
80
Получение ожидаемых данных.
81
3. Проверка подключения к PostgreSQL
82
3.1. Создайте конфигурационный файл ora2pg.conf или используйте параметры командной строки.
83
Пример минимальной конфигурации:
84
85
ini
86
Копировать код
87
# Конфигурация для подключения к PostgreSQL
88
PG_DSN       = dbi:Pg:dbname=your_db;host=postgres_host;port=5432
89
PG_USER      = your_postgres_username
90
PG_PWD       = your_postgres_password
91
3.2. Проверьте соединение командой:
92
bash
93
Копировать код
94
ora2pg -t SHOW_VERSION -c /путь/к/вашему/ora2pg.conf
95
или выполните простую команду:
96
97
bash
98
Копировать код
99
ora2pg -c /путь/к/вашему/ora2pg.conf -e "SELECT version();"
100
Если соединение успешно, вы увидите версию PostgreSQL.
101
102
4. Общие рекомендации
103
Убедитесь, что драйверы установлены и доступны.
104
Проверьте сетевое подключение (ping, telnet) до серверов.
105
Внимательно изучите вывод ошибок — они подскажут причину проблем.
106
Для диагностики можно включить подробный лог:
107
ini
108
Копировать код
109
LOG_LEVEL   = DEBUG
110
или добавить флаг -v при запуске.
111
112
Итог:
113
Если команды возвращают ожидаемые результаты без ошибок, значит подключение настроено правильно.
114
115
Если возникнут сложности — предоставьте вывод ошибок, я помогу их интерпретировать!