Data Transform


DATATRANSFORM

O2PG


Прокси-транслятор запросов между Oracle и PostgreSQL и инструменты миграции баз данных.

Основные преимущества

Совместимость SQL-запросов

Высокая степень совместимости SQL-запросов обеспечивает бесшовную интеграцию

Минимизация усилий

Минимизация усилий миграции благодаря автоматизированным инструментам

Поддержка PL/SQL

Поддержка PL/SQL и других ключевых функций Oracle для удобства использования

Производительность

Высокая производительность и надежность для обеспечения стабильной работы

Инструкции и документация

  • О продукте
  • Инструкция по установке
  • Поддержка типов данных
  • Поддержка встроенных функций
  • Поддержка TTC функций

О продукте

Прокси-транслятор запросов O2PG предназначен для облегчения миграции баз данных с Oracle на PostgreSQL.

Он обеспечивает совместимость на уровне SQL-запросов, позволяя приложениям, изначально разработанным для Oracle, работать с PostgreSQL без необходимости изменений в коде конечного приложения.

Предположим, в вашей инфраструктуре ранее использовался и/или все еще используется Oracle Database. Однако, в современных условиях, продолжать использовать Oracle становится все сложнее...

PostgreSQL, с его открытым исходным кодом, расширяемостью и активным сообществом, становится все более привлекательной альтернативой. Тем не менее, переход с Oracle на PostgreSQL может быть сложным из-за различий в SQL-диалектах и функциональных возможностях.

Здесь на помощь приходит O2PG. O2PG Diagram

Наш продукт состоит из 2 основных компонентов:

  • Прокси-сервер, который перехватывает SQL-запросы, исходящие от приложений, и преобразует их в совместимый с PostgreSQL формат.
  • Мигратор базы данных, который помогает перенести схемы и данные из Oracle в PostgreSQL.



С помощью O2PG вы можете значительно сократить время и усилия, необходимые для миграции, минимизируя при этом риски и потенциальные сбои. Все, что вам нужно сделать, это настроить ваши приложения на использование прокси-сервера O2PG вместо прямого подключения к Oracle и разово выполнить миграцию данных с помощью нашего инструмента миграции.

Прокси-сервер позаботится обо всем остальном, обеспечивая плавный переход к PostgreSQL.

Инструкция по установке

Ниже приведён типовой пример конфигурации и шаги для быстрого развёртывания O2PG Proxy с помощью Docker Compose.

1. Пример docker-compose.yml

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

2. Сборка и запуск

Запустите контейнер в фоновом режиме:

docker compose up -d

3. Переменные подключения к PostgreSQL

Убедитесь, что в вашем docker-compose.yml заданы параметры подключения к целевой базе PostgreSQL:

  • POSTGRES_HOST — IP или хост PostgreSQL (по умолчанию localhost).
  • POSTGRES_PORT — порт PostgreSQL (по умолчанию 5432).
  • POSTGRES_DB — имя базы данных (по умолчанию postgres).
  • POSTGRES_USER — имя пользователя (по умолчанию postgres).
  • POSTGRES_PASSWORD — пароль пользователя.

4. Файл config.env (лицензия)

Рядом с docker-compose.yml создайте файл config.env со следующим содержимым:

LICENSE=<ваш_лицензионный_ключ>

Без корректного лицензионного ключа прокси не запустится — убедитесь, что ключ действителен.

5. Проверка

После успешного запуска прокси будет доступен на порту 1521 хоста (в примере выше — проброшен на тот же порт внешнего хоста).

6. Примечания и рекомендации

  • Если PostgreSQL запущен в отдельном контейнере или на другом хосте, укажите соответствующий POSTGRES_HOST и порт и при необходимости настройте сеть Docker.
  • При развёртывании в продакшн-окружении рекомендуется хранить секреты в безопасном хранилище (например, Docker secrets или внешняя система управления секретами), а не в явном виде в файлах.
  • Если порт 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 functions

Информация о поддержке TTC функций.

Отзывы наших клиентов

Мы ценим наших клиентов и гордимся тем, что они говорят о нашем продукте:

"O2PG помог нам быстро и эффективно перенести наши базы данных с Oracle на PostgreSQL. Простота установки и использования прекрасно дополняется отличной поддержкой. Высокая совместимость и надёжность поставленных решений впечатлили нас."

- Компания ABC