Восстановление базы данных, не все строки восстановлены - PullRequest
0 голосов
/ 28 января 2019

У меня есть таблица EMPLOYEE.EMPLOYEE внутри базы данных HELLO, которая содержит 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, я все равно получаю все свои 3 строки.

Теперь я удаляю строку с помощью EMP_NO 3. Это успешно удаляется.Затем я запускаю quit из терминала db2

Затем я использую эту команду для запуска восстановления из моей автономной резервной копии:

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

Третья запись не видна, которая присутствовала в резервной копии.Может кто-нибудь выяснить, почему я не могу восстановить третью запись из резервной копии

1 Ответ

0 голосов
/ 28 января 2019

Команда прокрутки, которую вы выполнили:

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
...