Система управления базами данных (СУБД) 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, разрабатываются дополнительные скрипты, ускоряющие процесс.
Оценивается время для выполнения каждого шага миграции с учетом максимального времени простоя прикладных систем.
Миграция данных
Собственно миграция. Проводится на основании плана миграции, разработанного на предыдущем шаге. На каждой итерации уточняется план миграции, устраняются ошибки в исходных данных.
Миграция приложений
- Подключение компонентов системы к новой базе данных.
- Тестирование работы отдельных модулей
- Интеграционное тестирование
- Анализ планов исполнения запросов, Оптимизация целевой БД
Ожидаемые результаты
- Исключение зависимости от иностранных производителей ПО.
- Снижение лицензионных и эксплуатационных затрат на поддержку СУБД.
- Повышение информационной безопасности прикладных систем.