恢复数据库并非所有行都已恢复

Restoring database not all rows restored

我在数据库 HELLO 中有一个 table 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/

之后我得到这个输出:

Backup successful. The timestamp for this backup image is : 20190128115210

现在我使用以下命令进行在线备份

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 并 运行 CONNECT TO HELLO 将我连接到我的数据库。当我检查 EMPLOYEE.EMPLOYEE table 中的行时,我仍然得到所有 3 行。

现在我删除带有 EMP_NO 3 的行。这已成功删除。然后我从 db2 终端 运行 quit

然后我使用这个命令运行从我的离线备份恢复:

db2 restore db HELLO from ~/offlinebackup/ replace existing

它说 DB20000I The RESTORE DATABASE command completed successfully

现在我尝试连接到 HELLO,它说 SQL1117N A connection to or activation of database "HELLO" cannot be made because of ROLL-FORWARD PENDING. SQLSTATE=57019

我运行db2 rollforward 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

或者,完全跳过前滚(当然只适用于脱机备份):

db2 restore db HELLO from ~/offlinebackup/ replace existing without rolling forward