Прокси-транслятор запросов между Oracle и PostgreSQL
и инструменты миграции баз данных.
Высокая степень совместимости SQL-запросов обеспечивает бесшовную интеграцию
Минимизация усилий миграции благодаря автоматизированным инструментам
Поддержка PL/SQL и других ключевых функций Oracle для удобства использования
Высокая производительность и надежность для обеспечения стабильной работы
Прокси-транслятор запросов O2PG предназначен для облегчения миграции баз данных с Oracle на PostgreSQL.
Он обеспечивает совместимость на уровне SQL-запросов, позволяя приложениям, изначально разработанным для Oracle, работать с PostgreSQL без необходимости изменений в коде конечного приложения.
Предположим, в вашей инфраструктуре ранее использовался и/или все еще используется Oracle Database. Однако, в современных условиях, продолжать использовать Oracle становится все сложнее...
PostgreSQL, с его открытым исходным кодом, расширяемостью и активным сообществом, становится все более привлекательной альтернативой.
Тем не менее, переход с Oracle на PostgreSQL может быть сложным из-за различий в SQL-диалектах и функциональных возможностях.
Здесь на помощь приходит O2PG.
Наш продукт состоит из 2 основных компонентов:
С помощью O2PG вы можете значительно сократить время и усилия, необходимые для миграции, минимизируя при этом риски и потенциальные сбои.
Все, что вам нужно сделать, это настроить ваши приложения на использование прокси-сервера O2PG вместо прямого подключения к Oracle и разово
выполнить миграцию данных с помощью нашего инструмента миграции.
Прокси-сервер позаботится обо всем остальном, обеспечивая плавный переход к PostgreSQL.
Ниже приведён типовой пример конфигурации и шаги для быстрого развёртывания O2PG Proxy с помощью Docker Compose.
services:
proxy:
image: cr.yandex/crpgr3sfcpa3lqqkvupn/o2pg-proxy:latest
ports:
- "1521:1521"
environment:
POSTGRES_HOST: localhost
POSTGRES_PORT: 5432
POSTGRES_DB: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
env_file:
- config.env
Запустите контейнер в фоновом режиме:
docker compose up -d
Убедитесь, что в вашем docker-compose.yml заданы параметры подключения к целевой базе PostgreSQL:
POSTGRES_HOST — IP или хост PostgreSQL (по умолчанию localhost).POSTGRES_PORT — порт PostgreSQL (по умолчанию 5432).POSTGRES_DB — имя базы данных (по умолчанию postgres).POSTGRES_USER — имя пользователя (по умолчанию postgres).POSTGRES_PASSWORD — пароль пользователя.Рядом с docker-compose.yml создайте файл config.env со следующим содержимым:
LICENSE=<ваш_лицензионный_ключ>
Без корректного лицензионного ключа прокси не запустится — убедитесь, что ключ действителен.
После успешного запуска прокси будет доступен на порту 1521 хоста (в примере выше — проброшен на тот же порт внешнего хоста).
POSTGRES_HOST и порт и при необходимости настройте сеть Docker.1521 занят, измените маппинг в секции ports на доступный порт хоста.Ниже приведён перечень типовых Oracle‑типов и их описание.
На текущий момент поддерживаются не все типы данных, но та часть, поддержка которой уже реализована включает наиболее часто используемые типы и покрывает большинство сценариев использования баз данных Oracle в реальных приложениях.
Список поддерживаемых типов данных будет расширяться в будущих версиях продукта.
| Код | Тип данных | Описание |
|---|---|---|
| 1 | `VARCHAR2(size)` | Строка символов переменной длины, максимальная длина указывается в `size`. |
| 1 | `NVARCHAR2(size)` | Строка Unicode переменной длины, содержащая до `size` символов. |
| 2 | `NUMBER(p, s)` | Число с точностью `p` и масштабом `s`. Точность `p` от 1 до 38; масштаб `s` от -84 до 127. Для хранения требуется от 1 до 22 байт. |
| 8 | `LONG` | Символьные данные переменной длины до 2 ГБ (предназначено для обратной совместимости). |
| 12 | `DATE` | Диапазон: с 01.01.4712 до 31.12.9999. Формат определяется `NLS_DATE_FORMAT` или `NLS_TERRITORY`. Размер фиксирован — 7 байт; содержит год, месяц, день, час, минуту и секунду. |
| 100 | `BINARY_FLOAT` | 32‑битное число с плавающей запятой (4 байта). |
| 101 | `BINARY_DOUBLE` | 64‑битное число с плавающей запятой (8 байт). |
| 180 | `TIMESTAMP[(fractional_seconds_precision)]` | Значение даты и времени с опцией дробной части секунд (`fractional_seconds_precision` от 0 до 9, по умолчанию 6). |
| 181 | `TIMESTAMP[(fractional_seconds_precision)] WITH TIME ZONE` | Как `TIMESTAMP`, плюс смещение часового пояса. |
| 231 | `TIMESTAMP[(fractional_seconds_precision)] WITH LOCAL TIME ZONE` | Как `TIMESTAMP WITH TIME ZONE`, но при хранении нормализуется по часовому поясу базы; при извлечении показывается в часовом поясе сеанса. |
| 182 | `INTERVAL YEAR[(year_precision)] TO MONTH` | Период в годах и месяцах. `year_precision` от 0 до 9 (по умолчанию 2). Размер — 5 байт. |
| 183 | `INTERVAL DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)]` | Период в днях, часах, минутах и секундах. `day_precision` от 0 до 9 (по умолчанию 2). `fractional_seconds_precision` от 0 до 9 (по умолчанию 6). |
| 23 | `RAW(size)` | Необработанные двоичные данные длиной `size` байт. Максимум: 32767 байт при `MAX_STRING_SIZE = EXTENDED`, 2000 байт при `STANDARD`. |
| 24 | `LONG RAW` | Необработанные двоичные данные переменной длины до 2 ГБ. |
| 69 | `ROWID` | Адрес строки в таблице в Base64 — используется для значений псевдостолбца `ROWID`. |
| 208 | `UROWID[(size)]` | Логический адрес строки таблицы, организованной по индексу. Необязательный `size` (по умолчанию максимум — 4000 байт). |
| 96 | `CHAR[(size [BYTE/CHAR])]` | Символьные данные фиксированной длины (`size`). Максимум 2000 байт. `BYTE`/`CHAR` определяют семантику, аналогичную `VARCHAR2`. |
| 96 | `NCHAR[(size)]` | Символьные данные фиксированной длины `size` (национальный набор символов). Максимум зависит от кодировки (AL16UTF16 до 2×size байт, UTF8 до 3×size байт), верхний предел — 2000 байт. |
| 112 | `CLOB` | Большой символьный объект (однобайтовые или многобайтовые символы). Максимум: (4 ГБ - 1) * размер блока БД. |
| 112 | `NCLOB` | Большой символьный объект Unicode. Максимум: (4 ГБ - 1) * размер блока БД. |
| 113 | `BLOB` | Большой двоичный объект. Максимум: (4 ГБ - 1) * размер блока БД. |
| 102 | `REF CURSOR` | Тип переменной, содержащий ссылку на курсор; используется для передачи наборов данных из хранимых процедур. |
* Точность может находиться в пределах от 1 до 18.
* Специальные типы данных (например, `osg`, `xml` и т.д.) не поддерживаются.
Информация о поддержке TTC функций.
Мы ценим наших клиентов и гордимся тем, что они говорят о нашем продукте:
"O2PG помог нам быстро и эффективно перенести наши базы данных с Oracle на PostgreSQL. Простота установки и использования прекрасно дополняется отличной поддержкой. Высокая совместимость и надёжность поставленных решений впечатлили нас."
- Компания ABC