Перейти к содержимому
Управление ИТ10 мин чтения

Миграция с Oracle на PostgreSQL: пошаговое руководство

Как мигрировать базу данных с Oracle на PostgreSQL. Этапы, инструменты (ora2pg), типичные проблемы и решения.

  • Для бизнеса: Риски штрафов и инцидентов
  • Для кого: ИТ-руководитель

Почему мигрируют с Oracle

Три причины массового перехода с Oracle на PostgreSQL в 2026 году: санкции и прекращение продажи лицензий Oracle в России, стоимость лицензий (от 2-5 млн рублей в год для среднего бизнеса), требования законодательства по импортозамещению для госсектора и КИИ. PostgreSQL — единственная СУБД корпоративного уровня, которая бесплатна, полностью открыта и входит в реестр российского ПО (через дистрибутивы Postgres Pro, Tantor, Pangolin).

Ключевые различия Oracle и PostgreSQL

Архитектурные отличия

Главное различие — модель управления процессами: Oracle использует многопоточную архитектуру с SGA, PostgreSQL — мультипроцессную с shared buffers. Это влияет на настройку производительности после миграции. Также отличаются типы данных (VARCHAR2 → VARCHAR, NUMBER → NUMERIC), работа с NULL и пустыми строками, а также синтаксис PL/SQL и PL/pgSQL.

Что не имеет прямого аналога

Oracle RAC (кластеризация) не имеет прямого аналога в PostgreSQL — используются Patroni + PgBouncer для HA. Oracle Partitioning поддерживается нативно в PostgreSQL 12+, но синтаксис отличается. Oracle Materialized Views с автообновлением требуют доработки через pg_cron.

Инструменты миграции

ora2pg — основной инструмент

ora2pg — open-source утилита для автоматизированной миграции схемы и данных из Oracle в PostgreSQL. Конвертирует DDL, DML, PL/SQL-процедуры, триггеры, секвенции. Генерирует отчёт о сложности миграции (MIGRATION_LEVEL от A до E), который позволяет оценить трудозатраты до начала работ.

Дополнительные инструменты

pgLoader — для параллельной загрузки данных с высокой скоростью. AWS SCT (Schema Conversion Tool) — для анализа несовместимостей. Orafce — расширение PostgreSQL, добавляющее Oracle-совместимые функции (DECODE, NVL, SYSDATE), что сокращает объём рефакторинга PL/SQL-кода.

Этапы миграции

Этап 1: Аудит и оценка (1-2 недели)

Запуск ora2pg в режиме анализа для получения отчёта о сложности миграции. Инвентаризация объектов БД: таблицы, индексы, процедуры, пакеты, триггеры, вьюхи, связи с приложениями. Оценка трудозатрат и составление плана миграции с учётом бизнес-приоритетов.

Этап 2: Миграция схемы (1-3 недели)

Конвертация DDL через ora2pg с ручной доработкой несовместимых конструкций. Адаптация типов данных, переписывание PL/SQL → PL/pgSQL для процедур и триггеров. Создание индексов с учётом особенностей планировщика PostgreSQL (B-tree, GIN, GiST).

Этап 3: Миграция данных (1-7 дней)

Перенос данных через ora2pg или pgLoader с параллелизацией. Верификация целостности: подсчёт строк, контрольные суммы, выборочная проверка данных. Для больших БД (100+ ГБ) используется инкрементальная миграция с минимизацией даунтайма.

Этап 4: Миграция приложений (2-4 недели)

Адаптация SQL-запросов в приложениях (синтаксис Oracle → PostgreSQL). Замена Oracle-специфичных функций через Orafce или рефакторинг. Обновление драйверов подключения (OCI → libpq/JDBC PostgreSQL).

Типичные проблемы и решения

Пустая строка = NULL в Oracle, но не в PostgreSQL — требуется аудит логики приложений. Последовательности (SEQUENCE) в Oracle кэшируются иначе — нужна корректная настройка CACHE в PostgreSQL. Неявные преобразования типов в Oracle (число → строка) вызывают ошибки в PostgreSQL — требуется явное приведение типов.

Хранимые пакеты Oracle (PACKAGE) не имеют аналога в PostgreSQL — декомпозируются на отдельные функции и схемы. Это самая трудоёмкая часть миграции для баз со сложной бизнес-логикой.

Тестирование после миграции

Обязательные этапы: функциональное тестирование всех SQL-запросов приложений, нагрузочное тестирование на объёмах данных, сопоставимых с продакшеном, тестирование отказоустойчивости (failover Patroni). Рекомендуется параллельная работа обеих систем в течение 2-4 недель с автоматическим сравнением результатов запросов.

Оптимизация после миграции

Настройка PostgreSQL под нагрузку: shared_buffers, work_mem, effective_cache_size, random_page_cost. Анализ планов выполнения запросов через EXPLAIN ANALYZE — планировщик PostgreSQL работает иначе, чем Oracle CBO, и может потребовать другой стратегии индексирования. Настройка autovacuum для поддержания производительности.


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

Что делать дальше

Если тема статьи похожа на вашу ситуацию, начните с релевантной услуги, решения для сегмента или кейса.

Практический следующий шаг

PostgreSQL для 1С

Об авторе

Иванов Николай Владимирович

Основатель и руководитель Визард-АйТи

Основатель и руководитель Визард-АйТи. Отвечает за инженерную стратегию компании, архитектуру сложных проектов и стандарты, по которым команда сопровождает инфраструктуру клиентов.

  • ИТ-инфраструктура
  • информационная безопасность
  • ИТ-аутсорсинг

Теги: #PostgreSQL · #Oracle · #миграция БД · #импортозамещение

Столкнулись с похожей проблемой?

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

Информация о порядке обработки данных приведена в Политике обработки персональных данных.

Информация о порядке обработки данных приведена в Политике обработки персональных данных.

Первый звонок инженера — около 30 минут в рабочее время. NDA подписываем по первому требованию, обращение ни к чему не обязывает.

Начните вводить запрос

Поиск по услугам, статьям и страницам