Почему мигрируют с 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С
Об авторе
Столкнулись с похожей проблемой?
Расскажите, что происходит у вас: инженер разберёт ситуацию и предложит, с чего начать.
Читайте также
Материалы по той же теме и для того же сегмента бизнеса.