Restore baz DB2 z backupu OFFLINE

Tym razem poznamy kilka informacji w jaki sposób odzyskac dane z wykonanych kopii zapasowych.
Podłączamy się do bazy

[db2inst1@localhost ~]$ db2 connect to TESTOWA

  Database Connection Information

 Database server        = DB2/LINUXX8664 9.7.6
 SQL authorization ID   = DB2INST1
 Local database alias   = TESTOWA

Żeby było co odzyskiwać usuwamy swoją tabelę MyTable

[db2inst1@localhost ~]$ db2 drop table MyTable

DB20000I  The SQL command completed successfully.

Próbujemy wyświetlić jej zawartość

[db2inst1@localhost ~]$ db2 "select * from MyTable"

SQL0204N  "DB2INST1.MYTABLE" is an undefined name.  SQLSTATE=42704

Tabela nie istnieje. Wyświetlamy pliki naszych kopii zapasowych.
[db2inst1@localhost ~]$ ls -la

...
-rw-------.  1 db2inst1 db2iadm1 111534080 Feb 22 14:24 TESTOWA.0.db2inst1.NODE0000.CATN0000.20170222142454.001
-rw-------.  1 db2inst1 db2iadm1 104787968 Feb 22 14:25 TESTOWA.0.db2inst1.NODE0000.CATN0000.20170222142504.001 

W ich nazwach jest zawarty ciąg cyfr odpowiadający dacie i godzinie wykonania backupu.

[db2inst1@localhost BackupBaz]$ db2 deactivate database testowa

SQL1493N  The application is already connected to an active database.

[db2inst1@localhost BackupBaz]$ db2 terminate

DB20000I  The TERMINATE command completed successfully.

[db2inst1@localhost BackupBaz]$ db2 deactivate database testowa

SQL1496W  Deactivate database is successful, but the database was not
activated.

Postaramy się teraz ją odtworzyć z backupu inkrementalnego. Uwaga! Nie musimy tworzyć tablespace i pustej tabeli żeby się odtworzyła. Jeśli coś jej będzie brakowało zostanie utworzone. Jedynie co musi istnieć to foldery gdzie ma być odtworzona.

[db2inst1@localhost BackupBaz]$ db2 restore db TESTOWA incremental automatic taken at 20170222133649

SQL2539W  Warning!  Restoring to an existing database that is the same as the
backup image database.  The database files will be deleted.
Do you want to continue ? (y/n) y
DB20000I  The RESTORE DATABASE command completed successfully.

[db2inst1@localhost BackupBaz]$ db2 "select * from MyTable"

NAME       LASTNAME             PHONE
---------- -------------------- ---------
Jan        Kowalski             762856483
Robert     Badura               853964725
Maria      Nowak                752964715

  3 record(s) selected.

[db2inst1@localhost BackupBaz]$ db2 deactivate database testowa

SQL1496W  Deactivate database is successful, but the database was not
activated.

Odzyskamy bazę teraz nie z ostatniego backupu, ale w przedostatniego

[db2inst1@localhost BackupBaz]$ db2 restore db TESTOWA incremental automatic taken at 20170222132853

SQL2539W  Warning!  Restoring to an existing database that is the same as the
backup image database.  The database files will be deleted.
Do you want to continue ? (y/n) y
DB20000I  The RESTORE DATABASE command completed successfully.

[db2inst1@localhost BackupBaz]$ db2 connect to testowa

   Database Connection Information

 Database server        = DB2/LINUXX8664 9.7.6
 SQL authorization ID   = DB2INST1
 Local database alias   = TESTOWA

[db2inst1@localhost BackupBaz]$ db2 "select * from MyTable"

NAME       LASTNAME             PHONE
---------- -------------------- ---------
Jan        Kowalski             762856483

  1 record(s) selected.

Jednak doszliśmy do wniosku że potrzebna nam jest baza z ostatniego backupu DELTA

[db2inst1@localhost BackupBaz]$ db2 restore db TESTOWA incremental automatic taken at 20170222133649 WITHOUT PROMPTING

SQL2539W  Warning!  Restoring to an existing database that is the same as the
backup image database.  The database files will be deleted.
Do you want to continue ? (y/n) y
DB20000I  The RESTORE DATABASE command completed successfully.

[db2inst1@localhost BackupBaz]$ db2 "select * from MyTable"

NAME       LASTNAME             PHONE
---------- -------------------- ---------
Jan        Kowalski             762856483
Robert     Badura               853964725
Maria      Nowak                752964715

  3 record(s) selected.

Jeszcze raz usuwamy tabelę MyTable i spróbujemy ją odzyskać z pełnego backupu

Możemy też to uruchomić poleceniem :
[db2inst1@localhost BackupBaz]$ db2 RESTORE DATABASE TESTOWA TAKEN AT 20170222132849 WITHOUT ROLLING FORWARD WITHOUT PROMPTING

SQL2540W  Restore is successful, however a warning "2539" was encountered
during Database Restore while processing in No Interrupt mode.

Baza się odtworzyła.

[db2inst1@localhost BackupBaz]$ db2 "select * from MyTable"

NAME       LASTNAME             PHONE
---------- -------------------- ---------
Jan        Kowalski             762856483

  1 record(s) selected.

Dociągamy bazę z najnowszego backupu:

[db2inst1@localhost BackupBaz]$ db2 restore db TESTOWA incremental automatic taken at 20170222133649 WITHOUT PROMPTING

SQL2540W  Restore is successful, however a warning "2539" was encountered
during Database Restore while processing in No Interrupt mode.

Jeśli po odtworzeniu i po restarcie bazy przy próbie podłączenia się do bazy podczas dalszego korzystania z bazy otrzymamy komunikat o statusie bazy :

SQL1116N  A connection to or activation of database "TESTOWA" cannot be made
because of BACKUP PENDING.  SQLSTATE=57019

po wykonaniu restore bazy należy wykonać pełny backup bazy. Inaczej baza zostanie w trybie BACKUP PENDING.

[db2inst1@localhost ~]$ db2 backup db TESTOWA

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

Podłączamy się do bazy
[db2inst1@localhost ~]$ db2 connect to TESTOWA

   Database Connection Information

 Database server        = DB2/LINUXX8664 9.7.6
 SQL authorization ID   = DB2INST1
 Local database alias   = TESTOWA

I sprawdzamy czy baza razem z naszą tabelą MyTable się odtworzyła

[db2inst1@localhost ~]$ db2 "select * from MyTable"

NAME       LASTNAME             PHONE
---------- -------------------- ---------
Jan        Kowalski             762856483
Robert     Badura               853964725
Maria      Nowak                752964715

  3 record(s) selected.

Baza jest odzyskana, a tabela zawiera dane sprzed „awarii” 🙂

Ten wpis został opublikowany w kategorii DB2 i oznaczony tagami , . Dodaj zakładkę do bezpośredniego odnośnika.

Dodaj komentarz