DB2:无法从备份中恢复



我正在使用命令

db2 restore db S18 from /users/intadm/s18backup/ taken at 20110913113341 on /users/db2inst1/ dbpath on /users/db2inst1/ redirect without rolling forward
to restore database from backup file located in /users/intadm/s18backup/ .

命令执行给出如下输出:

SQL1277W  A redirected restore operation is being performed.  Table space
configuration can now be viewed and table spaces that do not use automatic
storage can have their containers reconfigured.
DB20000I  The RESTORE DATABASE command completed successfully.

当我试图连接到恢复的DB(通过执行'db2 connect to S18'),我得到这个消息:

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

当我试图连接到db与数据库查看器,如SQuireL,错误如下:

DB2 SQL Error: SQLCODE=-1119, SQLSTATE=57019, SQLERRMC=S18, DRIVER=3.57.82

表示"在恢复函数期间发生错误或恢复仍在进行中"(来自IBM DB2手册)

如何解决这个问题并连接到恢复的数据库?UPD:我在备份文件上执行了db2ckbkp,它没有发现备份文件本身的任何问题。

without rolling forward只能在从离线备份恢复时使用。你的备份离线了吗?如果没有,则需要使用前滚。

当您执行重定向恢复时,您是在告诉DB2您希望更改正在恢复的数据库中数据文件的位置。

上面显示的第一步将执行得非常快。

通常,在执行此语句之后,您将有一个或多个SET TABLESPACE CONTAINERS来设置每个数据文件的新位置。发出这些语句并不是强制性的,但是如果您不更改任何内容,那么在RESTORE DATABASE命令中指定redirect选项是没有意义的。

然后,您将发出RESTORE DATABASE S18 COMPLETE命令,该命令将实际从备份映像中读取数据,并将其写入数据文件。

如果你没有执行RESTORE DATABASE S18 COMPLETE,那么你的恢复过程是不完整的,这是有意义的,你不能连接到数据库

我做了什么,什么起作用了:

执行

:

db2 restore db S18 from /users/intadm/s18backup/ taken at 20110913113341 on /<path with sufficient disk space> dbpath on /<path with sufficient disk space>

我之前得到了一些警告,一些表空间没有移动。当我指定dbpath到有足够磁盘空间的分区时,警告消失了。

之后,因为我有一个在线备份,我发出:

db2 rollforward db S18 to end of logs and complete

就是这样!现在我可以连接了

最新更新