示例 1
db2 restore db mydb rebuild with all tablespaces in database
taken at BK3 without prompting
db2 rollforward db mydb to end of logs
db2 rollforward db mydb stop
此时,该数据库是可连接的并且所有表空间都处于 NORMAL 状态。
示例 2
db2 restore db mydb rebuild with tablespace (SYSCATSPACE, USERSP2)
taken at BK2 without prompting
db2 rollforward db mydb to PIT
db2 rollforward db mydb stop
此时,该数据库是可连接的,但只有 SYSCATSPACE 和 USERSP2 处于 NORMAL 状态。USERSP1 和 USERSP3 处于 RESTORE_PENDING 状态。
db2 restore db mydb tablespace (USERSP1) taken at BK1 without prompting
db2 restore db mydb tablespace taken at BK3 without prompting
db2 rollforward db mydb to end of logs tablespace (USERSP1, USERSP3)
前滚将所有日志最多重放至 PIT,然后对这两个表空间停止,因为自第一次前滚以来尚未对它们执行任何操作。
db2 rollforward db mydb stop
示例 3
db2 restore db mydb rebuild with all tablespaces in image
taken at BK1 without prompting
db2 rollforward db mydb to end of logs
db2 rollforward db mydb stop
此时,该数据库是可连接的,但只有 SYSCATSPACE 和 USERSP1 处于 NORMAL 状态。USERSP2 和 USERSP3 处于 RESTORE_PENDING 状态。
示例 4
db2 restore db mydb rebuild with all tablespaces in database
taken at BK3 without prompting
此时成功地复原了目标映像,但从 RESTORE 实用程序返回一个错误,说明无法找到所需的映像。 db2 restore db mydb tablespace taken at BK1 from <location>
without prompting
db2 restore db mydb tablespace (USERSP2) taken at BK2 from
<location> without prompting
db2 rollforward db mydb to end of logs
db2 rollforward db mydb stop
此时,该数据库是可连接的并且所有表空间都处于 NORMAL 状态。
示例 5
在本例中,USERSP3 表空间包含生成特定报告需要的独立数据,但是您并不希望报告的生成妨碍原始数据库。为了访问数据而不影响原始数据库,可以使用 REBUILD 生成只有这个表空间和 SYSCATSPACE 的新数据库。为了使数据库在进行复原和前滚操作后仍然可以连接,所以同时也需要 SYSCATSPACE。
db2 restore db mydb rebuild with tablespace (SYSCATSPACE, USERSP3)
taken at BK3 into newdb without prompting
db2 rollforward db newdb to end of logs
db2 rollforward db newdb stop
在以下示例中,有一个称为 MYDB 的可恢复数据库,该数据库具有 SYSCATSPACE 和 1000 个名为 Txxxx 的用户表空间,其中 x 表示表空间号(例如 T0001)。有一个完整数据库备份映像(BK1)
示例 6
db2 restore db mydb rebuild with all tablespaces in image except
tablespace (T0999, T1000) taken at BK1 without prompting
db2 rollforward db mydb to end of logs
db2 rollforward db mydb stop
此时,该数据库是可连接的,并且除 T0999 和 T1000 之外的所有表空间都处于 NORMAL 状态。T0999 和 T1000 处于 RESTORE_PENDING 状态。
示例 7
db2 restore db mydb rebuild with tablespace (SYSCATSPACE, USERSP2)
incremental auto taken at DELTA3 without prompting
db2 rollforward db mydb to end of logs
db2 rollforward db mydb stop
此时,该数据库是可连接的,但只有 SYSCATSPACE 和 USERSP2 处于 NORMAL 状态。USERSP1 和 USERSP3 处于 RESTORE_PENDING 状态。
示例 8
db2 restore db mydb rebuild with all tablespaces in database
incremental auto taken at DELTA3 without prompting
db2 rollforward db mydb to end of logs
db2 rollforward db mydb stop
此时,该数据库是可连接的并且所有表空间都处于 NORMAL 状态。
示例 9
db2 restore db mydb rebuild with all tablespaces in database except
tablespace (USERSP3) taken at FULL2 without prompting
db2 rollforward db mydb to end of logs
db2 rollforward db mydb stop
示例 10
db2 restore db mydb rebuild with tablespace (SYSCATSPACE, USERSP2)
taken at BK1 logtarget /logs without prompting
db2 rollforward db mydb to end of logs overflow log path (/logs)
db2 rollforward db mydb stop
此时,该数据库是可连接的,但只有 SYSCATSPACE 和 USERSP2 处于 NORMAL 状态。USERSP1 处于 RESTORE_PENDING 状态。
示例 11
db2 restore db mydb rebuild with all tablespaces in database
taken at BK2 logtarget /logs without prompting
前滚操作将从日志文件 10 开始,如果该文件不在主日志文件路径中,那么它总是位于溢出日志路径中。由于日志范围 46-63 未包含在任何备份映像中,所以需要使它们可用于前滚操作。 db2 rollforward db mydb to end of logs overflow log path (/logs)
db2 rollforward db mydb stop
此时,该数据库是可连接的并且所有表空间都处于 NORMAL 状态。
示例 12
db2 restore db mydb rebuild with all tablespaces in database
taken at BK3 redirect without prompting
db2 set tablespace containers for 3 using (file '/newusersp2' 10000)
db2 set tablespace containers for 4 using (file '/newusersp3' 15000)
db2 restore db mydb continue
db2 rollforward db mydb to end of logs
db2 rollforward db mydb stop
此时,该数据库是可连接的并且所有表空间都处于 NORMAL 状态。
示例 13
db2 restore db mydb rebuild with all tablespaces in database
taken at BK31 without prompting
db2 restore db mydb rebuild with tablespaces in database taken at
BK42 without prompting
db2 restore db mydb rebuild with all tablespaces in database
taken at BK43 without prompting
db2 rollforward db mydb to end of logs
db2 rollforward db mydb stop
此时,该数据库在所有数据库分区上都是可连接的,并且所有表空间都处于 NORMAL 状态。
示例 14
db2 restore db mydb rebuild with all tablespaces in database
taken at BK31 without prompting
db2 restore db mydb rebuild with all tablespaces in image taken at
BK22 without prompting
db2 restore db mydb rebuild with all tablespaces in image taken at
BK33 without prompting
注意:此命令省略了 USERSP1,它是完成重建操作所必需的。 db2 rollforward db mydb to end of logs
db2 rollforward db mydb stop
前滚成功,并且该数据库在所有数据库分区上都是可连接的。所有表空间都处于
NORMAL 状态,但 USERSP3 和 USERSP1 除外(USERSP3 在它所在的所有数据库分区上处于 RESTORE PENDING 状态,而 USERSP1 在数据库分区 3 上处于 RESTORE PENDING 状态)。 db2 restore db mydb tablespace taken at BK23 without prompting
db2 rollforward db mydb to end of logs on dbpartitionnum (3) and stop
此时,可以访问数据库分区 3 上 USERSP1 中的数据,因为 USERSP1 处于 NORMAL 状态。
只有该数据库的一个备份 BK1:
例 15
下列命令演示了如何对不可恢复数据库使用重建。
db2 restore db mydb rebuild with tablespace (SYSCATSPACE, USERSP1)
taken at BK1 without prompting
复原之后,该数据库是可连接的。如果发出 LIST TABLESPACES 命令或使用 MON_GET_TABLESPACE 表函数,您将看到 SYSCATSPACE 和 USERSP1 处于 NORMAL 状态,而 USERSP2 和 USERSP3 处于 DELETE_PENDING/OFFLINE 状态。现在就可以使用处于 NORMAL 状态的那两个表空间了。
如果想要备份数据库,那么首先需要使用 DROP TABLESPACE 命令删除 USERSP2 和 USERSP3,否则备份将失败。
要在以后复原 USERSP2 和 USERSP3,需要从 BK1 重新发出数据库复原操作。