Есть ли способ восстановить базу данных 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
Убедитесь, что исходная и целевая базы данных идентичны.