Перемещение данных с использованием IBM DB2 Migration Toolkit

Вы недавно перенесли ваше приложение в систему IBM DB2® Universal Database™ (UDB) на платформе Linux™, UNIX® или Windows®? Вам нужно переместить данные из Oracle или SQL Server в DB2 UDB? Научитесь делать это при помощи IBM DB2 Migration Toolkit.

Пол Йип, консультант по DB2, IBM Toronto Software Lab

Author photoПол Йип (Paul Yip) работает консультантом в IBM Toronto Lab. Он специализируется на предоставлении помощи бизнес-партнерам в переносе их приложений баз данных с конкурирующих платформ на DB2. Является автором дюжины технических статей и соавтором трех книг.



18.11.2004

Введение и предпосылки

Данная статья предназначена для разработчиков, администраторов и независимых поставщиков программного обеспечения (Independent Software Vendors (ISVs)), которые:

  • Имеют приложения баз данных, поддерживающих и IBM DB2 Universal Database (UDB) и не IBM базы данных (например Oracle и SQL Server);
  • Имеют пользователей, которые хотят перенести свои данные с Oracle или SQL Server на DB2.

Мне часто задают следующий вопрос:

Я перенес приложение, работающее с базой данных на DB2, но есть пользователи, работающие на Oracle/SQL Server и желающие перенести свои системы на DB2. Как мне перенести данные?

Задача переноса данных может быть решена при помощи IBM Migration Toolkit (MTK), если схема базы данных для отличной от IBM платформы идентична (или очень похожа) на схему для DB2. В данной статье предполагается, что перенос схемы базы данных уже осуществлен и внимание концентрируется только на переносе данных из базы данных Oracle или SQL Server на DB2 (при помощи MTK).

В данной статье мы ссылаемся на базу данных Oracle или SQL Server как на исходную базу данных, а на DB2 как на целевую. Предполагается, что вы уже создали пустую базу данных с соответствующей схемой.

Прежде всего, убедитесь, что вы:

  • Загрузили и установили свободно распространяемый пакет IBM DB2 Migration Toolkit;
  • Имеете достаточно свободного места на системе с установленным MTK для выгрузки исходной базы данных в текстовые файлы;
  • Имеете сценарий для создания схемы для исходной базы данных (используемой как входные данные для MTK).

Задача 1: Импорт сценария схемы для исходной базы данных

  1. Запустите MTK и нажмите кнопку "Launch the Migration Toolkit product" (Запуск программы Migration Toolkit).
    Рисунок 1. Запуск MTK
    Figure 1
  2. Создайте новый проект MTK. Проект можно назвать как угодно. В ниспадающем списке выберите тип исходной базы данных и версию DB2 (в данном случае "DB2 for Linux, UNIX, и Windows").
    Рисунок 2. Создание проекта
    Figure 2
  3. Импортируйте исходный SQL-сценарий в MTK. Этот сценарий впоследствии будет использован MTK для генерирования внутреннего XML-представления схемы исходной базы данных. Таким образом, MTK будет знать структуру исходной базы данных.
    Рисунок 3. Импорт DDL-сценария исходной базы данных
    Figure 3

    Совет: Производительность MTK можно улучшить, используя сценарий, содержащий только DDL для таблиц. Для этого удалите DDL для функций, триггеров, хранимых процедур и т.д. MTK должен знать только структуру исходных таблиц для генерирования сценариев экспорта/импорта.

  4. Выше вы увидели, что MTK имеет 5 закладок. На закладке Convert (Преобразование) нажмите кнопку "Convert". На этом шаге MTK анализирует предоставленный вами на предыдущем шаге входной сценарий. Если ваша схема имеет много объектов, это действие может занять несколько минут. После завершения преобразования отобразится закладка Refine (Детализация).
    Рисунок 4. Использование CONVERT для предоставления MTK схемы исходной базы данных
    Figure 4
  5. На закладке refine просмотрите поле "Translator Information" (Информация транслятора) и подтвердите, что синтаксис был принят без каких либо серьезных ошибок.
    Рисунок 5. Просмотр закладки REFINE
    Figure 5

Обратите внимание на то, что некоторые ошибки или предупреждения можно проигнорировать. Например:

  • 16 Duplicate definition of object-name (Дублирование определения object-name)
  • 20 Object name has been changed to new-name (Имя объекта было изменено на new-name)

Задача 2: Извлечение данных Oracle/SQL Server в текстовые файлы

  1. Теперь, поскольку MTK знает исходную базу данных и таблицы, из которых данные должны быть извлечены, вы можете сгенерировать сценарии извлечения данных и сценарии загрузки данных для DB2.

    На закладке Generate Data Transfer Scripts (Генерирование сценариев переноса данных) укажите параметры, используемые для процесса извлечения и загрузки данных.

    Рисунок 6. Параметры извлечения и загрузки данных
    Figure 6

    Мы рекомендуем выбор следующих параметров:

    ПараметрЗначениеПричина
    DB2 Data Loading Options LOAD Мы хотим иметь точную копию исходных данных в DB2. Следовательно, нужно использовать этот параметр, поскольку вам не надо активировать какие-нибудь триггеры. LOAD также быстрее, чем IMPORT.
    DB2 LOAD/IMPORT mode REPLACE В случае неудачной загрузки данных для каких-либо таблиц вам не надо добавлять данные в любые целевые таблицы при перезапуске процесса загрузки.
    File Format DEL Сберегает свободное дисковое пространство, сохраняет пробелы в строках и работает в большинстве случаев.

    Важное замечание: Убедитесь в том, что указанный в поле "Directory" каталог для извлечения данных имеет достаточное количество свободного места для выгрузки исходной базы данных в текстовые файлы.

  2. Нажмите кнопу "Create Scripts" (Создать сценарии). Обратите внимание на то, что на данном этапе не происходит фактическое извлечение и загрузка данных. Генерируются только сценарии для выполнения этого действия на основе собранной MTK информации из входных сценариев и выбранных вами на предыдущем этапе параметров.
  3. На закладке Deploy to DB2 (Развертывание в DB2) укажите имя базы данных DB2.
    Укажите информацию для:
    • имени целевой базы данных;
    • целевую базу данных (локальную или удаленную);
    • имя пользователя и пароль для целевой базы данных (имя пользователя должно совпадать с именем схемы, по которой создаются таблицы в целевой базе данных).
    Отмените выбор
    • Запустите сценарий script-name в базе данных
    Выберите:
    • Extract and store data on this system (Извлечение (из исходной базы данных) и сохранение данных на этой системе)
    • Load data to target database using generated scripts (Загрузка данных в целевую базу данных с использованием сгенерированных сценариев)
    Рисунок 7. Извлечение и загрузка данных в целевую базу данных
    Figure 7

    Нажмите кнопку "Change source database" (Изменить исходную базу данных) для проверки корректности исходной базы данных.

    Совет: Если при нажатии кнопки "Change source database"отобразится диалоговое окно Driver Not Available (Драйвер недоступен) необходимо откорректировать системный classpath вашей операционной системы Windows и включить в него classes111.zip Oracle (или любой другой файл классов, реализующий драйвер Oracle JDBC). Сохраните ваш проект и выйдите из MTK. Исправьте classpath и перезапустите MTK для продолжения работы с этим проектом.

    Рисунок 8. Ошибка Driver Not Available
    Figure 8

    Для начала перемещения данных нажмите кнопку "Deploy". Просмотрите выходные HTML-отчеты и определите, успешно ли было выполнено перемещение данных.


Дополнительные советы

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

Помните о том, что такой подход лучше всего работает тогда, когда исходная и целевая схемы идентичны или почти идентичны. Если этот метод не подходит для вашей ситуации, вы все равно можете попробовать его и использовать сгенерированный MTK сценарий в качестве исходной варианта.

Производительность программы DB2 LOAD можно улучшить увеличением динамической области памяти (кучи) целевой базы данных.

db2 update db cfg for dbname using UTIL_HEAP_SZ 20000 
 (рекомендуемый минимум для двухпроцессорной системы)
db2 force application all   
    (для гарантии выполнения изменений)

Хорошим правилом, исходя из практики, является установка util_heap_sz в значение по меньшей мере 10000, умноженное на количество CPU DB2-сервера. Если память системы ограничена, вы можете уменьшить размер буферных пулов целевой базы данных, поскольку программа DB2 LOAD не использует их.

Если вы используете для таблиц управляемое системой хранилище (system managed storage – SMS), вы можете уменьшить расход дискового пространства, разрешив многостраничное размещение.

db2 force application all  (Программа db2empfa может работать 
только при не активности базы данных)
db2empfa dbname	     
    (Это команда системного уровня)

Дополнительное дисковое пространство можно получить при извлечении данных на диск, не используемый исходной или целевой базами данных (указанные в задаче 2, шаг 1)

Ресурсы

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Information Management
ArticleID=107328
ArticleTitle=Перемещение данных с использованием IBM DB2 Migration Toolkit
publish-date=11182004