数据库恢复操作使用数据库备份映象来重新创建数据库。如果要将数据库从一台机器克隆到另一台,最简单的方法就是从备份映象恢复数据库。数据库使用的文件系统路径也包含在备份映象中。因此,除非源系统上的数据库引用的文件系统和物理设备与目标系统的设置方法完全相同,否则就需要执行 重定向恢复
操作。
重定向恢复操作包括两步数据库恢复过程,并且中间有一个表空间容器定义步骤:
带 REDIRECT 选项发出
RESTORE DATABASE 命令。 使用 SET TABLESPACE CONTAINERS 命令来定义被恢复的数据库的表空间容器(
DB2 需要知道您想要让表空间驻留在目标系统上的什么位置)。 再次发出 RESTORE DATABASE 命令,这次指定
CONTINUE 选项。
1.新建实例
myinst,并设置系统当前实例为
myinst
C:>db2 get instance
当前数据库管理器实例是:DB2
C:>db2icrt myinst
DB20000IDB2ICRT 命令成功完成。
C:>set db2instance=myinst
C:>db2 get instance
当前数据库管理器实例是:MYINST
2.获得重定向恢复数据库的脚步
C:> db2 restore db testdbfrom 'e:' taken at 20110411031305 on 'e:db2' into testdbredirect generate script redirect_testdb.sql
3.根据具体需求脚步修改容器路径
例如:SET TABLESPACE CONTAINERS FOR 0USING (PATH 'SQLT0000.0');
改为:SET TABLESPACE CONTAINERS FOR 0USING (PATH'E:db2SQLT0000.0');
4.执行相关语句,可以分步执行
5.再次恢复数据库,对应步骤4
C:>db2 restore database testdb continue
6.验证是否正确地为所恢复的数据库建立了目录,以及为它定义的表空间容器是否真正与所恢复的数据库相关:
db2 list db directory db2 connect to testdbdb2 list tablespace containers for 0 db2 list tablespace containers for 1 db2 list tablespace containers for 2 db2 connect reset db2 terminate
附录:redirect_testdb.sql
*****************************************************************************
-- ** 自动创建了重定向复原脚本
-- *****************************************************************************
UPDATE COMMAND OPTIONS USING S ON Z ON testdb_NODE0000.out V ON;
SET CLIENT ATTACH_DBPARTITIONNUM 0;
SET CLIENT CONNECT_DBPARTITIONNUM 0;
-- *****************************************************************************
-- ** 自动创建了重定向复原脚本
-- *****************************************************************************
RESTORE DATABASE testdb
-- USER <用户名>
-- USING '<密码>'
FROM 'e:'
TAKEN AT 20110411031305
DBPATH ON '<目标目录>'
INTO testdb
-- NEWLOGPATH 'D:DB2NODE0000SQL00001SQLOGDIR'
-- WITH <缓冲区数目> BUFFERS
-- BUFFER <缓冲区大小>
-- REPLACE HISTORY FILE
-- REPLACE EXISTING
REDIRECT
-- PARALLELISM <n>
WITHOUT ROLLING FORWARD
-- WITHOUT PROMPTING
;
-- *****************************************************************************
-- ** 表空间定义
-- *****************************************************************************
-- *****************************************************************************
-- ** 表空间名 = SYSCATSPACE
-- ** 表空间标识 = 0
-- ** 表空间类型 = 系统管理空间
-- ** 表空间内容类型 = 所有持久数据。常规表空间。
-- ** 表空间页大小(以字节计) = 4096
-- ** 表空间扩展数据块大小(以页计) = 32
-- ** 使用自动存储器 = 否
-- ** 页总数 = 11443
-- *****************************************************************************
SET TABLESPACE CONTAINERS FOR 0
-- IGNORE ROLLFORWARD CONTAINER OPERATIONS
USING ( PATH 'E:DB2SQLT0000.0');
-- *****************************************************************************
-- ** 表空间名 = TEMPSPACE1
-- ** 表空间标识 = 1
-- ** 表空间类型 = 系统管理空间
-- ** 表空间内容类型 = 系统临时数据
-- ** 表空间页大小(以字节计) = 4096
-- ** 表空间扩展数据块大小(以页计) = 32
-- ** 使用自动存储器 = 否
-- ** 页总数 = 0
-- *****************************************************************************
SET TABLESPACE CONTAINERS FOR 1
-- IGNORE ROLLFORWARD CONTAINER OPERATIONS
USING ( PATH 'E:DB2SQLT0001.0');
-- *****************************************************************************
-- ** 表空间名 = USERSPACE1
-- ** 表空间标识 = 2
-- ** 表空间类型 = 系统管理空间
-- ** 表空间内容类型 = 所有持久数据。常规表空间。
-- ** 表空间页大小(以字节计) = 4096
-- ** 表空间扩展数据块大小(以页计) = 32
-- ** 使用自动存储器 = 否
-- ** 页总数 = 24915
-- *****************************************************************************
SET TABLESPACE CONTAINERS FOR 2
-- IGNORE ROLLFORWARD CONTAINER OPERATIONS
USING ( PATH 'E:DB2SQLT0002.0');
-- *****************************************************************************
-- ** 表空间名 = USERTOOLSTMPPACE
-- ** 表空间标识 = 3
-- ** 表空间类型 = 系统管理空间
-- ** 表空间内容类型 = 用户临时数据
-- ** 表空间页大小(以字节计) = 4096
-- ** 表空间扩展数据块大小(以页计) = 16
-- ** 使用自动存储器 = 否
-- ** 页总数 = 0
-- *****************************************************************************
SET TABLESPACE CONTAINERS FOR 3
-- IGNORE ROLLFORWARD CONTAINER OPERATIONS
USING ( PATH 'E:DB2DB2DATAUSERSPACE001');
-- *****************************************************************************
-- ** 表空间名 = TSASNUOW
-- ** 表空间标识 = 4
-- ** 表空间类型 = 数据库管理空间
-- ** 表空间内容类型 = 所有持久数据。常规表空间。
-- ** 表空间页大小(以字节计) = 4096
-- ** 表空间扩展数据块大小(以页计) = 32
-- ** 使用自动存储器 = 否
-- ** 启用自动调整大小 = 否
-- ** 页总数 = 389888
-- ** 可用页数 = 389792
-- ** 高水位标记(页) = 73760
-- *****************************************************************************
SET TABLESPACE CONTAINERS FOR 4
-- IGNORE ROLLFORWARD CONTAINER OPERATIONS
USING (
FILE 'D:DB2DATATSASNUOW' 5888
, FILE 'D:DB2DATATSASNUOW.DAT' 128000
, FILE 'D:DB2DATATSASNUOW2.DAT' 256000
);
-- *****************************************************************************
-- ** 表空间名 = TSASNAA
-- ** 表空间标识 = 5
-- ** 表空间类型 = 数据库管理空间
-- ** 表空间内容类型 = 所有持久数据。常规表空间。
-- ** 表空间页大小(以字节计) = 4096
-- ** 表空间扩展数据块大小(以页计) = 32
-- ** 使用自动存储器 = 否
-- ** 启用自动调整大小 = 否
-- ** 页总数 = 56320
-- ** 可用页数 = 56256
-- ** 高水位标记(页) = 1888
-- *****************************************************************************
SET TABLESPACE CONTAINERS FOR 5
-- IGNORE ROLLFORWARD CONTAINER OPERATIONS
USING (
FILE 'D:DB2DATATSASNAA' 5120
, FILE 'D:DB2DATATSASNAA.DAT' 51200
);
-- *****************************************************************************
-- ** 表空间名 = TSCDA35_SYSTEMPARA
-- ** 表空间标识 = 6
-- ** 表空间类型 = 数据库管理空间
-- ** 表空间内容类型 = 所有持久数据。常规表空间。
-- ** 表空间页大小(以字节计) = 4096
-- ** 表空间扩展数据块大小(以页计) = 32
-- ** 使用自动存储器 = 否
-- ** 启用自动调整大小 = 否
-- ** 页总数 = 512
-- ** 可用页数 = 480
-- ** 高水位标记(页) = 288
-- *****************************************************************************
SET TABLESPACE CONTAINERS FOR 6
-- IGNORE ROLLFORWARD CONTAINER OPERATIONS
USING (
FILE 'e:db2SYSTEMPARA' 512
);
-- *****************************************************************************
-- ** 表空间名 = SYSTOOLSPACE
-- ** 表空间标识 = 7
-- ** 表空间类型 = 系统管理空间
-- ** 表空间内容类型 = 所有持久数据。常规表空间。
-- ** 表空间页大小(以字节计) = 4096
-- ** 表空间扩展数据块大小(以页计) = 32
-- ** 使用自动存储器 = 否
-- ** 页总数 = 126
-- *****************************************************************************
SET TABLESPACE CONTAINERS FOR 7
-- IGNORE ROLLFORWARD CONTAINER OPERATIONS
USING ( PATH 'E:DB2SYSTOOLSPACE');
-- *****************************************************************************
-- ** 表空间名 = TBSP32K0000
-- ** 表空间标识 = 8
-- ** 表空间类型 = 系统管理空间
-- ** 表空间内容类型 = 所有持久数据。常规表空间。
-- ** 表空间页大小(以字节计) = 32768
-- ** 表空间扩展数据块大小(以页计) = 32
-- ** 使用自动存储器 = 否
-- ** 页总数 = 270
-- *****************************************************************************
SET TABLESPACE CONTAINERS FOR 8
-- IGNORE ROLLFORWARD CONTAINER OPERATIONS
USING ( PATH 'E:DB2TBSP32K0000');
-- *****************************************************************************
-- ** 表空间名 = TBSP32KTMP0000
-- ** 表空间标识 = 9
-- ** 表空间类型 = 系统管理空间
-- ** 表空间内容类型 = 系统临时数据
-- ** 表空间页大小(以字节计) = 32768
-- ** 表空间扩展数据块大小(以页计) = 32
-- ** 使用自动存储器 = 否
-- ** 页总数 = 0
-- *****************************************************************************
SET TABLESPACE CONTAINERS FOR 9
-- IGNORE ROLLFORWARD CONTAINER OPERATIONS
USING ( PATH 'E:DB2TBSP32KTMP0000');
-- *****************************************************************************
-- ** 启动已重定向的复原
-- *****************************************************************************
RESTORE DATABASE testdb CONTINUE;
-- *****************************************************************************
-- ** 文件末尾
-- *****************************************************************************
--转自