恢复 DB2 数据库

Man*_*hai 4 linux db2 restore

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

小智 8

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

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