Db2 正在还原数据库不是所有行都已还原

Db2 正在还原数据库不是所有行都已还原,db2,restore,db2-luw,roll-forward,Db2,Restore,Db2 Luw,Roll Forward,我在数据库HELLO中有一个表EMPLOYEE.EMPLOYEE,其中包含3条记录,如下所示: EMP_NO BIRTH_DATE FIRST_NAME LAST_NAME GENDER HIRE_DATE BANK_ACCOUNT_NUMBER PHONE_NUMBER ------- ---------- ------------------ -------------------- ------ ---------- -------------

我在数据库
HELLO
中有一个表
EMPLOYEE.EMPLOYEE
,其中包含3条记录,如下所示:

EMP_NO  BIRTH_DATE FIRST_NAME         LAST_NAME            GENDER HIRE_DATE  BANK_ACCOUNT_NUMBER PHONE_NUMBER  
------- ---------- ------------------ -------------------- ------ ---------- ------------------- --------------
     1. 06/05/1998 A                  B                     M     01/02/2019 026201521420        +91X 
     2. 10/14/1997 C                  D                     M     01/07/2019 034212323454        +91Y 
     3. 05/27/1997 E                  F                     F     01/14/2019 92329323123         +91Z 
然后,我首先使用以下命令进行脱机备份

mkdir offlinebackup
db2 terminate
db2 deactivate database HELLO
db2 backup database HELLO to ~/offlinebackup/
db2 update database configuration for HELLO using LOGARCHMETH1 'DISK:/database/config/db2inst1/onlinebackup'
db2 backup database HELLO online to /database/config/db2inst1/onlinebackup compress include logs
在此之后,我将获得以下输出:

Backup successful. The timestamp for this backup image is : 20190128115210
现在,我使用以下命令进行在线备份

mkdir offlinebackup
db2 terminate
db2 deactivate database HELLO
db2 backup database HELLO to ~/offlinebackup/
db2 update database configuration for HELLO using LOGARCHMETH1 'DISK:/database/config/db2inst1/onlinebackup'
db2 backup database HELLO online to /database/config/db2inst1/onlinebackup compress include logs
在此之后,我得到如下输出:

Backup successful. The timestamp for this backup image is : 20190128115616
现在我回到db2并运行连接到HELLO的
connecttohello
,它将我连接到我的数据库。当我检查
EMPLOYEE.EMPLOYEE
表中的行时,我仍然得到所有3行

现在我删除EMP_NO 3的行。成功地将其删除。然后从db2终端运行
quit

然后,我使用此命令从脱机备份运行还原:

db2 restore db HELLO from ~/offlinebackup/ replace existing
它显示
db2000i恢复数据库命令已成功完成

现在我尝试连接到HELLO,它说,
SQL1117N由于前滚挂起,无法连接或激活数据库“HELLO”。SQLSTATE=57019

我运行db2前滚db HELLO To end of logs and stop运行到它

然后我连接到HELLO并尝试找出行,我只得到2行,而不是备份中的3行

EMP_NO  BIRTH_DATE FIRST_NAME         LAST_NAME             GENDER HIRE_DATE  BANK_ACCOUNT_NUMBER PHONE_NUMBER  
------- ---------- ------------------ --------------------- ------ ---------- ------------------- --------------
     1. 06/05/1998 A                  B                     M      01/02/2019 026201521420        +91X 
     2. 10/14/1997 C                  D                     M      01/07/2019 034212323454        +91Y

第三条记录不可见,它出现在备份中。有人能找出为什么我无法从备份中还原第三条记录吗?您运行的前滚命令:

db2 rollforward db HELLO to end of logs and stop
重播所有可用日志,包括与
delete
语句对应的记录

如果要将数据库恢复到备份后的状态,可以运行

db2 rollforward db HELLO to end of backup and stop
或者,由于您是从脱机备份中恢复,所以完全不需要前滚,您可以使用

db2 rollforward db HELLO stop
或者,完全跳过前滚(当然,仅适用于脱机备份):


重做备份并前滚到删除该行之前的某个时间。前滚将重新执行删除操作。如果从具有循环日志记录的数据库中获取的备份还原到可恢复数据库中,则无法获取处于
前滚挂起状态的数据库。这样还原的数据库必须处于备份挂起状态。您似乎是从切换到存档日志记录模式后的联机存档还原的。请使用命令“前滚db HELLO to end of backup”而不是“前滚db HELLO to end of logs”,谢谢。这起作用了。第一个命令用于联机备份还原,两个命令用于脱机备份还原。