程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 實現DB2備份恢復的步驟與操作中的問題

實現DB2備份恢復的步驟與操作中的問題

編輯:DB2教程

下面的文章主要介紹的是DB2備份恢復在實際操作中的有感有問,如果你對DB2備份恢復心存好奇的話,以下的文章將會揭開它的神秘面紗,以下就是具體內容的描述,希望在你今後的學習中會有所幫助。

練手DB2備份與恢復,盲人摸象一般搗騰了好幾天,終於成功實現聯機DB2備份恢復了。

先講下我怎麼做的

創建數據庫testdb

  1. db2 create database testdb using codeset UTF-8 territory US 

開啟聯機備份

  1. db2 update db cfg for testdb using userexit on logretain on trackmod on 

創建備份目錄

  1. mkdir /backup/db2inst1  
  2. chown db2inst1:db2grp1 /backup/db2inst1 

重啟db2實例,進行一次冷備,時間戳為20100224111110

  1. db2stop force  
  2. db2start  
  3. db2 backup db testdb to /backup/db2inst1 

創建數據庫表

  1. create table T(  
  2. a int,  
  3. b int,  
  4. c int  

在T表中插入100條數據0,0,0

進行一次聯機備份,時間戳為20100224113029

  1. db2 backup db testdb online to /backup/db2inst1 

查看首個活動日志,為S00000001.LOG

  1. db2 get db cfg for testdb 

在T表中插入100條數據1,1,1

進行一次聯機備份,時間戳為20100224113530

  1. db2 backup db testdb online to /backup/db2inst1 

查看首個活動日志,為S0000002.LOG

  1. db2 get db cfg for testdb 

在T表中刪除100條0,0,0

將活動日志目錄SQLOGDIR下的所有歸檔日志和活動日志都拷到/temp目錄下

將testdb整個刪除

  1. db2 drop db testdb 

DB2備份恢復到最後一個備份點20100224113530

  1. db2 restore database testdb from /backup/db2inst1 taken at 20100224113530 

將所有歸檔日志和活動日志都拷到SQLOGDIR下,並更改用戶和用戶組

  1. chown db2inst1:db2grp1 * 

日志回滾

因為備份的時間戳日期和歸檔日志的時間似乎有點不同,我現在的做法只能是先執行下面這句,得到一個時間,然後再rollforward到那個時間才能成功回滾

  1. db2 rollforward db testdb stop 

執行上面語句以後提示以下內容

  1. SQL1276N Database "TESTDB" cannot be brought out of rollforward pending state   
  2. until roll-forward has passed a point in time greater than or equal to   
  3. "2010-02-24-03.12.34.000000 UTC", because node "0" contains information later  

than the specified time.

根據這裡的提示信息,得到時間2010-02-24-03.12.34.000000,再rollforward到這個時間

  1. db2 rollforward db testdb to 2010-02-24-03.12.34.000000 and stop 

不知道正常情況下高手們是怎麼知道回滾到什麼時間點的?特別請教一下。謝謝!

在做回滾的時候我還發現了一個情況:根據活動日志可以DB2備份恢復到故障點到最後一次備份點之間的數據。

在rollforward的時候將時間點往後多寫一點

  1. $ db2 rollforward db testdb to 2010-02-24-03.15.00 and stop  
  2. 然後他會提示SQL4970N Roll-forward recovery on database "TESTDB" cannot reach the   
  3. specified stop point (end-of-log or point-in-time) on database partition(s)   
  4. "0". Roll-forward recovery processing has halted on log file "S0000005.LOG". 

在這個時候數據庫依舊是pending狀態,再執行一次db2 rollforward db testdb stop就可以DB2備份恢復到刪除數據庫之前的狀態了

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved