使用重定向恢复DB2在线备份后执行前滚操作失败
问题:DB2恢复后执行Rollforward报错SQL0752N,Restore进程卡住
我执行的恢复命令
create db MYDBNAME restore db MYDBNAME from D:\ on C: dbpath on C: NEWLOGPATH 'C:\DB2\NODE0000\MYDBNAME\LOGS\' REDIRECT SET TABLESPACE CONTAINERS FOR 9 USING (PATH 'TBSP32K0000') SET TABLESPACE CONTAINERS FOR 11 USING (PATH 'TBSP32K0001') SET TABLESPACE CONTAINERS FOR 13 USING (PATH 'TBSP32K0002') SET STOGROUP PATHS FOR IBMSTOGROUP ON 'C:\' restore db MYDBNAME continue rollforward db MYDBNAME to end of logs and complete
备份文件信息
MEDIA HEADER REACHED: ===================== Server Database Name -- MYDBNAME Server Database Alias -- MYDBNAME Client Database Alias -- MYDBNAME Timestamp -- 20180430230002 Database Partition Number -- 0 Instance -- CTGINST2 Database Configuration Type -- 0 (Non-shared data) Sequence Number -- 1 Database Member ID -- 0 Release ID -- 0x1000 (DB2 v10.5) AL version -- V:10 R:5 M:0 F:9 I:0 SB:0 Database Seed -- 0x4F18E7E4 DB Comment's Codepage (Volume) -- 0 DB Comment (Volume) -- DB Comment's Codepage (System) -- 0 DB Comment (System) -- Authentication Value -- 255 (Not specified) Backup Mode -- 1 (Online) Includes Logs -- 1 (Yes) Compression -- 1 (Compressed) Backup Type -- 0 (Database-level) Backup Granularity -- 0 (Non-incremental) Merged Backup Image -- 0 (No) Status Flags -- 0x60 LOGARCHMETH1 is set LOGARCHMETH2 is set System Catalogs in this image -- 1 (Yes) Catalog Partition Number -- 0 DB Codeset -- UTF-8 DB Territory -- GB LogID -- 1323886033 LogPath -- X:\DBLOGS\NODE0000\LOGSTREAM0000\ Backup Buffer Size -- 4194304 (1024 4K pages) Number of Sessions -- 1 Platform -- 0x17 (NT-64)
遇到的问题
- 执行最终的
rollforward命令时触发错误:
SQL0752N Connecting to a database is not permitted within a logical unit of work when the CONNECT type 1 setting is in use. SQLSTATE=0A001
- 查看
dbdiag.log得到:
Rollforward failed to connect to database. sqlcode -752.
- 后续查询结果:
- 执行
list tablespaces show details,所有表空间状态为restore pending, storage may be defined - 执行
list utilities show detail,发现restore工具一直处于Executing状态,没有进展
环境说明
- DB2版本:10.5(运行在Windows Server 2008 R2)
- 备份文件位置:D:\根目录
- DB2安装路径:C:\DB2\
解决思路和步骤
我之前处理过类似的恢复卡住+Rollforward报错的情况,咱们一步步来搞定:
1. 先终止卡住的Restore进程
首先得把一直卡在Executing状态的restore进程停下来,不然后续操作都没法正常进行:
- 先查找到当前运行的restore工具ID:
list utilities show detail - 用工具ID终止进程:
terminate utility <你的restore工具ID> - 如果上面的命令没效果,就强制断开所有应用并重启DB2实例:
force application all db2stop force db2start
2. 检查并准备好所有必要的路径
从你的恢复命令看,指定了几个表空间容器路径和新日志路径,这些路径必须提前创建好,而且DB2实例用户要有读写权限:
- 手动创建以下路径:
C:\TBSP32K0000C:\TBSP32K0001C:\TBSP32K0002C:\DB2\NODE0000\MYDBNAME\LOGS\
- 确认这些路径的权限,给DB2实例用户(比如CTGINST2)分配完全控制权限
3. 重新执行恢复流程,确保每一步完成后再走下一步
这次要放慢节奏,每一步都确认完成后再执行下一个命令:
- 先删除之前残留的数据库(如果存在):
drop db MYDBNAME - 创建空数据库:
create db MYDBNAME - 执行带REDIRECT的restore命令,这一步会暂停等待容器配置:
restore db MYDBNAME from D:\ on C: dbpath on C: NEWLOGPATH 'C:\DB2\NODE0000\MYDBNAME\LOGS\' REDIRECT - 配置表空间容器和存储组:
SET TABLESPACE CONTAINERS FOR 9 USING (PATH 'C:\TBSP32K0000') SET TABLESPACE CONTAINERS FOR 11 USING (PATH 'C:\TBSP32K0001') SET TABLESPACE CONTAINERS FOR 13 USING (PATH 'C:\TBSP32K0002') SET STOGROUP PATHS FOR IBMSTOGROUP ON 'C:\' - 继续执行restore,这一步要等它完全完成(用
list utilities show detail确认状态变成Completed):restore db MYDBNAME continue - 最后执行rollforward,最好新开一个DB2命令行窗口执行,避免同一个会话的LUW冲突:
rollforward db MYDBNAME to end of logs and complete
4. 关于SQL0752N错误的补充说明
这个错误本质是因为在同一个逻辑工作单元(LUW)里,使用CONNECT Type 1时不允许重复连接数据库。你之前遇到这个问题,大概率是因为restore还没完成就急着执行rollforward,或者在同一个会话里连续执行这些命令导致LUW冲突。所以一定要等restore彻底完成,最好换个新会话执行rollforward,就能避免这个问题。
内容的提问来源于stack exchange,提问作者falter
相关产品推荐
相关产品推荐

