Назад | Перейти на главную страницу

Восстановить базу данных DB2

Есть ли способ восстановить базу данных db2, резервная копия которой была сделана в Windows XP, на машину с Linux? Я использую одну и ту же версию db2 в обеих ОС -> DB2 Express-C 9.7 Исходная ОС: Windows XP SP2 Целевая ОС: Ubuntu 9.04

У IBM есть документация для этого сценария. См. Эту страницу на DeveloperWorks: Использование утилит DB2 для клонирования баз данных на разных платформах

Резюме: Две утилиты DB2, db2move и db2look, можно использовать для клонирования баз данных, когда нет поддержки межплатформенных операций резервного копирования и восстановления. В этой статье представлен обзор этих утилит и приведен пошаговый пример того, как клонировать базу данных DB2 с использованием этого подхода.

Я уже использовал аналогичную процедуру (с использованием db2move) для переноса базы данных DB2 из Windows в AIX и наоборот.

Введение

Собственная утилита резервного копирования DB2 создает образ резервной копии, который нельзя переносить с W2K на AIX или обратно. В этом документе представлены процедуры, необходимые для переноса любой базы данных DB2 с одной платформы на другую.

Предположения

В качестве примера в этом документе предполагается, что база данных, которая будет перенесена с W2K (исходная платформа) на AIX (целевая платформа), - это MYDB.

Детали процедуры

Запустите команду db2look для базы данных MYDB, чтобы сгенерировать DDL для базы данных MYDB.

db2look -d mydb -e –l –x -o mydb_create.sql

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

mkdir backup

Перейдите в новый каталог и создайте логическую резервную копию с помощью утилиты db2move.

cd backup
db2move mydb export

Перенесите резервную копию базы данных и сценарий DDL из источника в место назначения. Перенести mydb_create.sql в режиме ASCII, а все резервные файлы * .ixf в двоичный режим.

На целевой платформе необходимо выполнить следующие шаги.

Разделите сценарий mydb_create.sql на два сценария. Первый называется mydb_tables.sql и должен содержать все команды создания псевдонимов, таблиц и представлений. Второй сценарий должен называться mydb_ri.sql и выбирает место, где остановился первый, включая ограничения и гранты проверки и внешнего ключа. Убедитесь, что в обоих сценариях есть команда CONNECT вверху и команды COMMIT, CONNECT RESET и TERMINATE в конце.

Отредактируйте mydb_tables.sql и убедитесь, что все пользовательские табличные пространства используют только относительные имена путей. Если используются абсолютные пути, база данных не может быть восстановлена ​​несколько раз в одной системе без ПЕРЕНАПРАВЛЕННОГО ВОССТАНОВЛЕНИЯ.

Создайте пустую базу данных MYDB.

create db mydb

Запустите сценарий mydb_tables.sql для создания псевдонимов, таблиц и представлений.

db2 –tvf mydb_tables.sql > mydb_tables.out

Проверьте mydb_tables.out на наличие ошибок. Простой способ сделать это - выполнить следующую команду.

grep SQL0 mydb_tables.out|grep –v SQL0403W|grep –v SQL0598W|more

Импортируйте данные в таблицы (вместо REPLACE можно использовать параметр INSERT, но REPLACE можно запустить повторно).

db2move mydb load -lo replace

Запустите сценарий mydb_ri.sql, чтобы создать ограничения ссылочной целостности и т. Д.

db2 –tvf mydb_ri.sql > mydb_ri.out

Проверьте mydb_ri.out на наличие ошибок. Простой способ сделать это - выполнить следующую команду.

grep SQL0 mydb_ri.out|grep –v SQL0403W|grep –v SQL0598W|more

Убедитесь, что исходная и целевая базы данных идентичны.