Уход с Oracle без переписывания приложений

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

data-transform.ru
ЛИСТАЙТЕ ВНИЗ

01 Проблема

Уйти с Oracle нужно. Переписывать приложения — нельзя

Это и есть конфликт, ради которого существует наш продукт: экономические и инфраструктурные причины толкают к переходу, а техническая связанность держит на месте.

Что толкает уходить

  • Стоимость лицензий и поддержки — прямая статья OPEX, которая растёт вместе с ядрами.
  • Ограничения поставки и обновлений — доступ к патчам и новым версиям перестал быть данностью.
  • Зависимость от одного вендора в критичном слое инфраструктуры.
  • PostgreSQL стал реальной альтернативой — открытый код, расширяемость, активное сообщество.

Что держит на месте

  • Диалект SQL и типы данных различаются — «просто перенести» не получается.
  • Бизнес-логика живёт в БД: PL/SQL-процедуры, триггеры, сложные представления.
  • Жёсткие требования по простою — окна на переключение измеряются часами.
  • Десятки приложений и интеграций, которые никто не готов переписывать разом.

01 Проблема Цена недооценки

Почему миграции срываются

В проектах миграции техническая сложность накладывается на бизнес-ограничения. Каждый из этих факторов по отдельности решаем — вместе они выносят проект за рамки бюджета и сроков.

Тесно связанные сервисы

Одна база обслуживает десятки потребителей — переключить «по одному» нечего.

Критичные отчётные процессы

Регуляторная и управленческая отчётность не терпит расхождений в данных.

Нестандартный PL/SQL

Процедуры и скрипты, написанные под конкретные возможности Oracle.

Жёсткие окна простоя

Бизнес готов дать часы, а не выходные — и не готов к откату «наугад».

Если игнорировать

Неожиданные задержки Превышение бюджета Риски для бизнеса

02 Кто мы

Инженерная команда, у которой одна специализация

Мы переводим промышленные системы с Oracle на PostgreSQL — и делаем это не набором разовых скриптов, а как проект с этапами, критериями приёмки и ответственностью за прод.

Охват

Весь цикл, а не кусок

От первой встречи со стейкхолдерами до эксплуатации на новой БД. Одна команда отвечает за аудит, перенос, оптимизацию и поддержку.

Инструменты

Свой софт, а не только консалтинг

Мы разрабатываем O2PG — прокси-транслятор протокола Oracle и мигратор схем. Там, где другие предлагают переписывать код, у нас есть продукт.

Ответственность

Остаёмся после cut-over

Мониторинг, разбор инцидентов, health-checks и обучение вашей команды. Реакция по SLA, вплоть до 24/7 на критичных инцидентах.

02 Кто мы Услуги

Четыре направления работ

Проект можно взять целиком или подключить нас на отдельном участке — например, только на аудите или только на оптимизации после переноса.

Аудит и план миграции

Оценка текущей архитектуры, определение рисков и детальный план миграции с учётом бизнес-требований и SLA.

Миграция схем и данных

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

Трансляция запросов и совместимость

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

Performance & Support

Оптимизация производительности на PostgreSQL, сопровождение и обучение команд заказчика.

03 Подход Принципы

Мы работаем на предсказуемость, а не на скорость

Риски выявляются на этапе подготовки, а не в ночь переключения. Это дороже на старте и заметно дешевле в сумме.

Принцип 1

Риски — заранее

Типовые и специфические несовместимости выявляем на этапе подготовки, до того как они станут инцидентом в проде.

Следствие: сюрпризы переезжают из cut-over в аудит.
Принцип 2

Этапы — контролируемые

Большая миграция разбита на итерации с согласованными критериями приёмки — и с явными критериями отката для каждой.

Следствие: в любой момент понятно, где мы и как вернуться назад.
Принцип 3

Люди — часть плана

Разделение ролей, план коммуникаций и отчётности, обучение вашей команды. Организационные решения снижают операционные риски не меньше технических.

Следствие: после проекта система остаётся управляемой вашей командой.

03 Подход Этапы

Шесть этапов нашей работы

Порядок здесь важен: каждый следующий этап опирается на артефакты предыдущего, поэтому пропустить аудит и приступить сразу к миграции не выйдет.

01

Консалтинг

Встреча со стейкхолдерами, бизнес-цели, SLA, ограничения. Оценка экономики перехода — CAPEX/OPEX и экономия на лицензиях.

РезультатДорожная карта с KPI
02

Аудит

Схемы, объёмы, типы, функции, триггеры, внешние зависимости. Разбор планов выполнения и «тяжёлых» операторов.

РезультатКарта рисков и трудоёмкость
03

План работ

Итерации, среды dev/stage/prod, сценарии тестирования, план синхронизации данных и минимизации простоя.

РезультатПлан с критериями отката
04

Миграция

Таблицы, ограничения, последовательности, индексы, триггеры, представления, функции, права. Сначала справочники, затем транзакционные данные.

РезультатРабочая схема на PostgreSQL
05

Оптимизация

Бенчмарки, профилирование, execution plans. Индексы, рефакторинг запросов, настройка shared_buffers, work_mem, autovacuum.

РезультатОтчёт о приросте производительности
06

Поддержка

Мониторинг, инциденты, бэкапы и восстановление, патчинг. Приоритеты по SLA, регулярные health-checks.

РезультатЭксплуатация и обучение

03 Подход План-график

Как это ложится в календарь

Приближённый к реальности график на 13 недель. Точные сроки зависят от объёма данных, числа схем и сложности PL/SQL-логики — но пропорции этапов держатся.

Этап
123456 78910111213
Discovery / Аудит
Подготовка целевой структуры
Миграция схем данных
Триггеры insert / update / delete
Миграция холодных данных
Синхронизация и dry-run
Cut-over — переключение прода
Пост-миграционная оптимизация
Передача знаний и поддержка

Больше половины графика — до переключения. Cut-over короткий именно потому, что история и основной объём данных перенесены заранее, а к моменту переключения остаются только дельты.

04 Инструменты Ключевая идея

Прокси говорит с приложением на языке Oracle

Приложение продолжает подключаться так, будто перед ним Oracle: тот же протокол, тот же порт, тот же драйвер. За прокси уже PostgreSQL. Переход для приложения — это смена строки подключения.

как было

Ваше приложение

JDBC / OCI, код и запросы без изменений

что добавляется

O2PG Proxy

Разбирает протокол Oracle, транслирует SQL, типы и вызовы функций в эквиваленты PostgreSQL

как стало

PostgreSQL

Схема и данные, перенесённые O2PG Migrator

Миграция становится обратимой

Прокси можно включить и выключить. Откат — это возврат строки подключения, а не откат релиза.

Приложения переключаются по одному

Гибридные сценарии: часть систем уже на PostgreSQL, часть ещё на Oracle — параллельный запуск допустим.

PL/SQL переписывается не спеша

Прокси даёт временную совместимость, пока критичные процедуры адаптируются в спокойном режиме.

04 Инструменты Продукт 1 из 2

O2PG Connector — прокси-транслятор запросов

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

Совместимость SQL

Высокая степень совместимости запросов — интеграция без правок на стороне приложения.

Минимум усилий

Автоматизированная трансляция вместо ручного переписывания запросов.

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

Ключевые конструкции и функции Oracle обрабатываются на лету.

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

Прокси рассчитан на промышленную нагрузку и стабильную работу под ней.

Что покрыто трансляцией

  • Типы данных — VARCHAR2, NUMBER, DATE, TIMESTAMP (в т. ч. WITH TIME ZONE), INTERVAL, RAW, CHAR/NCHAR, CLOB/NCLOB, BLOB, ROWID, REF CURSOR и другие.
  • Встроенные функции — числовые, символьные, работа с датами, преобразования и NLS-варианты.
  • TTC-функции протокола — уровень, на котором драйвер Oracle общается с сервером: описание курсоров, выборка, LOB-операции, piggyback-запросы.

Покрыты наиболее частотные типы и функции — те, что закрывают большинство реальных сценариев. Полные перечни — на странице O2PG‑коннектора.

04 Инструменты Продукт 2 из 2

O2PG Migrator — перенос схем и данных

Второй компонент семейства: аккуратная конвертация объектов базы, перенос больших объёмов данных и проверка того, что источник и приёмник совпали.

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

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

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

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

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

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

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

Сценарии валидации, регрессионные тесты и отчёты о расхождениях.

Типовой рабочий поток

  • scan — аудит схем и данных
  • generate — DDL и маппинг типов
  • pilot — справочники и небольшие таблицы
  • bulk — основной объём пакетами с проверками
  • delta & cut-over — синхронизация дельт и переключение
# migrator.yaml
source:  { type: oracle,   dsn: "oracle://…:1521/ORCL" }
target:  { type: postgres, dsn: "postgresql://…:5432/db" }
mapping: { default_varchar_size: 4000, clob_to_text: true }
batch:   { size: 10000, parallel_workers: 4 }
validation: { enabled: true, checksum: md5 }

Мигратор не претендует на автоматический перенос любых PL/SQL-конструкций: в сложных случаях мы предлагаем гибридный сценарий — прокси плюс ручная адаптация критичных процедур. Подробности — на странице O2PG‑мигратора.

04 Инструменты Развёртывание

Запуск занимает один docker compose up

Прокси поставляется контейнером. Всё, что требуется, — указать параметры целевого PostgreSQL, положить рядом лицензионный ключ и перенаправить приложение на порт 1521 прокси.

# docker-compose.yml
services:
  proxy:
    image: cr.yandex/…/o2pg-proxy:latest
    ports:  [ "1521:1521" ]
    environment:
      POSTGRES_HOST: pg-host
      POSTGRES_PORT: 5432
      POSTGRES_DB:   postgres
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: ••••••
    env_file: [ config.env ]   # LICENSE=…

Что меняется в вашей инфраструктуре

  • В приложении — только адрес БД. Драйвер, пул соединений, код запросов остаются прежними.
  • Порт — прокси слушает 1521, привычный для Oracle-клиентов. Если порт занят, маппинг меняется в ports.
  • Секреты — в проде храним в Docker secrets или внешнем хранилище, а не в файлах открытым текстом.
  • Лицензия — ключ в config.env; без действующего ключа прокси не стартует.

Мигратор разворачивается тем же способом — отдельным контейнером с примонтированным каталогом конфигурации.

04 Инструменты Проверка

Совместимость проверяется на реальном трафике

Прокси притворяется Oracle на уровне протокола TNS — а разные версии драйвера гонят по проводу заметно разный трафик. Поэтому регрессия гоняется не на одном драйвере, а на матрице версий и на живых приложениях.

Матрица драйверов Oracle JDBC

ЛинейкаВерсияСостояние
ojdbc8 19c19.32.0.0с ограничением
ojdbc8 23ai23.2.0.0проходит полностью
ojdbc11 23ai23.26.3.0.0проходит полностью
ojdbc17 23ai23.26.3.0.0проходит полностью

Линейка 23ai проверяется по краям диапазона — на 23.2 и 23.26, поэтому промежуточные релизы 23.x также поддерживаются. Драйверы старше 19c не поддерживаются. Известное ограничение на ojdbc8 19.x — временные LOB через LOB API; обходится обычными setString / setBytes.

Стенды с настоящими приложениями

  • Apache OFBiz — полноценная ERP поверх прокси: сотни таблиц, загрузка справочников, реальный ORM-трафик.
  • Swingbench — отраслевой генератор OLTP-нагрузки: конкурентные транзакции и длительные прогоны.
  • Oracle REST Data Services — проверка того, как прокси держит клиентов, рассчитанных на «настоящий» Oracle.

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

05 Результат

Что получает заказчик

Не выгрузку базы, а работающую систему на PostgreSQL — с проверенными данными, измеренной производительностью и командой, которая умеет её вести.

  • Работающую систему на PostgreSQL — со схемой, данными и бизнес-логикой, прошедшими валидацию против источника.
  • Минимальное окно простоя — история и основной объём перенесены заранее, на cut-over остаются дельты.
  • Снижение затрат на лицензии и уход от зависимости от одного вендора.
  • Отчёт по производительности — с конкретными индексами, запросами и конфигурацией сервера.
  • Команду, которая умеет это эксплуатировать — обучение и передача знаний входят в проект.

Как фиксируется результат

  • Сверка данных — контрольные суммы источника и приёмника совпадают.
  • Регрессия приложения — согласованные сценарии проходят на новой БД.
  • Бенчмарк на целевой нагрузке — результат не хуже исходного, расхождения объяснены.
  • Отработанный откат — план возврата проверен на dry-run, а не только описан.

Мы перевели с Oracle на PostgreSQL несколько критичных систем, добившись снижения затрат и роста производительности. Детали конкретных проектов разбираем на встрече — под NDA и с цифрами.

06 Подробно

Наш подход — детально

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

00 Общие принципы

В проектах миграции часто встречается сочетание технической сложности и бизнес‑ограничений: тесно связанные микросервисы, критичные отчётные процессы, нестандартные PL/SQL‑процедуры и скрипты, а также жёсткие требования по времени простоя. Игнорирование этих факторов приводит к неожиданным задержкам, превышению бюджета и рискам для бизнеса.

Мы ориентируемся на предсказуемость: выявляем типовые и специфические риски ещё на этапе подготовки, формируем контролируемые этапы работ и согласованные критерии приёма. Это позволяет минимизировать человеческие ошибки и управлять ожиданиями стейкхолдеров на всех стадиях проекта.

Кроме технических решений, мы предлагаем и организационные: чёткое разделение ролей, план коммуникаций и отчётности, а также тренинг для вашей команды — всё это снижает операционные риски и ускоряет результат.

01 Консалтинг

На консультационном этапе мы проводим встречу с ключевыми стейкхолдерами, чтобы понять бизнес‑цели, SLA и ограничения. Это помогает сформулировать приоритеты миграции: что важно сохранить в первую очередь, а что можно отложить на следующую итерацию.

Мы даём рекомендации по архитектуре целевой системы, предлагаем варианты гибридных сценариев (частичная миграция, параллельный запуск) и оцениваем экономику перехода — CAPEX и OPEX, потенциальную экономию на лицензиях и инфраструктуре.

В результате вы получаете дорожную карту с KPI, перечнем необходимых ресурсов и перечнем предпроектных артефактов, которые мы подготовим перед началом основных работ.

02 Аудит

Технический аудит — это детальный разбор: схемы баз данных, объёма и распределения данных, используемых типов, функций, триггеров и зависимостей внешних систем. Мы ищем узкие места и потенциальные несовместимости, которые при простом переносе приведут к ошибкам.

Аудит также включает анализ запросов и планов выполнения, поиск тяжёлых операторов и мест с высокой конкуренцией за ресурсы. Особое внимание уделяем процедурам PL/SQL, сложным представлениям и кастомным функциям — именно они чаще всего требуют адаптации.

По результатам аудита формируем отчёт с оценкой трудоёмкости, картой рисков и приоритетным списком задач для следующего этапа — подготовки и миграции.

03 Подготовка плана работ

План содержит последовательность этапов, сценарии тестирования и контроля качества, а также чёткие критерии отката. Мы разбиваем большую миграцию на управляемые итерации: подготовка окружений, синхронизация данных, пилотная миграция, нагрузочное тестирование и финальное переключение.

Для каждой итерации указываем необходимые среды (dev/stage/prod), инструкции по миграции объектов (схемы, таблицы, индексы, триггеры, представления, функции), сценарии интеграционного тестирования и регрессионные тесты.

Отдельно описываем план по синхронизации данных и минимизации простоя: подход к бэкапам, стратегии репликации и валидации целостности после переноса.

04 Миграция

Процесс миграции охватывает перенос структур и содержимого: таблицы и их ограничения, последовательности, индексы, триггеры и составные триггеры, представления, материализованные представления, функции и процедуры, а также связанные объекты (типы, схемы, права доступа).

Мы автоматизируем создание DDL для целевой БД, учитывая различия синтаксиса и типов данных. Данные переносятся пакетно с проверкой целостности — сначала базовые справочники, затем транзакционные сущности, после чего выполняется синхронизация дельт и проверка консистентности.

Важная часть — адаптация бизнес‑логики: преобразование PL/SQL в эквиваленты PostgreSQL, использование O2PG для проксирования или временной трансляции запросов, чтобы приложение продолжало работать без существенных изменений.

05 Анализ и оптимизация

После миграции мы проводим всесторонний анализ производительности: бенчмарки, профилирование запросов, сбор и разбор execution plans. Это позволяет выявить реальные узкие места в рабочих сценариях.

Типичные задачи — корректировка индексов, рефакторинг холодных и горячих запросов, настройка параметров PostgreSQL (shared_buffers, work_mem, autovacuum) и оптимизация планов выполнения через переработку запросов или добавление статистики.

Результатом становится набор конкретных мер: оптимизированные индексы, изменённые запросы и рекомендованная конфигурация сервера, а также отчёт о достигнутом приросте производительности и прогнозах на будущее.

06 Техническая поддержка

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

Наши реакции классифицируются по приоритетам: критичные инциденты (падение сервиса, потеря данных) — немедленная эскалация и реакция 24/7; задачи меньшей приоритизации — фиксированные окна обработки и регулярные отчёты.

Поддержка включает регулярные health‑checks, проактивный мониторинг трендов и рекомендации по улучшению, а также обучение вашей команды для самостоятельной работы с новой инфраструктурой.

07 Дальше

С чего начать

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

Шаг 1

Discovery-встреча

Обсуждаем систему, объёмы, SLA и ограничения. Получаете предварительную оценку сложности.

Шаг 2

Демо O2PG

Разворачиваем прокси на тестовом контуре и подключаем к нему ваше приложение.

Шаг 3

Аудит и план

Карта рисков, оценка трудоёмкости и план-график с критериями приёмки.

Телефон
Почта
ПрезентацияСкачать .pptx