恢复 DB2 数据库

恢复 DB2 数据库

有没有办法将 Windows XP 中备份的 db2 数据库还原到 Linux 机器?我在两个操作系统上使用相同版本的 db2 -> DB2 Express-C 9.7 源操作系统:Windows XP SP2 目标操作系统:Ubuntu 9.04

答案1

IBM 有针对此场景的文档。请参阅 DeveloperWorks 上的此页面:使用 DB2 实用程序跨不同平台克隆数据库

概括:当不支持跨平台备份和恢复操作时,可以使用两个 DB2 实用程序 db2move 和 db2look 来克隆数据库。本文概述了这些实用程序,并提供了如何使用此方法克隆 DB2 数据库的分步示例。

我已经使用了类似的过程(涉及 db2move)将 DB2 数据库从 Windows 转移到 AIX 以及反之亦然。

介绍

DB2 的本机备份实用程序会创建无法从 W2K 移植到 AIX 或移植回的备份映像。本文档介绍了将任何 DB2 数据库从一个平台移动到另一个平台所需的过程。

假设

为了举例说明,本文档假设从 W2K(源平台)移植到 AIX(目标平台)的数据库是 MYDB。

程序详细信息

对 MYDB 数据库运行 db2look 命令,生成 MYDB 数据库的 DDL。

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

创建一个目录,用于存储源数据库MYDB的逻辑备份。

mkdir backup

切换到新目录,并使用 db2move 实用程序创建逻辑备份

cd backup
db2move mydb export

将数据库和 DDL 脚本的备份从源传输到目标。以 ASCII 模式传输 mydb_create.sql,以二进制模式传输所有备份*.ixf 文件。

以下步骤将在目标平台上执行。

将 mydb_create.sql 脚本拆分为两个脚本。第一个脚本名为 mydb_tables.sql,应包含所有别名、表和视图创建命令。第二个脚本名为 mydb_ri.sql,从第一个脚本停止的地方继续,包括检查和外键约束和授权。确保两个脚本顶部都有 CONNECT 命令,末尾都有 COMMIT、CONNECT RESET 和 TERMINATE 命令。

编辑 mydb_tables.sql 并确保任何用户表空间仅使用相对路径名。如果使用绝对路径名,则无法在同一系统上多次还原数据库,除非使用 REDIRECTED RESTORE。

创建一个空的 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

将数据导入表中(可以使用 INSERT 选项代替 REPLACE,但 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

验证源数据库和目标数据库是否相同。

相关内容