我正在使用命令
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.
当我尝试连接到已恢复的数据库时(通过执行'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
当我尝试使用像SQuireL这样的db viewer连接到db时,错误就像:
DB2 SQL Error: SQLCODE=-1119, SQLSTATE=57019, SQLERRMC=S18, DRIVER=3.57.82
这意味着'在还原功能期间发生错误或还原仍在进行中'(来自IBM DB2手册)
如何解决此问题并连接到已恢复的数据库? UPD:我在备份文件上执行了db2ckbkp,并没有发现备份文件本身有任何问题。
答案 0 :(得分:0)
without rolling forward
只能在从脱机备份还原时使用。您的备份是否已脱机?如果没有,你需要使用前滚。
答案 1 :(得分:0)
执行重定向还原时,您告诉DB2您要更改要还原的数据库中数据文件的位置。
您在上面显示的第一步将很快执行。
通常,执行此语句后,您将有一个或多个SET TABLESPACE CONTAINERS
来设置每个数据文件的新位置。发布这些语句并不是强制性的,但如果您没有更改任何内容,则在redirect
命令中指定RESTORE DATABASE
选项是没有意义的。
然后,您将发出RESTORE DATABASE S18 COMPLETE
命令,该命令实际上将从备份映像中读取数据,并将其写入数据文件。
如果您没有执行RESTORE DATABASE S18 COMPLETE
,那么您的恢复过程就不完整了,您无法连接到数据库。
答案 2 :(得分:0)
我做了什么以及做了什么:
执行时:
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
就是这样!现在我能够连接。