有没有办法将 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
验证源数据库和目标数据库是否相同。