Содержание


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

Comments

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

Данная статья предназначена для разработчиков, администраторов и независимых поставщиков программного обеспечения (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
    Figure 1
  2. Создайте новый проект MTK. Проект можно назвать как угодно. В ниспадающем списке выберите тип исходной базы данных и версию DB2 (в данном случае "DB2 for Linux, UNIX, и Windows").
    Рисунок 2. Создание проекта
    Figure 2
    Figure 2
  3. Импортируйте исходный SQL-сценарий в MTK. Этот сценарий впоследствии будет использован MTK для генерирования внутреннего XML-представления схемы исходной базы данных. Таким образом, MTK будет знать структуру исходной базы данных.
    Рисунок 3. Импорт DDL-сценария исходной базы данных
    Figure 3
    Figure 3

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

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


Ресурсы для скачивания


Похожие темы


Комментарии

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

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