Миграция систем с СУБД Oracle на PostgreSQL

Система управления базами данных (СУБД) Oracle с  момента выпуска версии под ОС UNIX и до настоящего времени является №1 на рынке реляционных СУБД. При всех достоинствах у нее есть существенный недостаток —  стоимость закупки и последующего владения непомерно высока особенно на фоне open source СУБД, которые появились за это время и в большинстве практических применений имеют вполне сопоставимые характеристики.

Одна из таких СУБД — PostgreSQL, наиболее подходит для миграции с Oracle благодаря схожим концепциям построения:

  • обе СУБД оперируют схемами, табличными пространствами, таблицами, индексами и т.д.;
  • обе СУБД имеют встроенные процедурные расширения — Oracle PL/SQL и PostgreSQL pg/SQL. Большинство PL/SQL хранимых процедур Oracle, которые не используют внешние пакеты расширения могут быть исполнены в среде PostgreSQL с минимальными модификациями;
  • обе имеют библиотеки JDBC/ODBC и OLEDB/.Net для подключения клиентов;

Российская компания Postgres Professional в 2015 году выпустила и развивает продукт Postgres Pro, который включен в национальный реестр российского программного обеспечения.

Последние решения компании Oracle о прекращении работы в РФ делает вопрос замены Oracle на другую СУБД еще более актуальным.

Наша компания имеет успешный опыт такой миграции и готова предоставить полный пакет услуг по замене СУБД Oracle на PostgreSQL (PostgrePro). Трудоемкость миграции может варьироваться в широких пределах и зависит от того, насколько широко в прикладной системе использованы пакеты расширений, которые во множестве имеются в экосистеме Oracle.

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

Основные задачи, которые придется решить перед началом миграции:

  • переопределение типов столбцов (number в numeric и integer, varchar2 в varchar и text)
  • изменение текстов SQL команд (замена nvl и decode, исключение устаревшего синтаксиса внешнего соединения)
  • исключение/замена конструкций connect by, merge
  • возможно, изменение работы с полями типа date
  • оптимизация планов исполнения запросов.

Несмотря на длинный список, многое из вышеперечисленного можно автоматизировать с помощью большого количества сервисных пакетов, например, ora2pg, который дополнительно обеспечит черновую миграцию серверной логики (ее придется дорабатывать дополнительно).

В PostgreSQL отсутствуют средства создания пакетов, поэтому требуемую функциональность придется разрабатывать самостоятельно.

В любом случае, процесс миграции состоит из следующих основных этапов:

  • Анализ структуры данных и приложений
  • Разработка плана миграции
  • Миграция данных
  • Миграция приложений

Анализ структуры данных и приложений

На этом этапе анализируется версия Oracle, структура БД, формируется список полей, требующий замены типов, диапазоны значений в этих полях

Определяются таблицы, содержащие наибольший объем данных, набор пакетов и процедуры/функции, которые реально используются в  приложениях. Формируется список приложений, использующих БД, порядок их миграции и т.д.

Разработка плана миграции

Оценивается программно-аппаратная среда, в которой будет осуществляться миграция, бизнес-требования к процессу (возможность и длительность простоя, возможность отката и др.) Разрабатывается детальный план, учитывающий версии продуктов, способы подключения к СУБД, определяются способ переноса данных.

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

Выбираются средства автоматизации миграции например, Ora2Pg, разрабатываются дополнительные скрипты, ускоряющие процесс.

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

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

Собственно миграция.  Проводится на основании плана миграции, разработанного на предыдущем шаге.  На каждой итерации уточняется план миграции, устраняются ошибки в исходных данных.

Миграция приложений

  • Подключение компонентов системы к новой базе данных.
  • Тестирование работы отдельных модулей
  • Интеграционное тестирование
  • Анализ планов исполнения запросов, Оптимизация целевой БД

Ожидаемые результаты

  1. Исключение зависимости от иностранных производителей ПО.
  2. Снижение лицензионных и эксплуатационных затрат на поддержку СУБД.
  3. Повышение информационной безопасности прикладных систем.

Источники

  1. 10 лучших Open-Source баз данных 2021 года
  2. Converting from other Databases to PostgreSQL
  3. Hierarchical and recursive queries in SQL
  4. Миграция из Oracle в Postgres
  5. Нормативно-правовые акты, регламентирующие импортозамещение программного обеспечения

Консультация

Если у вас возник вопрос или вы хотите связаться для расчёта проекта оставьте заявку или свяжитесь с нами. Будем рады сотруднечеству

Расскажите нашему ведущему IT-специалисту задачи, которые стоят перед Вами, мы подготовим самые эффективные пути решения.

Выберите планируемый бюджет на разработку, руб:

Файл не выбран