Data Transform


DATATRANSFORM

O2PG Migrator

Инструмент для автоматизированной миграции схем и данных с Oracle на PostgreSQL.

Ключевые возможности

Конвертация схем

Автоматическая генерация DDL для PostgreSQL с учётом типов данных, ограничений и индексов.

Миграция данных

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

Адаптация PL/SQL

Помощь в преобразовании PL/SQL в аналоги PostgreSQL либо временная поддержка через прокси.

Валидация и тесты

Сценарии валидации данных, регрессионные тесты и отчёты о разнице между источником и приёмником.

О продукте

O2PG Migrator — компонент семейства O2PG, отвечающий за перенос структур БД и данных из Oracle в PostgreSQL. Предназначен для сценариев, где требуется аккуратная конвертация объектов базы, сохранение бизнес‑логики и минимизация простоев.

  • Автоматическая и полуавтоматическая конвертация схем
  • Поддержка переноса больших объёмов данных (batch, streaming)
  • Инструменты проверки целостности и отчётности
  • Интеграция с O2PG Proxy для плавной работы приложений во время миграции

Быстрый старт

O2PG Migrator можно запустить как отдельный контейнер или использовать в составе CI/CD‑пайплайна. Типовой рабочий поток:

  1. Аудит схем и данных (scan)
  2. Генерация DDL и маппинг типов
  3. Перенос справочников и небольших таблиц (pilot)
  4. Перенос основного объёма данных пакетами с проверками
  5. Синхронизация дельт и cut‑over

Пример запуска (контейнер):

docker run --rm -v /path/to/config:/app/config cr.yandex/o2pg/migrator:latest --config /app/config/migrator.yaml

Примечания

O2PG Migrator не стремится быть универсальным для всех возможных PL/SQL конструкций — в сложных случаях мы предлагаем гибридный сценарий с использованием O2PG Proxy и ручной адаптацией критичных процедур.

Примеры конфигурации

docker-compose.yml

services:
  migrator:
    image: cr.yandex/crpgr3sfcpa3lqqkvupn/o2pg-migrator:latest
    volumes:
      - ./migrator-config:/app/config
    environment:
      - MIGRATOR_CONFIG=/app/config/migrator.yaml
    restart: on-failure

migrator.yaml

source:
  type: oracle
  dsn: "oracle://user:pass@oracle-host:1521/ORCL"
target:
  type: postgres
  dsn: "postgresql://user:pass@pg-host:5432/postgres"
mapping:
  default_varchar_size: 4000
  clob_to_text: true
batch:
  size: 10000
  parallel_workers: 4
validation:
  enabled: true
  checksum: md5

Запуск в контейнере

docker run --rm -v ${{ secrets.CONFIG }}:/app/config cr.yandex/o2pg/migrator:latest --config /app/config/migrator.yaml

FAQ

Можно ли выполнять миграцию без простоя?

Полностью избежать простоя не всегда возможно; стандартный подход — минимизировать окно cut‑over: перенести историю и большую часть данных до cut‑over, затем синхронизировать дельты и переключиться.

Поддерживаются ли materialized views и сложные триггеры?

Материализованные представления и триггеры обрабатываются индивидуально: мигратор генерирует DDL и предлагает стратегию переноса, но сложные триггеры могут потребовать ручной доработки.

Как получить лицензию?

Нажмите кнопку «Запросить лицензию» ниже или свяжитесь с менеджером — после проверки мы выдадим ключ в файл config.env для использования в контейнере.