<heading alttoc="" refname="compat" type="h2" back-to-top="no"
>Обеспечение совместимости с другими СУБД и миграция баз данных</heading>
В IBM DB2 LUW реализовано множество функций для обеспечения совместимости с другими видами СУБД и облегчения переноса приложений, разработанных для других типов СУБД, на платформу IBM DB2. Полное описание функций обеспечения совместимости DB2 приведено в разделе документации «DB2 compatibility features».
Наиболее развитыми на данный момент являются средства обеспечения совместимости с СУБД Oracle Database, которые включают в себя:
- поддержку языка PL/SQL для разработки хранимых процедур, пользовательских функций и триггеров;
- наличие в DB2 командного процессора
clpplus
, совместимого с командным процессором Oracle SQL*Plus; - реализацию значительной части стандартной библиотеки PL/SQL (частично - в виде дополнения DB2 Add-On Modules for Oracle Database Compatibility, устанавливаемого после создания базы данных);
- наличие встроенной в DB2 поддержки большинства типов данных Oracle;
- поддержка синтаксиса Oracle для многих операций DB2, например:
- поддержка хранения и работы с меткой времени в данных типа DATE,
- поддержка неявного преобразования типов данных при выполнении сравнений (например, поддержка сравнения строк и чисел без явного приведения типа данных),
- поддержка внешних объединений (outer joins) в синтаксисе Oracle, с использованием
оператора
(+)
, - поддержка иерархических запросов в синтаксисе Oracle,
- поддержка псевдо-колонки
ROWNUM
, - поддержка таблицы
DUAL
, - поддержка синтаксиса Oracle для обращения к объектам других баз данных,
доступных через сетевое соединение (определенное через так называемый
«database link»):
Схема.Объект@Ссылка
;
- наличие набора представлений системного словаря, совместимых с системным
словарем СУБД Oracle (включая представления
ALL_*
,DBA_*
иUSER_*
); - усовершенствования механизмов управления конкурентным доступом DB2, облегчающие перенос приложений, разработанных для СУБД Oracle (так называемая «Currently committed» семантика, используемая по умолчанию для всех новых баз данных DB2, начиная с версии 9.7);
- использование в режиме совместимости с Oracle так называемой поздней компиляции запросов (deferred prepare), что позволяет корректно определить типы данных параметров запроса на основе переданных реальных значений параметров.
Для облегчения переноса на DB2 приложений, разработанных для СУБД MySQL и PostgreSQL,
поддерживается выражений LIMIT
и OFFSET
в командах
SELECT
, UPDATE
и DELETE
.
Для использования функции совместимости DB2 с другими СУБД их необходимо
активизировать с помощью переменной реестра DB2 DB2_COMPATIBILITY_VECTOR
.
Возможные значения и результат их применения описаны в
документации. Для использования большинства функций совместимости необходимо
установить переменную DB2_COMPATIBILITY_VECTOR
в необходимое значение
(например, для работы в режиме максимальной совместимости с СУБД Oracle установить
значение ORA
), перезапустить сервер СУБД, и затем создать новую базу
данных, в которой будут размещаться данные и код программных объектов.
Для упрощения решения задачи миграции баз данных в среду DB2 был создан свободно распространяемый инструмент IBM Database Conversion Workbench (IBM DCW), который реализует следующие функции:
- выгрузку описаний структуры и программного кода из исходных баз данных;
- анализ совместимости выгруженных описаний с DB2 LUW, формирование отчетов о совместимости;
- автоматизированную корректировку скриптов для создания базы данных;
- создание необходимых объектов в целевой базе данных;
- перенос информации из исходной базы данных в целевую базу данных.
Описание основных операций с использованием инструмента IBM DCW приведено в статье «IBM Database Conversion Workbench: Overview».
Для облегчения миграции приложений на встроенном SQL, разработанных для СУБД Oracle Database с использованием Oracle Pro*C, IBM DB2 поддерживает дополнительные средства и функции обеспечения совместимости. Особенности процесса переноса приложений Oracle Pro*C на платформу IBM DB2 изложены в статье «Accelerating migration from Oracle database-based Pro*C applications to DB2 embedded SQL C», опубликованной на сайте IBM developerWorks.